用添加的filtertocollection非常需要解释
-
16-10-2019 - |
题
我花了几天的时间寻找一个简单的教程,以将过滤器添加到产品集合中。如果有人链接到一个好的教程或外观,我将非常感谢。我找到了一个洋红色的皮肤和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 );
我尚未看到使用此方法“添加缩写”的过滤。可以以这种方式使用其他哪些属性?开发人员会使用该方法的原因是什么?主题类别列表没有评论设置。我找到了输出评论的代码,但我认为产品模型中缺少评论。我试过了
Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection );
但这没什么。
我对学习如何钓鱼而不是被送出鱼更感兴趣。
解决方案
可以使用哪些其他属性来添加自定义过滤器?
字面上地 任何. 。这取决于开发人员或平台的需求。
开发人员会使用该方法的原因是什么?
主要是 干燥. 。可能需要在多个上下文中重复过滤条件,并且正确(理智)设计告诉我们,逻辑应将其封装在方法中。
我试过了
Mage::getSingleton( 'review/review' )->addReviewToCollection( $products_collection );
但这没什么。
虽然Magento中有很多看似伏都教的魔法(通常是由活动建筑或 Varien_Object::__call()
, ,这些收集过滤器必须在某个地方实施。我建议在下面搜索 app/code/
找到给定的定义:
$ grep -srl 'n addSaleableFilterToCollection'
其他提示
有关Magento收藏的不同选项的一些一般见解,请阅读 本文
可以通过使用模型添加过滤器来修改某些集合,基本上这些模型只是更改Magento执行的查询以检索集合。您可以使用以下代码打印来查询某个集合以查看发生的事情
var_dump((string)$collection->getSelect());
我认为您上面说明的过滤器几乎涵盖了所有这些MISC过滤器。可以通过编写自己的扩展名来创建像您描述的评论过滤器,该扩展名可以将评论表加入主集合查询。
但是,我不确定这是否是一项良好的行动表现。