วิธีปฏิบัติที่ดีที่สุดในการแก้ไขลิงค์บนสุดของ Magento


22

สมมติว่าเราต้องการเพิ่มไอคอนรถเข็นช็อปปิ้งก่อนลิงก์ "รถเข็นของฉัน" ในลิงค์ด้านบนของ Magento (ดูลิงค์ด้านบนด้านล่าง)

ป้อนคำอธิบายรูปภาพที่นี่

วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?

  1. ทำอะไรกับ toplinks.php
  2. ทำอะไรกับ links.phtml
  3. ไฟล์ xml หรือไม่
  4. ตัวเลือกอื่น ๆ ?

ฉันเข้าใจว่าสิ่งนี้สามารถทำได้ด้วย CSS แต่เมื่อความต้องการในการปรับแต่งของฉันเพิ่มขึ้นฉันต้องการทราบว่าวิธีนี้สามารถทำได้โดยไม่ต้องใช้ CSS ดังนั้นฉันจึงสามารถปรับแต่งสิ่งที่ยากขึ้นได้

คำตอบ:


12

ไม่ว่าในกรณีใด ๆ อย่าแก้ไขไฟล์เทมเพลต ( links.phtml) สิ่งนี้ทำหน้าที่เป็นเทมเพลตทั่วไปสำหรับรายการลิงก์ทั้งหมด ตัวอย่างเช่นจะใช้สำหรับลิงก์ในส่วนท้ายด้วย
ด้วยtoplinks.phpคุณสามารถทำสิ่งที่คุณต้องการเพราะเลิกใช้ตั้งแต่ CE v1.4.0.1
ฉันแนะนำให้ใช้ไฟล์ xml ที่เพิ่มลิงค์ไปยังคอนเทนเนอร์ชั้นนำเพื่อให้ได้สิ่งที่คุณต้องการ วิธีการที่เรียกว่าเมื่อมีการเพิ่มการเชื่อมโยงใหม่สนับสนุนพารามิเตอร์บางอย่างที่ช่วยให้คุณสามารถเพิ่มชั้นเรียนและคุณลักษณะอื่น ๆ บนและแท็กในการเชื่อมโยงและข้อความบางส่วนก่อนที่จะเชื่อมโยงและหลังจากการเชื่อมโยง
addLinklia

public function addLink($label, $url='', $title='', $prepare=false, $urlParams=array(),
        $position=null, $liParams=null, $aParams=null, $beforeText='', $afterText='')
    { ... }

หากคุณต้องการที่จะเพิ่มไอคอนที่เมนูบัญชีของฉันคุณสามารถตั้งค่า$beforeTextการ<span class="icon"></span>และเพิ่มรูปแบบบางอย่างเกี่ยวกับระดับไอคอน
สำหรับลิงก์รถเข็นและเช็คเอาต์นั้นมีเล่ห์เหลี่ยมเล็กน้อยเนื่องจากมีการเพิ่มผ่านวัตถุบล็อกไม่ได้โดยตรงจากไฟล์เลย์เอาต์
ถ้าคุณต้องการบางสิ่งบางอย่างที่แตกต่างกันสำหรับรถเข็นหรือเช็คเอาต์ Lins ทั้งหมดที่คุณต้องทำคือการแทนที่วิธีการหรือMage_Checkout_Block_Links::addCartLink() Mage_Checkout_Block_Links::addCheckoutLink()2 เหล่านี้เรียกสิ่งเดียวกันaddLink()และคุณสามารถส่งพารามิเตอร์ที่แตกต่างกันไปได้


1
นี่คือคำอธิบายที่ฉันต้องการ ฉันมีการเรียนรู้มากมายต่อหน้าฉัน แต่ตอนนี้ฉันมีความคิดว่าจะเริ่มจากตรงไหน ฉันจะพยายามเพิ่มไอคอนของฉัน (จาก bootstrap) ด้วยข้อความต่อไปนี้ $ beforeText = '<i class = "icon-shopping-cart"> </i>' - ขอบคุณ!
Raphael Rafatpanah

ไฟล์ XML ใดที่ฉันจะใช้สำหรับสิ่งนี้
Raphael Rafatpanah

ฉันอธิบายว่าสำหรับลิงก์รถเข็นและเช็คเอาต์คุณไม่สามารถทำได้จากไฟล์เลย์เอาต์ คุณต้องแทนที่วิธีการMage_Checkout_Block_Links::addCartLink()
Marius

1
ตกลง. ฉันสมมติว่าจะแทนที่วิธีที่ฉันต้องการเพิ่มไฟล์ลงในไฟล์ธีมที่กำหนดเองของฉันและเรียกใช้เมธอดที่นั่นซึ่งจะแทนที่อินสแตนซ์ก่อนหน้าของมัน คุณช่วยชี้ฉันในทิศทางที่ถูกต้องได้ไหมตัวอย่างเช่นไฟล์ใดที่จะมีเมธอด Mage_Checkout_Block_Links มันคือ links.php หรือไม่
Raphael Rafatpanah

ถ้าคุณไปเส้นทาง XML (ซึ่งคุณแน่นอนควร) จะทราบว่าเพื่อให้การใช้งาน<span class="icon"></span>เป็น beforeText <![CDATA[<span class="icon"></span>]]>คุณต้องใส่มันชอบดังนั้น ตัวแยกวิเคราะห์ XML จะรับบรรทัดใหม่ด้วยดังนั้นคุณต้องวางไว้หลังแท็กเปิด:<beforeText><![CDATA[<span class="icon"></span>]]></beforeText>
jmk

9

ในกรณีที่คุณต้องการใช้เทมเพลตที่กำหนดเองเฉพาะกับลิงก์ยอดนิยมคุณสามารถทำได้เช่นนี้ใน local.xml ของธีมของคุณ:

<default>
    <reference name="top.links">

        <action method="setTemplate">
            <template>page/template/my_links.phtml</template>
        </action>

    </reference>
<default>

จากนั้นคัดลอกหน้า / แม่แบบ / links.phtmlและเปลี่ยนชื่อเป็นหน้า / แม่แบบ / my_links.phtmlและทำสิ่งที่คุณต้องการภายในไฟล์เทมเพลตใหม่นั้น

หากต้องการเพิ่มลิงก์ที่กำหนดเองไปยังลิงก์ยอดนิยมผ่าน local.xml:

<reference name="top.links">
    <action method="addLink" translate="label title">
        <label>My Link</label>
        <url>path/to/page</url>
        <title>My link tooltip</title>
        <prepare>true</prepare>
        <urlParams/>
        <position>150</position>
        <liParams>id="my-custom-id"</liParams>
    </action>
</reference>

ดูหน้านี้ด้วย: http://www.classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way


เมื่อใช้วิธีนี้ฉันจะสามารถเพิ่ม html ระหว่างแต่ละลิงก์ได้หรือไม่
Raphael Rafatpanah

@RaphaelRafatpanah ใช่ในlinks.phtml<?php foreach($_links as $_link): ?>มีความเป็นห่วง คุณสามารถเพิ่ม HTML ใด ๆ ภายในวงนั้น
zitix

แต่จะเพิ่มลงในแต่ละลิงก์ใช่ไหม ฉันต้องการเพิ่ม html ที่กำหนดเองระหว่างแต่ละลิงก์ นอกจากนี้ฉันเชื่อว่า foreach loop จะถูกใช้สำหรับลิงก์ส่วนท้ายและลิงก์ส่วนหัวดังนั้นหากฉันเพิ่ม html ระหว่างลิงก์พวกเขาจะถูกนำไปใช้กับลิงก์ส่วนท้ายด้วย
Raphael Rafatpanah

1
นั่นคือเคล็ดลับ: หลังจากที่คุณสร้างหน้า / แม่แบบ / my_links.phtml (ซึ่งเป็นสำเนาของเดิมlinks.phtml ) และหลังจากที่คุณเพิ่มโค้ดที่ผมโพสต์ของคุณlocal.xmlแม่แบบที่จะถูกใช้เพียงเพื่อแสดงลิงก์ยอดนิยม ไม่ใช่ลิงก์ส่วนท้ายหรือลิงก์อื่น ๆ
zitix


0

โปรดหาเส้นทางนี้เพื่อเปลี่ยนลิงค์ยอดนิยม:

/app/design/frontend/base/default/layout/customer.xml  

และค้นหา: เข้าสู่ระบบ (ในกรณีของฉัน)

ตอนนี้เปลี่ยนชื่อและฉลากด้วยข้อความที่คุณต้องการ


คุณไม่ควรแก้ไขไฟล์หลัก!
Black

-1

คุณต้องแก้ไขไฟล์ 2 ไฟล์ต่อไปนี้

app/design/frontend/default/default/layout/checkout.xml

app/design/frontend/default/default/layout/customer.xml

ในไฟล์เหล่านี้ลิงค์จะถูกเพิ่มเข้าname="top.links"มา เพียงแสดงความคิดเห็นออก


2
ยินดีต้อนรับสู่ Magento SE ในขณะที่คำตอบนี้ใช้ได้ผลคำถามก็คือคำถามเกี่ยวกับแนวปฏิบัติที่ดีที่สุดและการแก้ไขไฟล์หลักคืออะไรนอกจากแนวปฏิบัติที่ดีที่สุดใน Magento
เฟเบียน Schmengler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.