magento accesing“;“发送朋友”;类别页面中的模块

magento accesing“;“发送朋友”;类别页面中的模块,magento,Magento,我正在尝试将“发送给朋友”操作添加到分类页面 在产品视图中,我可以看到以下代码: “canEmailToFriend()):?> 如果我尝试将此代码添加到“list.phtml”(显示产品网格的位置)中,我会收到以下错误: 无效的方法Mage\u Catalog\u Block\u Product\u List::canEmailToFriend(数组 说这种方法在这种情况下不可用 我可以将“sendtofriend”模块的功能添加到我需要的任何页面中吗 提前感谢这是因为$This->can

我正在尝试将“发送给朋友”操作添加到分类页面

在产品视图中,我可以看到以下代码: “canEmailToFriend()):?>

如果我尝试将此代码添加到“list.phtml”(显示产品网格的位置)中,我会收到以下错误: 无效的方法Mage\u Catalog\u Block\u Product\u List::canEmailToFriend(数组

说这种方法在这种情况下不可用

我可以将“sendtofriend”模块的功能添加到我需要的任何页面中吗


提前感谢

这是因为
$This->canEmailToFriend()
调用是属于产品页面的块方法,一个名为
Mage\u Catalog\u block\u product\u View的类
。产品列表页面使用一个名为
Mage\u Catalog\u block\u product\u List
的块类,该类不包含此代码

方法
canEmailToFriend()
包含(如
app/code/core/Mage/Catalog/Block/Product/View.php
中所定义)逻辑:

$sendToFriendModel = Mage::registry('send_to_friend_model');
return $sendToFriendModel && $sendToFriendModel->canEmailToFriend();

如果
$sendToFriendModel->canEmailToFriend()
,您可以直接将其嵌入模板中,然后调用帮助器输出链接,但实现这一点的最佳方法是将
canEmailToFriend
功能移出到新的帮助器中,并从那里调用它。

这是因为
$this->canEmailToFriend()
调用是属于产品页面的块方法,一个名为
Mage\u Catalog\u block\u product\u View
的类。产品列表页面使用一个名为
Mage\u Catalog\u block\u product\u List的块类,该类不包含此代码

方法
canEmailToFriend()
包含(如
app/code/core/Mage/Catalog/Block/Product/View.php
中所定义)逻辑:

$sendToFriendModel = Mage::registry('send_to_friend_model');
return $sendToFriendModel && $sendToFriendModel->canEmailToFriend();

如果
$sendToFriendModel->canEmailToFriend()
,您可以将其直接嵌入到模板中,然后调用帮助器输出链接,但实现这一点的最佳方法是将
canEmailToFriend
功能移出到新的帮助器中,并从那里调用它。

我认为
Mage::registry('send_to_friend_model')
返回类
Mage_Sendfriend_model_Sendfriend_Sendfriend
中的
canEmailToFriend()
方法检查是否启用了“向朋友发送电子邮件”功能:

您可以在
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 ?>    

我认为
Mage::registry('send_-to_-friend_-model')
返回类
Mage\u-Sendfriend_-model\u-Sendfriend
中的
canEmailToFriend()
方法检查是否启用了“向朋友发送电子邮件”功能:

您可以在
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 ?>    

我找到了另一种解决方案,只需加载
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;?>


来自

的资源我创建了一个替代解决方案,只需加载
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;?>


资源来自

它的作品!!谢谢:)它的作品!!谢谢:)