php – 不推荐使用集合可见性和状态过滤器,应该使用什么?

前端之家收集整理的这篇文章主要介绍了php – 不推荐使用集合可见性和状态过滤器,应该使用什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Mage_Catalog_Model_Product_Status的addVisibleFilterToCollection()和addSaleableFilterToCollection()方法使用@deprecated注释,但是没有关于使用什么方法的指令. Magento核心内部的代码仍在使用这些方法,参考Mage_Catalog_Model_Layer :: prepareProductCollection().

应该使用什么方法用正确的可见性/可销售过滤器来装饰集合?

对于Visibility,有(来自Mage_Catalog_Model_Layer :: prepareProductCollection()):
Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);

这将CATALOG和BOTH过滤器设置为集合.

对于状态,它看起来有点奇怪但仍然有意义.
在app / code / core / Mage / Catalog / Model / Resource / Product / Collection.PHP中的_initSelect中
完成以下操作:

$this->getSelect()
            ->from(array(self::MAIN_TABLE_ALIAS => $this->getEntity()->getFlatTableName()),null)
            ->columns(array('status' => new Zend_Db_Expr(Mage_Catalog_Model_Product_Status::STATUS_ENABLED)));

执行此代码时执行此代码

Mage::getResourceModel('catalog/product_collection')

所以基本上在执行时已经检查了状态ENABLED

$category->getProductCollection()

或类似的产品收集电话.

猜你在找的PHP相关文章