Magento 在布局中设置多商店愿望清单错误

Posted

技术标签:

【中文标题】Magento 在布局中设置多商店愿望清单错误【英文标题】:Magento Setup Multi-Store Wishlist Error in Layout 【发布时间】:2013-01-01 09:14:27 【问题描述】:

我正在尝试在 magento 安装上设置新商店。它是安装的第二个网站/商店,托管在不同的域和不同的文件夹中。数据库是一样的。

我按照所有说明配置和设置新商店。我从旧商店复制了布局、设计和皮肤文件而没有更改它们。理论上,两家商店都在运行相同的代码。在浏览器中访问新商店时,出现以下错误:

警告:call_user_func_array() 期望参数 1 是有效的回调,类 'Mage_Wishlist_Helper_Data' 在 /httpdocs/app/code/core/Mage/Core/Model/Layout.php 的第 323 行没有方法 ''

0 [内部函数]: mageCoreErrorHandler(2, 'call_user_func_...', '/var/www/vhosts...', 323, Array) 1 /httpdocs/app/code/core/Mage/Core/Model/Layout.php(323): call_user_func_array(数组, 数组) 2 /httpdocs/app/code/core/Mage/Core/Model/Layout.php(213):Mage_Core_Model_Layout->_generateAction(对象(Mage_Core_Model_Layout_Element),对象(Mage_Core_Model_Layout_Element)) 3 /httpdocs/app/code/core/Mage/Core/Model/Layout.php(209): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element)) 4 /httpdocs/app/code/core/Mage/Core/Model/Layout.php(209): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element)) 5 /httpdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(343): Mage_Core_Model_Layout->generateBlocks() 6 /httpdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(270):Mage_Core_Controller_Varien_Action->generateLayoutBlocks() 7 /httpdocs/app/code/core/Mage/Cms/controllers/IndexController.php(60):Mage_Core_Controller_Varien_Action->loadLayout() 8 /httpdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Cms_IndexController->defaultIndexAction() 9 /httpdocs/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(253): Mage_Core_Controller_Varien_Action->dispatch('defaultIndex') 10 /httpdocs/app/code/core/Mage/Core/Controller/Varien/Front.php(176):Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http)) 11 /httpdocs/app/code/core/Mage/Core/Model/App.php(340): Mage_Core_Controller_Varien_Front->dispatch() 12 /httpdocs/app/Mage.php(627): Mage_Core_Model_App->运行(数组) 13 /httpdocs/index.php(81): Mage::run('mysite', 'website')

我已禁用管理 > 配置 > 客户下的愿望清单和管理 > 配置 > 高级 > 高级中的模块输出。

另外,我的 local.xml 有以下内容:

        <!-- Removes 'Wishlist' link - Default position: 20 -->
        <!-- for Magento 1.3.x -->
        <action method="removeLinkByUrl"><url helper="wishlist/"/></action>

        <!-- for Magento 1.4.x -->
        <remove name="wishlist_link"/>

有什么想法或建议吗?

【问题讨论】:

【参考方案1】:

在 Magento 中删除愿望清单链接很痛苦,并且可能导致错误。您可以按照这个答案为愿望清单链接设置一个空白模板,这样就不会导致错误(代码见答案底部):

https://***.com/a/4424679/823549

【讨论】:

我在发帖之前发现了那个帖子......不幸的是并没有解决我的问题。原来的商店仍然很好......【参考方案2】:

好像是配置行

<action method="removeLinkByUrl"><url helper="wishlist/"/></action>

不正确。

这里发生的是 Mage_Page_Block_Template_Links 类型的块调用它的函数 removeLinkByUrl($url)。参数 $url 由另一个函数生成,该函数由 hepler 类 Mage_Wishlist_Helper_Data 提供。缺少函数的名称:而不是 "wishlist/" 应该是 "wishlist/someFunctionThatGetsAUrl" 。由于没有提供函数名,所以系统找不到并抛出此错误

如果目标是隐藏wishlink块,用行表示

<remove name="wishlist_link"/>

那为什么不注释掉我觉得多余的action config行呢?

冗余可能来自尝试为两个较旧的 Magento 版本(1.3x 和 1.4x)提供服务。在 1.3x 中,动作配置可能是有效的,但在您当前的 Magento 版本中似乎并非如此。

【讨论】:

【参考方案3】:

我尝试了多种方式删除链接...最后我将顶部链接全部删除并硬编码了我想要的链接。

将此添加到 local.xml 并删除 top.links 部分以将其从站点中删除:

 <reference name="root"> 
        <remove name="top.links" />
    </reference>

【讨论】:

以上是关于Magento 在布局中设置多商店愿望清单错误的主要内容,如果未能解决你的问题,请参考以下文章

Magento - 包含当前用户愿望清单的产品系列

用于添加产品愿望清单的 Magento 自定义 API

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

Magento 删除愿望清单中的产品

Magento - 访问客户的愿望清单

Magento 2在愿望清单中仅显示5个产品