Magento: доступ к моделям / блокам из phtml - PullRequest
2 голосов
/ 22 августа 2011

Привет! У меня возникла ситуация, когда мне нужно посмотреть количество недавно просмотренных продуктов в каталоге / product / view.phtml. В недавно просмотренном файле 'product_viewed.phtml' он вызывает

$_products = $this->getRecentlyViewedProducts()

, чтобы получить недавно просмотренные. Как получить доступ к этому методу из файла catalog / product / view.phtml?

Я не знаю, где этот метод. Я пытался найти его, но, похоже, его не существует. Когда я пишу, нажмите на него в Netbeans и нажмите перейти к объявлению, это приведет меня к

class Mage_Reports_Block_Product_Viewed extends Mage_Reports_Block_Product_Abstract

На самом деле о самом классе. Этот класс имеет только методы _toHtml (), getCount () и getPageSize ().

Мне просто нужно знать, есть ли недавно просмотренные товары.

Любая помощь наиболее ценится!

Билли

Ответы [ 2 ]

3 голосов
/ 22 августа 2011

Если вы посмотрите на 'Mage_Reports_Block_Product_Viewed', вы заметите:

$this->setRecentlyViewedProducts($this->getItemsCollection());

, что метод 'getItemsCollection' определен в абстрактном классе ... И вы заметите, что этот абстрактный класс создаст модель на основедля $ _indexName, определенного в (подклассе) блоке.

Если вы просто хотите получить коллекцию, вы, вероятно, можете обойтись следующим образом:

$_products = Mage::getModel('reports/product_index_viewed')->getCollection();

И затем добавить все, что вы хотите в коллекцию:

$_products
    ->addAttributeToSelect('*')
    ->setAddedAtOrder();
    // optionally add other methods similar to Mage_Reports_Block_Product_Abstract::getItemsCollection

Другим подходом, который может быть более подходящим, будет создание исходного блока:

$productViewedBlock = $this->getLayout()->createBlock('reports/product_viewed');

, для которого вы можете просто позвонить как хотите:

$_collection = $productViewedBlock->getItemsCollection();
$_count = $productViewedBlock->getCount();
1 голос
/ 22 августа 2011

Функция getRecentlyViewedProducts - это магический геттер, который получает данные, которые были установлены с помощью setRecentlyViewedProducts в app/code/core/Mage/Reports/Block/Product/Viewed.php (который строит его с использованием функции app/code/core/Mage/Reports/Block/Product/Abstract.php _getRecentProductsCollection).

Это сложный материал, который вы не хотите воспроизводить;Лучше, IMO, сделать свой собственный Блок extends Mage_Catalog_Block_Product_Abstract, который даст вам доступ к той же функциональности, и перетащить новый блок на страницу, над которой вы работаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...