Как показать рекомендуемые товары только из определенной категории?
Как я могу показывать рекомендуемые товары только из определенной категории?
Мне удалось создать "рекомендуемый продукт" в качестве одного из атрибутов для моих продуктов, и я "пометил" несколько продуктов этим атрибутом. Но моя проблема в том, что я хочу показать только рекомендуемый продукт только из одной определенной категории.
У меня есть "вино", "еда", "подарки" и т. Д. В качестве моих категорий. И в каждой категории есть свои собственные рекомендуемые продукты, поэтому, когда я нахожусь на странице просмотра категории вин, я хочу показывать только избранные из категории вина, а затем я хочу показывать те, что из категории продуктов питания, только когда я нахожусь на странице просмотра категории продуктов питания.
Я следовал инструкциям здесь, чтобы создать атрибут "рекомендуемый продукт",
1 answers
Источник: https://stackoverflow.com/a/12288000/158325
Нашел рабочее решение, воспользовавшись советом Алана Шторма.
/ шаблон/пользовательский/рекомендуемый-product.phtml
<?php
$_categoryId = $this->getCategoryId();
$_productCollection = Mage::getModel('catalog/category')->load($_categoryId)
->getProductCollection()
->addAttributeToSelect('*')
->addAttributeToFilter('status', 1)
->addAttributeToFilter('visibility', 4)
->setOrder('price', 'ASC');
?>
<div class="featured-product">
<h2><?php echo $this->__( $this->getLabel() ); ?></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>
Короче говоря, коллекция создается вручную, а не получает коллекцию (как это сделала моя первоначальная попытка):
<?php $_productCollection = $this->getLoadedProductCollection() ?>
<?php $_collectionSize = $_productCollection->getSize(); ?>
Использование на странице CMS:
{{block type="core/template" category_id="13" label="Product of the Month" template="custom/featured-product.phtml" }}
Использование в шаблон:
/layout/local.xml
<default>
<reference name="footer">
<block type="core/template" name="custom.featuredProduct" as="featured_product" template="custom/featured-product.phtml">
<action method="setData"><key>category_id</key><value>13</value></action>
<action method="setData"><key>label</key><value>Product of the Month</value></action>
</block>
</reference>
</default>
/ шаблон/страница/html/нижний колонтитул.phtml
<?php echo $this->getChildHtml('featured_product') ?>
Полезные ресурсы:
Как получить коллекцию продуктов:
- http://overlycaffeinated.com/2011/02/get-all-sale-products-from-a-category-in-magento/
- https://stackoverflow.com/questions/272818/magento-products-by-categories
Использование магии получатели/установщики: