Как добавить Избранные продукты в коллекцию продукта

magento.stackexchange https://magento.stackexchange.com//questions/88625

Вопрос

Я пытаюсь изменить какой-то код для вывода продуктов с атрибутом «Figure», установленным на «Да»

Вот что я работаю с:

<?php

 class Mage_Catalog_Block_Product_Featured extends Mage_Catalog_Block_Product_Abstract{
    public function __construct(){
        parent::__construct();


        $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'featured');
        $attributeId = $attribute->getId();


        $storeId    = Mage::app()->getStore()->getId();
        $products = Mage::getResourceModel('reports/product_collection')
            ->addOrderedQty()
            ->addAttributeToSelect('*')
            ->addAttributeToSelect(array('name', 'price', 'small_image', 'featured'))
            ->setStoreId($storeId)
            ->addStoreFilter($storeId)
            ->addViewsCount();
        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($products);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($products);

        $products->setPageSize(16)->setCurPage(1);
        $this->setProductCollection($products);
    }
}
.

Это делает вывод продуктов, но не из них.

    .
  • Как изменить запрос, чтобы он выбирал только избранные продукты
  • Похоже, он добавляет все атрибуты на выбор, это правильно и как я выводят значение атрибута в моем шаблоне PHTML?
Это было полезно?

Решение

Попробуйте сделать как

$products = Mage::getResourceModel('reports/product_collection')
            ->addOrderedQty()
            ->addAttributeToSelect('*')
            ->addAttributeToSelect(array('name', 'price', 'small_image', 'featured'))
            ->addAttributeToFilter('featured',array('eq'=>true))
            ->setStoreId($storeId)
            ->addStoreFilter($storeId)
            ->addViewsCount();
.

Также убедитесь, что код вашего атрибута является featured

в файле phtml вы можете получить атрибут, как

<?php $_helper = $this->helper('catalog/output'); ?>
<?php echo $_helper->productAttribute($_product, $_product->getAttributeCode(), 'attribute_code') ?>
.

Другие советы

Пожалуйста, попробуйте белдый код

public function __construct()
    {
        parent::__construct();

        $collection = Mage::getResourceModel('catalog/product_collection');
        $collection = $this->_addProductAttributesAndPrices($collection)
            ->addAttributeToSelect('featured')
            ->addStoreFilter()
            ->addAttributeToFilter('featured',true)
            ->setPageSize(16)
            ->setCurPage(1);

        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);

        $collection->setPageSize(16)
            ->setCurPage(1);
        $this->setProductCollection($collection);
    }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top