2013-02-04 17 views
7

Metody addVisibleFilterToCollection() i addSaleableFilterToCollection() są opatrzone adnotacją @deprecated, ale nie ma instrukcji dotyczącej tego, jakie podejście zastosować. Kod w rdzeniu Magento nadal używa tych metod, ref Mage_Catalog_Model_Layer::prepareProductCollection().Filtry widoczności i filtry kolekcji są przestarzałe, co należy zamiast tego stosować?

Jakie podejście należy zastosować, dekorując kolekcję odpowiednimi filtrami widoczności/sprzedaży?

Odpowiedz

1

Czy próbowałeś wspólnego podejścia:

addAttributeToFilter('visibility',Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) 

addAttributeToFilter('status',1) 
3

Dla Widzialność istnieje (od Mage_Catalog_Model_Layer :: prepareProductCollection()):

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

który określa katalog i oba filtry do kolekcji .

Dla Status wydaje się nieco dziwny, ale nadal ma sens. W _initSelect w app/code/core/Mage/Katalog/model/zasobów/product/Collection.php Poniższy odbywa:

$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))); 

Ten kod jest wykonywany, gdy robi

Mage::getResourceModel('catalog/product_collection') 

Więc zasadniczo status WŁĄCZONY jest już sprawdzony podczas wykonywania innych podobnych wywołań kolekcji produktów.

0

Jeśli spojrzeć na linię 66

app/code/core/Mage/Catalog/Model/Product/Visibility.php 

Pojawi się przestarzałe połączenia wykomentowane i zastąpione

$collection->setVisibility($this->getVisibleInCatalogIds()); 

Oto jak go używać moja byłaby

$this->_itemCollection->setVisibility($this->getVisibleInCatalogIds()); 
// Deprecated: Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_itemCollection); 

Aby uzyskać więcej informacji o przestarzałych funkcjach, zobacz: http://freegento.com/doc/dc/d5b/_visibility_8php-source.html

Powiązane problemy