Cara Praktik Terbaik untuk Mengedit Top-Link Magento


22

Katakanlah kita ingin menambahkan ikon keranjang belanja tepat sebelum tautan "Keranjangku" di tautan teratas Magento (lihat tautan teratas di bawah).

masukkan deskripsi gambar di sini

Apa cara terbaik untuk melakukan ini?

  1. Lakukan sesuatu untuk toplinks.php?
  2. Lakukan sesuatu untuk links.phtml?
  3. File xml?
  4. Ada opsi lain?

Saya mengerti bahwa ini dapat dilakukan dengan CSS, tetapi seiring dengan meningkatnya kebutuhan saya akan kustomisasi, saya ingin tahu bagaimana ini dapat dilakukan tanpa CSS sehingga saya dapat menyesuaikan hal-hal yang lebih sulit.

Jawaban:


12

Dalam hal apa pun jangan mengedit file templat ( links.phtml). Ini berfungsi sebagai templat umum untuk semua daftar tautan. Misalnya digunakan untuk tautan di footer juga.
Dengan toplinks.phpAnda dapat melakukan apa pun yang Anda inginkan karena sudah usang sejak CE v1.4.0.1.
Saya sarankan menggunakan file xml yang menambahkan tautan ke wadah atas untuk mencapai apa yang Anda butuhkan.
The addLinkmetode yang disebut saat menambahkan link baru mendukung beberapa parameter yang memungkinkan Anda untuk menambahkan kelas dan atribut lainnya pada lidan atag di link dan beberapa teks sebelum link dan setelah link.

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

Jika Anda ingin menambahkan ikon ke menu akun saya Anda dapat mengatur $beforeTextuntuk <span class="icon"></span>dan menambahkan beberapa gaya pada kelas ikon.
Untuk tautan keranjang dan checkout, ini agak rumit karena ditambahkan melalui objek blok tidak langsung dari file tata letak.
Jika Anda memerlukan sesuatu yang berbeda untuk keranjang atau checkout, yang harus Anda lakukan hanyalah mengganti metode Mage_Checkout_Block_Links::addCartLink()atau Mage_Checkout_Block_Links::addCheckoutLink(). Ini 2 panggilan yang sama addLink()dan Anda dapat memberikan parameter yang berbeda untuk itu.


1
Ini adalah jenis penjelasan yang saya cari. Saya pasti memiliki banyak pembelajaran di depan saya, tetapi sekarang saya memiliki ide tentang di mana untuk memulai. Saya akan mencoba menambahkan ikon saya (dari bootstrap) dengan teks berikut $ beforeText = '<i class = "icon-shopping-cart"> </i>' - Terima kasih!
Raphael Rafatpanah

File XML mana yang akan saya gunakan untuk ini?
Raphael Rafatpanah

Saya menjelaskan bahwa untuk tautan kereta dan checkout Anda tidak dapat melakukan ini dari file tata letak. Anda perlu mengganti metodeMage_Checkout_Block_Links::addCartLink()
Marius

1
Baik. Saya berasumsi untuk mengganti metode saya perlu menambahkan file ke file tema kustom saya dan memanggil metode di sana, yang akan menimpa contoh sebelumnya. Maukah Anda mengarahkan saya ke arah yang benar, misalnya, file mana yang berisi metode Mage_Checkout_Block_Links. Apakah itu links.php?
Raphael Rafatpanah

Jika Anda pergi dengan rute XML (yang tentunya Anda harus) perhatikan, bahwa untuk dapat digunakan <span class="icon"></span>sebagai teks sebelum Anda harus melampirkannya seperti itu <![CDATA[<span class="icon"></span>]]>. Parser XML juga mengambil baris baru, jadi Anda harus meletakkannya tepat setelah tag pembuka:<beforeText><![CDATA[<span class="icon"></span>]]></beforeText>
jmk

9

Jika Anda perlu menerapkan templat khusus hanya untuk Tautan Teratas, Anda dapat melakukannya seperti ini di local.xml tema Anda:

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

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

    </reference>
<default>

Kemudian salin halaman / templat / links.phtml dan ganti namanya ke halaman / templat / my_links.phtml dan lakukan apa pun yang Anda perlukan di dalam file templat baru itu.

Untuk menambahkan tautan khusus ke Tautan Teratas melalui 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>

Juga lihat halaman ini: http://www.classyllama.com/development/magento-development/editing-magentos-top-links-the-better-way


Dengan menggunakan metode ini, apakah saya dapat menambahkan html di antara setiap tautan?
Raphael Rafatpanah

@RaphaelRafatpanah Ya, di links.phtml ada loop <?php foreach($_links as $_link): ?>. Anda dapat menambahkan HTML apa pun di dalam lingkaran itu.
zitix

Tapi kemudian akan ditambahkan ke setiap tautan, ya? Saya ingin menambahkan html khusus di antara setiap tautan. Juga, saya percaya loop foreach akan digunakan untuk tautan footer serta tautan header jadi jika saya menambahkan html di antara tautan, mereka juga akan diterapkan ke tautan footer.
Raphael Rafatpanah

1
Itulah triknya: setelah Anda membuat halaman / template / my_links.phtml (yang merupakan salinan dari links.phtml asli ) dan setelah Anda menambahkan kode yang saya posting ke local.xml Anda , template itu hanya akan digunakan untuk membuat Top Links. Bukan tautan footer atau tautan lainnya.
zitix


0

Temukan jalur ini untuk mengubah tautan teratas:

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

dan cari: Log In (Dalam kasus saya).

Sekarang ganti judul dan label dengan teks yang Anda inginkan.


Anda tidak boleh mengedit file inti!
Hitam

-1

Anda perlu mengedit 2 file berikut.

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

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

Dalam file-file ini, tautan ditambahkan name="top.links". Beri komentar saja.


2
Selamat datang di Magento SE. Sementara jawaban ini berhasil, pertanyaannya adalah secara eksplisit tentang praktik terbaik dan mengedit file inti sama sekali bukan praktik terbaik di Magento.
Fabian Schmengler
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.