_getProductCollection()
Sınıf yöntemi Mage_Catalog_Block_Product_List
aşağıdaki gibi bir filtre ekledim .
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection->getSelect()->joinInner(
array('cpe' => 'catalog_product_entity'),
'e.entity_id = cpe.entity_id'
)
->where("cpe.type_id = 'simple'");
...
}
Yukarıdaki kod Magento Sürüm 1.7'den beri iyi çalışıyor. Ama ne zaman aşağıdaki kodu yazsam,
Sütun bulunamadı: 1054 'where cümlesi' içinde bilinmeyen 'e.type_id' sütunu
hata.
Kod (çalışmıyor).
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
Şimdi Sorular .
- İlk çalışma kodunu kullanırsam herhangi bir performans etkisi olur mu?
- uygun bir ürün filtresine sahip olmanın başka bir yolu var mı?
GÜNCELLEME:
Aşağıdaki kodu uyguladığımda ve rwd
tema kullandığımda herhangi bir hata almıyorum. Ama ne zaman kullanıcı default
teması, aşağıdaki hatayı alıyorum,
kod
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
Hata
SQLSTATE [42S22]: Sütun bulunamadı: 1054 'cümlesi' içinde bilinmeyen 'e.type_id' sütunu, sorgu şuydu: SELECT FLOOR ((ROUND ((e.min_price) * 1, 2)) / 10) + 1 AS
range
, COUNT (*) AScount
DANcatalog_product_index_price
ASe
iç birleşimcatalog_category_product_index
GİBİcat_index
AÇIK cat_index.product_id = e.entity_id VE cat_index.store_id = 1 VE cat_index.visibility İÇİNDE (2, 4) VE cat_index.category_id = '3' NEREDE (e
.type_id
IN ( 'basit' )) AND (e.website_id = '1') AND (e.customer_group_id = 0) AND (e.min_price BOŞ DEĞİL) (YUVARLA ((e.min_price) * 1, 2)) / 10) + 1 SİPARİŞ ZEMİNE ((YUVARLA ((e.min_price) * 1, 2)) / 10) + 1 ASC