magento从类别页面访问“SendFriend”模块

时间:2011-05-19 16:03:13

标签: magento

我试图将"发送给朋友"对类别页面的操作。

在产品视图中,我可以看到以下代码: " 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;的功能。模块到我需要的任何页面?

提前致谢

3 个答案:

答案 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 ?>