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
在 local 或 community 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>
不得不回应一些额外的 类 风格。
我正在尝试更改 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
在 local 或 community 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>
不得不回应一些额外的 类 风格。