2013-02-04 19 views
7

Các phương pháp addVisibleFilterToCollection()addSaleableFilterToCollection() của Mage_Catalog_Model_Product_Status được chú thích bằng @deprecated, nhưng không có hướng dẫn về cách tiếp cận để sử dụng thay thế. Mã trong lõi của Magento vẫn đang sử dụng các phương thức đó, ref Mage_Catalog_Model_Layer::prepareProductCollection().Bộ lọc trạng thái và mức hiển thị của bộ sưu tập không được dùng nữa, những gì nên được sử dụng thay thế?

Phương pháp nào nên được sử dụng để trang trí bộ sưu tập với bộ lọc hiển thị/có thể bán chính xác?

Trả lời

1

Bạn có cố gắng tiếp cận phổ biến:

addAttributeToFilter('visibility',Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH) 

addAttributeToFilter('status',1) 
3

Đối Tầm nhìn có (từ Mage_Catalog_Model_Layer :: prepareProductCollection()):

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

nào đặt DANH MỤC và cả hai bộ lọc để bộ sưu tập .

Đối với Trạng thái có vẻ hơi lạ nhưng vẫn hợp lý. Trong _initSelect trong ứng dụng/code/core/Mage/Catalogue/mẫu/Resource/sản phẩm/Collection.php Sau đây được thực hiện:

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

Mã này được thực hiện khi thực hiện

Mage::getResourceModel('catalog/product_collection') 

Vì vậy, về cơ bản, trạng thái ENABLED đã được kiểm tra khi thực hiện

$category->getProductCollection() 

Hoặc các cuộc gọi thu thập sản phẩm tương tự.

0

Nếu bạn nhìn vào dòng 66

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

Bạn sẽ thấy cuộc gọi bị phản đối là nhận xét ra và thay thế bằng

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

Sau đây là cách tôi sử dụng nó Refactor tôi

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

Nếu bạn muốn biết thêm thông tin về các chức năng không dùng nữa, hãy xem tại đây: http://freegento.com/doc/dc/d5b/_visibility_8php-source.html

Các vấn đề liên quan