5

local.xmlファイルを使用してtop.linksからウィッシュリストリンクを削除しました。

<remove name="wishlist_link"/>

ミニバスケットなど、他の場所に追加するにはどうすればよいですか?

4

2 に答える 2

13

ブロックビュースクリプトで、へのリンクを追加する以下を追加しました/wishlist/

<a href="<?php echo $this->getUrl('wishlist') ?>">Wishlist</a>
于 2012-10-24T11:14:39.863 に答える
0

クラス「Mage_Page_Block_Template_Links」を確認することをお勧めします。このクラスでは、次のメソッドを見ることができます。

public function addLink($label, $url='', $title='', $prepare=false, $urlParams=array(),
    $position=null, $liParams=null, $aParams=null, $beforeText='', $afterText='')
{
    if (is_null($label) || false===$label) {
        return $this;
    }
    $link = new Varien_Object(array(
        'label'         => $label,
        'url'           => ($prepare ? $this->getUrl($url, (is_array($urlParams) ? $urlParams : array())) : $url),
        'title'         => $title,
        'li_params'     => $this->_prepareParams($liParams),
        'a_params'      => $this->_prepareParams($aParams),
        'before_text'   => $beforeText,
        'after_text'    => $afterText,
    ));

    $this->_links[$this->_getNewPosition($position)] = $link;
    if (intval($position) > 0) {
         ksort($this->_links);
    }

    return $this;
}

これは、保護された変数$_linkへのリンクを追加する関数です。後で、このリンクはforeachループを使用してテンプレートによって書き込まれます。

この変数の値は、次のコマンドで取得できます。

public function getLinks()
    {
        return $this->_links;
    }

たとえば、ファイル; page / template/links.phtmlにあります。

<?php $_links = $this->getLinks(); ?>
<?php if(count($_links)>0): ?>
<ul class="links"<?php if($this->getName()): ?> id="<?php echo $this->getName() ?>"<?php endif;?>>
    <?php foreach($_links as $_link): ?>
        <?php if ($_link instanceof Mage_Core_Block_Abstract):?>
            <?php echo $_link->toHtml() ?>
        <?php else: ?>
            <li<?php if($_link->getIsFirst()||$_link->getIsLast()): ?> class="<?php if($_link->getIsFirst()): ?>first<?php endif; ?><?php if($_link->getIsLast()): ?> last<?php endif; ?>"<?php endif; ?> <?php echo $_link->getLiParams() ?>><?php echo $_link->getBeforeText() ?><a href="<?php echo $_link->getUrl() ?>" title="<?php echo $_link->getTitle() ?>" <?php echo $_link->getAParams() ?>><?php echo $_link->getLabel() ?></a><?php echo $_link->getAfterText() ?></li>
        <?php endif;?>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

次に、カスタムブロックの新しい関数を作成するか、このブロックを拡張して関数removeLinkByUrlおよびaddLinkを使用できます。

于 2012-07-17T14:43:21.450 に答える