Серьезная потребность в объяснении с помощью AddsAlableFilterTocollection

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

Вопрос

Я провел дни в поисках простого учебника о добавлении фильтров в коллекцию продуктов. Если у кого -то есть ссылка на хороший учебник или объяснение, я бы очень признателен. Я нашел кожу Magento, и файл list.phtml использует этот код:

$products_collection = Mage::getModel( 'catalog/product' )
        ->getCollection()
        ->addAttributeToSelect( '*' )
        ->addCategoryFilter( $_cat )
        ->addOrder( 'position', 'ASC' );
    Mage::getSingleton( 'catalog/product_status' )->addSaleableFilterToCollection( $products_collection );
    Mage::getSingleton( 'catalog/product_visibility' )->addVisibleInCatalogFilterToCollection( $products_collection );
    Mage::getSingleton( 'cataloginventory/stock' )->addInStockFilterToCollection( $products_collection );

Я не видел фильтрации, выполненной этим методом «AddSalableFilterTocollection». Какие еще атрибуты можно использовать таким образом? Каковы возможные причины, по которым разработчик будет использовать этот подход? Список категорий тем не имеет настройки отзывов. Я нашел код, который выводит отзывы, но я думаю, что обзоры отсутствуют в модели продукта. Я старался

Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection );

Но это ничего не сделало.

Я больше заинтересован в том, чтобы научиться ловить рыбу, а не вручить рыбу.

Это было полезно?

Решение

Какие еще атрибуты можно использовать [для добавления пользовательских фильтров]?

Буквально Любые. Анкет Это зависит от прихоти/потребностей разработчика или платформы.

Каковы возможные причины, по которым разработчик будет использовать этот подход?

Прежде всего, СУХОЙ. Анкет Вполне вероятно, что условия фильтра должны будут повторяться в нескольких контекстах, а правильный (вменяемый) конструкция говорит нам, что логика должна быть инкапсулирована в метод.

Я старался Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection ); Но это ничего не сделало.

В то время как в Magento есть много, казалось бы, Voodoo-y Magic (обычно вытекает из архитектуры событий или Varien_Object::__call(), Эти фильтры сбора должны быть реализованы где -то. Я рекомендую искать, как показано ниже в app/code/ Чтобы найти данное определение:

$ grep -srl 'n addSaleableFilterToCollection'

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

Для некоторого общего понимания в различных вариантах коллекций в Magento, пожалуйста, прочитайте эта статья

Некоторые коллекции могут быть изменены с помощью моделей для добавления фильтров, в основном эти модели просто изменяют запрос, выполненный Magento для получения коллекции. Вы можете использовать следующий код для печати на запрос определенной коллекции, чтобы увидеть, что происходит

var_dump((string)$collection->getSelect());

Я думаю, что фильтры, которые вы изложили выше, в значительной степени покрывают все эти фильтры MISC. Создание обзора фильтра, подобного вашему описанию, может быть сделано путем написания собственного расширения, который имеет метод для присоединения к таблицам обзоров к основному запросу коллекции.

Тем не менее, я не уверен, что это будет хорошим курсом действий.

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