Я создаю блок "Продукт месяца" для нижнего колонтитула. Он должен загружать продукты категории и отображать первый.
Это мой файл шаблона custom/featured-product.phtml
:
<?php $_productCollection = $this->getLoadedProductCollection() ?>
<div class="featured-product">
<h2><?php echo $this->__('Product of the Month') ?></h2>
<?php foreach ($_productCollection as $_product): ?>
<div class="item">
<a class="product-image" href="<?php echo $_product->getProductUrl() ?>">
<img src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(200); ?>" alt="<?php echo $this->htmlEscape($this->getImageLabel($_product, 'small_image')) ?>" />
</a>
<a class="product-name" href="<?php echo $_product->getProductUrl() ?>"><?php echo $this->htmlEscape($_product->getName()) ?></a>
<?php echo $this->getPriceHtml($_product, true) ?>
</div>
<?php
// Note: Exit after first product.
break;
?>
<?php endforeach ?>
</div>
Это просто упрощенная версия шаблона списка товаров Magento: catalog/product/list.phtml
РАБОЧАЯ
При встраивании блока на странице CMS он отлично работает. Пример:
{{block type="catalog/product_list" category_id="13" template="custom/featured-product.phtml" }}
НЕ РАБОТАЕТ
При встраивании блока через local.xml
он терпит неудачу. Правильная разметка возвращается, но указанная категория не загружается. Вместо этого загружается случайный (я не так их выбрал) набор продуктов.
Мой код в local.xml
:
<default>
<reference name="footer">
<block type="catalog/product_list" name="custom.featuredProduct" as="product_of_the_month" category_id="13" template="custom/featured-product.phtml" />
</reference>
</default>
Для полноты я явно выделяю блок в page/html/footer.phtml
следующим образом:
<?php echo $this->getChildHtml('product_of_the_month') ?>
Любые идеи?
Мое лучшее предположение: мой local.xml
неверен. Есть ли родительский блок, который мне нужно загрузить?
[Обновления]
Мой исходный код приводит к сбою страницы продукта. Обходной путь не основывает код так сильно на основном файле Magento: catalog/product/list.phtml
. В частности, избегая этой строки:
<?php $_productCollection = $this->getLoadedProductCollection() ?>
[Решение]
Здесь приведена рабочая версия с примерами для использования в CMS Pages и LayoutXML: qaru.site/info/440194/...