5

<aParams>class="class-name"</aParams>
たとえば、次のコマンドを使用して、トップリンクにクラスを追加しようとしました。

<reference name="top.links">
    <action method="addLink" translate="label title" module="customer"><label>My Account</label><url helper="customer/getAccountUrl"/><title>My Account</title><prepare/><aParams>class="top-link-myaccount"</aParams><position>10</position></action>
</reference>

上記のトリックは、少なくとも1.7.0.0バージョンでは機能しませんでした。
何か案が?

編集:
私はそれを使用して修正したと思います<li/><a>class="top-links-register"</a>

<reference name="top.links">
        <action method="addLink" translate="label title" module="customer"><label>My Account</label><url helper="customer/getAccountUrl"/><title>My Account</title><prepare/><aParams/><position>10</position><li/><a>class="top-link-myaccount"</a></action>
    </reference>

付加する必要があることに注意してください<li/>

4

2 に答える 2

14

Leeの答えを例で完成させるには、トップリンク(要素自体)にクラスを追加するために、次のよう<li>に下にある新しいノード(または文字列)を介してそれを行うことができます。<liParams>

<action method="addLink">
    <label/>
    <url/>
    <title/>
    <prepare/>
    <urlParams/>
    <position/>
    <liParams>
        <class>myclassname</class>
    </liParams>
    <aParams/>
    <beforeText/>
    <afterText/>
</action>

しかし、リーが指摘するように、これらの子要素の順序を維持する必要があります。

クラスをリスト<a> に配置する場合、構文は同様であり、ノードをターゲットにするだけです。

<action method="addLink">
    <label/>
    <url/>
    <title/>
    <prepare/>
    <urlParams/>
    <position/>
    <liParams/>
    <aParams>
        <class>myclassname</class>
    </aParams>
    <beforeText/>
    <afterText/>
</action>

リンクテキストとフォーマットをより柔軟にする必要がある場合は、「addLink」ノードを使用する代わりに、ブロック内にリンクを生成してからそのブロックを追加する方法があります。

これは、カートリンクとチェックアウトリンクが追加される方法です。XMLでトップリンクにリンクを追加するのではなく、ブロック内から直接addLinkメソッドを呼び出します。これにより、各顧客に表示する適切なテキストを計算できます。

この例については、Mage_Checkout_Block_Linksと組み合わせたクラスを参照してください。base\default\layout\checkout.xml

于 2013-05-22T00:49:39.363 に答える
12

ご存知のとおり、addLinkのメソッドシグネチャは次のとおりです。

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

したがって、すべてのパラメーターを使用したレイアウトでの適切な呼び出しは、次のようになります。

<action method="addLink">
    <label/>
    <url/>
    <title/>
    <prepare/>
    <urlParams/>
    <position/>
    <liParams/>
    <aParams/>
    <beforeText/>
    <afterText/>
</action>

残念ながら、Magentoはリフレクションを使用してアクション要素の子をメソッドの名前付きパラメーターにマップせず、代わりに位置に依存しています。

もう1つの注意点として、liParamsとaParamsは、文字列またはキーと値のペアを表す一連の子要素のいずれかです。

于 2012-05-27T18:03:08.873 に答える