Magento Недавно просмотренные товары

Что я пробовал Просто просмотри товары и покажи их, в результате я ничего не получил:

 <?php $_recentlyViewed =
Mage::getSingleton('Mage_Reports_Block_Product_Viewed')-> getItemsCollection(); ?>

<?php foreach ($_recentlyViewed as $_recentlyProduct): ?>
<?php var_dump($_recentlyProduct); ?>
<?php endforeach; ?>

Следующее, что он пытался отобразить блок по умолчанию, тогда я ничего не получил. В local.xml я добавил:

<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="content">
<reference name="product.info">
<block type="reports/product_viewed" name="product.recently.viewed" as="product_recently_viewed" template="reports/product_viewed.phtml"/>
<block type="poll/activePoll" name="right.poll" after="product_recently_viewed">
<action method="setPollTemplate"><template>poll/active.phtml</template><type>poll</type></action>
<action method="setPollTemplate"><template>poll/result.phtml</template><type>results</type></action>
</block>
</reference>
</reference>
</catalog_product_view>

А также

<?php echo $this->getChildHtml('product_recently_viewed'); ?>

В view.phtml, но все равно я ничего не получил.
Я проверил таблицу в MySQL, есть записи о последних просмотренных продуктах. Итак, мой вопрос, что я сделал не так? Есть идеи?

1

Решение

Вы использовали getSingleton попробуйте использовать это:

 <?php $_recentlyViewed =
Mage::getModel('Mage_Reports_Block_Product_Viewed')-> getItemsCollection(); ?>

<?php foreach ($_recentlyViewed as $_recentlyProduct): ?>
<?php var_dump($_recentlyProduct); ?>
<?php endforeach; ?>

С помощью getModel я думаю, что ваша работа может быть достигнута

3

Другие решения

Попробуйте использовать этот XML-код в вашем файле local.xml:

<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="product.info">
<block type="reports/product_viewed" name="product.recently.viewed" as="product_recently_viewed" template="reports/product_viewed.phtml"/>
<block type="poll/activePoll" name="right.poll" after="product_recently_viewed">
<action method="setPollTemplate"><template>poll/active.phtml</template><type>poll</type></action>
<action method="setPollTemplate"><template>poll/result.phtml</template><type>results</type></action>
</block>
</reference>
</catalog_product_view>
</layout>

Это потому, что вам не нужно иметь вложенные ссылки, чтобы вставить что-то в шаблон. Если это не работает, то единственной причиной этого будет то, что у вас нет product.info обрабатывать внутри файла catalog.xml, так как большинство тем настраивают его. Вам нужно проверить внутри catalog.xml вашей темы.

Для кода PHP, который вы показали, блоки не называются таким образом. getSingleton Метод зарезервирован для загрузки моделей в одиночном режиме. Однако, если вы передадите его с полным именем класса, вы все равно получите объект этого блока. Просто имейте это в виду для дальнейшего использования. Блоки создаются при помощи макетной модели Magento всякий раз, когда это необходимо. Они должны быть использованы таким образом.

0

По вопросам рекламы [email protected]