magento доступ к модулю «SendFriend» со страницы категории - PullRequest
1 голос
/ 19 мая 2011

Я пытаюсь добавить действие "отправить другу" на страницу категории.

В представлении продукта я вижу этот код: "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; ?>

Если я пытаюсь добавить этот код в мой" list.phtml "(где продуктыотображается сетка) Я получаю эту ошибку: Неверный метод Mage_Catalog_Block_Product_List :: canEmailToFriend (Array

, говорящий, что этот метод недоступен в этом контексте ...

Кто может добавить функциональность "модуль sendtofriend на любую нужную мне страницу?

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 19 мая 2011

Это потому, что вызов $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(), но лучший способ добиться этого - перенести функциональность canEmailToFriend в нового помощника.и позвони оттуда.

1 голос
/ 29 сентября 2015

Я нашел альтернативное решение, просто загрузите 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

0 голосов
/ 13 сентября 2014

Я думаю Mage::registry('send_to_friend_model') возвращает объект класса Mage_Sendfriend_Model_Sendfriend. Метод canEmailToFriend() в Mage_Sendfriend_Model_Sendfriend проверяет, включена ли функция «Отправить другу»:

Вы можете найти эти два метода в 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 ?>    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...