Magento - 删除 1.4.2 中的愿望清单链接?

2023-12-10

以前在 Magento 中,使用以下内容添加愿望清单链接(在 Wishlist.xml 中):

<action method="addWishlistLink"></action>

您可以覆盖它并使用以下内容将其删除(在您的 local.xml 中):

<remove name="wishlist_link"/>

然而,在最新的 Magento 1.4.2 中,他们更改了将愿望清单链接添加到以下内容的方式:

<action method="addLinkBlock"><blockName>wishlist_link</blockName></action>

有人知道如何删除愿望清单链接吗?现在他们已经更改了添加方式?


似乎没有公开可用的方法来可靠地删除愿望清单链接block从布局来看。 (您可以跳到最后查看解决方法)

The addLinkBlock假设已传递的块存在,因此按照您描述的方式使用删除会导致抛出致命错误

Fatal error: Call to a member function getPosition() on a non-object in /Users/alanstorm/Sites/magento1point4.2.dev/app/code/core/Mage/Page/Block/Template/Links.php on line 112

这是导致该错误的核心代码

app/code/core/Mage/Page/Block/Template/Links.php
public function addLinkBlock($blockName)
{
    $block = $this->getLayout()->getBlock($blockName);
    $this->_links[$this->_getNewPosition((int)$block->getPosition())] = $block;        
    return $this;
}

此方法假设它将能够通过传递的任何名称拉出一个块,因此我们不能像在以前的版本中那样删除愿望清单链接块。

删除链接的唯一机制似乎是同一块类上的以下方法

app/code/core/Mage/Page/Block/Template/Links.php
public function removeLinkByUrl($url)
{
    foreach ($this->_links as $k => $v) {
        if ($v->getUrl() == $url) {
            unset($this->_links[$k]);
        }
    }
    return $this;
}

然而,这是使用字符串比较来完成的,并且没有可靠的方法(据我所知)从布局文件生成 URL 对象,将其转换为字符串,并将其传递到方法中(这是必需的,因为有有许多配置设置可以更改最终的字符串 URL)。这使得这个方法对我们的需求没有帮助。

那么,我们can是否修改现有的 Wishlist_link 块以使用空白或不存在的模板。这样该块仍然会呈现,但它呈现为空字符串。最终结果是我们避免了上面提到的致命错误,但仍然设法从我们选定的页面中删除链接。

以下内容将从中删除链接all页面使用default handle.


<!-- file: local.xml -->
<layout>
    <default> 
        <reference name="wishlist_link">
            <action method="setTemplate"><template>blank-link.phtml</template></action>         
        </reference>            
    </default>
</layout>
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Magento - 删除 1.4.2 中的愿望清单链接? 的相关文章

随机推荐