Как показать рекомендуемые товары только из определенной категории?


Как я могу показывать рекомендуемые товары только из определенной категории?

Мне удалось создать "рекомендуемый продукт" в качестве одного из атрибутов для моих продуктов, и я "пометил" несколько продуктов этим атрибутом. Но моя проблема в том, что я хочу показать только рекомендуемый продукт только из одной определенной категории.

У меня есть "вино", "еда", "подарки" и т. Д. В качестве моих категорий. И в каждой категории есть свои собственные рекомендуемые продукты, поэтому, когда я нахожусь на странице просмотра категории вин, я хочу показывать только избранные из категории вина, а затем я хочу показывать те, что из категории продуктов питания, только когда я нахожусь на странице просмотра категории продуктов питания.

Я следовал инструкциям здесь, чтобы создать атрибут "рекомендуемый продукт",

1. http://www.magentocommerce.com/wiki/5_-_modules_and_development/catalog/how_to_create_a_featured_product

2. http://www.magentocommerce.com/boards/viewthread/84852/

Author: laukok, 2014-04-22

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') ?>


Полезные ресурсы:

Как получить коллекцию продуктов:

Использование магии получатели/установщики:

 3
Author: B00MER, 2017-05-23 12:37:16