Magento:更改顶部链接愿望清单 url

Magento: change toplink wishlist url

我正在尝试更改 Magento 顶部链接心愿单按钮 url。 目前它是在 wishlist.xml

中生成的
<reference name="top.links">
<block type="wishlist/links" name="wishlist_link" />
<action method="addLinkBlock"><blockName>wishlist_link</blockName></action>
</reference>

这让我在核心文件中无果而终。 我想要做的是让按钮指向 /guestwishlist/ 而不是 /wishlist/(另外 atm,由于某种原因导致 wishlist/index/share)。

我已经阅读了大部分相关指南和答案,因为我已经研究了数小时。 只需要更改单个按钮 url 即可转到 /guestwishlist/

编辑> 这就是我的 top.links.phtml 的样子

<?php if($toplinks && is_array($toplinks)): ?>
<ul class="links">
    <?php echo $this->getChildHtml() ?>
    <?php foreach($toplinks as $_toplink): ?>
    <li<?php if($_toplink['first']||$_toplink['last']): ?> class="<?php if($_toplink['first']): ?>first<?php endif; ?><?php if($_toplink['last']): ?> last<?php endif; ?>"<?php endif; ?> <?php echo $_toplink['liParams'] ?>><?php echo $_toplink['beforeText'] ?><a <?php echo $_toplink['aParams'] ?>><?php echo $_toplink['innerText'] ?></a><?php echo $_toplink['afterText'] ?></li>
    <?php endforeach; ?>
</ul>
<?php endif; ?>

您可以通过编辑 template/page/html/top 将心愿单 url 更改为自定义 url。links.phtml

有一个 foreach,您可以在其中检查当前循环项目是否为心愿单,将默认 url 更改为您的自定义 URL。

这将确保您所做的任何更改仅限于内容的前端呈现,也无需覆盖任何核心文件。

要以正确的 magento 方式更改愿望清单 url,您需要覆盖:

app/code/core/Mage/Wishlist/Block/Links.php

localcommunity codePool.

在此文件中,您将找到如下代码:

protected function _toHtml()
    {
        if ($this->helper('wishlist')->isAllow()) {
            $text = $this->_createLabel($this->_getItemCount());
            $this->_label = $text;
            $this->_title = $text;
            $this->_url = $this->getUrl('wishlist');
            return parent::_toHtml();
        }
        return '';
    }

改变

$this->_url = $this->getUrl('wishlist');

$this->_url = $this->getUrl('guestwishlist');

大功告成..:)

现在您必须为宾客愿望清单创建或拥有一个模块。

核心解决方案是有效的,但我必须记住,我只想为客人更改 link,对于客户,link 必须保持不变。 我网站的细节使用了 template/page/links.phtml 文件而不是 Blastfreak 提到的 top.links.phtml 所以我不得不把所有东西都加两遍 :P 我使用了循环检查当前项目的解决方案。

<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 if ($_link->gettype() == 'wishlist/links' && (!$this->helper('customer')->isLoggedIn())): ?>
                <?php echo '<li class="first last"><a href="/guestwishlist" title="My Wishlist">My Wishlist</a></li>' ?>
            <?php else: ?>


                <?php echo $_link->toHtml() ?>
            <?php endif;?>
        <?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>

不得不回应一些额外的 类 风格。