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>、アイコンのクラスにいくつかのスタイルを追加します。
カートとチェックアウトのリンクについては、レイアウトファイルから直接ではなくブロックオブジェクトを介して追加されるため、少し注意が必要です。
カートまたはチェックアウト用に別の何かが必要な場合は、メソッドMage_Checkout_Block_Links::addCartLink()またはをオーバーライドするだけですMage_Checkout_Block_Links::addCheckoutLink()。これら2つは同じ呼び出しで、addLink()異なるパラメーターを渡すことができます。


1
これはまさに私が探していた種類の説明です。私は間違いなく目の前で多くのことを学んでいますが、今はどこから始めればいいかがわかります。次のテキスト$ beforeText = '<i class = "icon-shopping-cart"> </ i>'を使用して(ブートストラップから)アイコンを追加しようとしています-ありがとうございます!
ラファエルラファトパナ

どのXMLファイルをこれに使用しますか?
ラファエルラファトパナ

カートとチェックアウトのリンクについては、レイアウトファイルからこれを行うことはできないと説明しました。メソッドをオーバーライドする必要がありますMage_Checkout_Block_Links::addCartLink()
マリウス

1
OK。メソッドをオーバーライドして、カスタムテーマファイルにファイルを追加し、そこでメソッドを呼び出す必要があります。これにより、以前のインスタンスがオーバーライドされます。たとえば、どのファイルにMage_Checkout_Block_Linksメソッドが含まれるかなど、正しい方向に向けてくれませんか。links.phpですか?
ラファエルラファトパナ

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>

次に、page / template / links.phtmlをコピーし、page / template / 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を追加できますか?
ラファエルラファトパナ

@RaphaelRafatpanahはい、links.phtmlにはループがあります<?php foreach($_links as $_link): ?>。そのループ内に任意のHTMLを追加できます。
-zitix

しかし、その後、各リンクに追加されます。各リンクの間にカスタマイズされたHTMLを追加したいと考えています。また、フーターリンクだけでなくヘッダーリンクにもforeachループが使用されるため、リンク間にhtmlを追加すると、フッターリンクにも適用されます。
ラファエルラファトパナ

1
それが trickです:page / template / my_links.phtml(元のlinks.phtmlのコピー)を作成し、local.xmlに投稿したコードを追加すると、そのテンプレートはトップリンクのレンダリングにのみ使用されます。フッターリンクやその他のリンクではありません。
zitix


0

トップリンクを変更するには、このパスを見つけてください。

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

そして検索:ログイン(私の場合)。

次に、タイトルとラベルを希望のテキストに変更します。


コアファイルを編集しないでください!
ブラック

-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のベストプラクティスではありません。
ファビアンシュメングラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.