Как исключить из коллекции невыставленные на витрине товары?

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
  • Тема закрыта
#1 forastr
  • Группа: Пользователь
  • Сообщений: 36
  • Регистрация: 18.01.2012

08.06.2012 12:06

Я получаю коллекцию продуктов,выбираю из них некоторые по особым критериям и вывожу их на frontend. Так вот если в настройках продукта стоит статус Disabled и я его вывожу на frontend с сылкой на него то при переходе происходит зацикливание.. так вот мне надо как то добавить фильтры на этот Status, на Visibility (individ,catalog...), на Out Of stock , ну вообщем проверить можно ли отображать этот продукт на frontend, что бы было правильно по логике и не было косяков...
$entity_ids = Mage::getModel('catalog/product')
->getCollection()
->addStoreFilter($storeId)
->addFieldToFilter('attribute_set_id', $attributeSetId);

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

08.06.2012 22:53

/** @var Mage_Catalog_Model_Resource_Product_Collection|Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection $collection */
$collection =
    Mage::getResourceModel (
        'catalog/product_collection'
    )
;


/**
 * Для примера указываем системе загружать все свойства товаров
 */
$collection->addAttributeToSelect ("*");




/**
 * Оставляем в коллекции только те товары,
 * для которых администратор указал, что они должны быть видны в списке товаров на витрине
 */


/** @var Mage_Catalog_Model_Product_Visibility $productVisibility  */
$productVisibility =
    Mage::getSingleton (
        'catalog/product_visibility'
    )
;


$collection
    ->setVisibility (
        $productVisibility->getVisibleInSiteIds()
    )
;




/**
 * Удаляем из коллекции те товары,
 * которые администратор пометил как неподлежащие продаже
 */

/** @var Mage_Catalog_Model_Product_Status $productStatus  */
$productStatus =
    Mage::getSingleton (
        'catalog/product_status'
    )
;


$productStatus
    ->addSaleableFilterToCollection (
        $collection
    )
;




/**
 * Удаляем из коллекции отсутствующие на складе товары
 */


/** @var Mage_CatalogInventory_Model_Stock $stock */
$stock =
    Mage::getSingleton(
        'cataloginventory/stock'
    )
;


$stock
    ->addInStockFilterToCollection (
        $collection
    )
;


#3 forastr
  • Группа: Пользователь
  • Сообщений: 36
  • Регистрация: 18.01.2012

11.06.2012 12:36

странно, но у меня $productVisibility,$productStatus,$stock пустые объекты и соответсвенно ничего не меняется когда я применяю их к колекции....

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

11.06.2012 13:53

Если не получается сделать по готовому программному коду - значит, надо обратиться к качественному программисту и оплатить его труд. Тема закрыта.

Поделиться темой: