我试图将"发送给朋友"对类别页面的操作。
在产品视图中,我可以看到以下代码: " canEmailToFriend()):?>
<p class="email-friend"><a href="<?php echo this->helper('catalog/product')->getEmailToFriendUrl($_product) ?>"><?php echo $this->__('Email to a Friend') ?></a></p>
<?php endif; ?>
如果我尝试将此代码添加到我的&#34; list.phtml&#34; (显示产品网格)我收到此错误: 方法Mage_Catalog_Block_Product_List :: canEmailToFriend(Array
)无效说这个方法在这种情况下不可用......
我可以添加&#34; sendtofriend&#34;的功能。模块到我需要的任何页面?
提前致谢
答案 0 :(得分:3)
这是因为$this->canEmailToFriend()
调用是属于产品页面的块方法,即名为Mage_Catalog_Block_Product_View
的类。产品列表页面使用名为Mage_Catalog_Block_Product_List
的块类,该类不包含此代码。
方法canEmailToFriend()
包含(如app/code/core/Mage/Catalog/Block/Product/View.php
中所定义)逻辑:
$sendToFriendModel = Mage::registry('send_to_friend_model');
return $sendToFriendModel && $sendToFriendModel->canEmailToFriend();
您可以直接在您的模板中嵌入它,然后调用帮助程序输出$sendToFriendModel->canEmailToFriend()
的链接,但实现此目的的最佳方法是移动{{1}将功能输出到新的帮助器中并从那里调用它。
答案 1 :(得分:1)
我创建了另一种解决方案,只需加载sendfriend
模型
$sendToFriendModel = Mage::getModel('sendfriend/sendfriend');
然后使用
<?php if ( $sendToFriendModel->canEmailToFriend() ) : ?>
<p class="email-friend"><a href="<?php echo $this->helper('catalog/product')->getEmailToFriendUrl($_product) ?>"><span><span><?php echo $this->__('Email to a Friend') ?></span></span></a></p>
<?php endif;?>
来自C:/xampp/htdocs/magento/app/code/core/Mage/Sendfriend/controllers/ProductController.php的资源
答案 2 :(得分:0)
我认为Mage::registry('send_to_friend_model')
会返回类Mage_Sendfriend_Model_Sendfriend
的对象。 canEmailToFriend()
中的Mage_Sendfriend_Model_Sendfriend
方法检查&#34;是否发送电子邮件给朋友&#34;功能已启用:
您可以在app/code/core/Mage/Sendfriend/Model/Sendfriend.php
中找到这两种方法:
/**
* Check if user is allowed to email product to a friend
*
* @return boolean
*/
public function canEmailToFriend()
{
return $this->_getHelper()->isEnabled();
}
/**
* Retrieve Data Helper
*
* @return Mage_Sendfriend_Helper_Data
*/
protected function _getHelper()
{
return Mage::helper('sendfriend');
}
因此,您可以在模板中检查自己:
<?php if (Mage::helper('sendfriend')->isEnabled()) : ?>
<?php // Do stuff ?>
<?php endif ?>