ฉันได้เพิ่มหนึ่งตัวกรองในวิธี_getProductCollection()
การเรียนMage_Catalog_Block_Product_List
ดังต่อไปนี้
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'");
...
}
โค้ดด้านบนนี้ใช้งานได้ดีตั้งแต่ Magento เวอร์ชั่น 1.7 แต่เมื่อใดก็ตามที่ฉันเขียนโค้ดต่อไปนี้มันจะให้
ไม่พบคอลัมน์: 1054 คอลัมน์ที่ไม่รู้จัก 'e.type_id' ใน 'where clause'
ความผิดพลาด
รหัส (ซึ่งไม่ทำงาน)
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
ตอนนี้คำถาม
- จะมีผลกระทบต่อประสิทธิภาพหรือไม่หากฉันใช้รหัสการทำงานแรก
- มีวิธีอื่นอีกไหมที่จะหลีกเลี่ยงให้มีตัวกรองผลิตภัณฑ์ที่เหมาะสม?
UPDATE:
เมื่อใดก็ตามที่ฉันใช้รหัสต่อไปนี้และใช้rwd
ชุดรูปแบบฉันไม่ได้รับข้อผิดพลาดใด ๆ แต่เมื่อใดก็ตามที่ฉันใช้default
ธีมฉันได้รับข้อผิดพลาดด้านล่าง
รหัส
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
ความผิดพลาด
SQLSTATE [42S22]: ไม่พบคอลัมน์: 1054 คอลัมน์ที่ไม่รู้จัก 'e.type_id' ใน 'where clause', การสืบค้นคือ: SELECT FLOOR ((ROUND ((e.min_price) * 1, 2)) / 10) + 1 AS
range
, COUNT (*) AScount
จากcatalog_product_index_price
ASe
INNER JOINcatalog_category_product_index
AScat_index
ON cat_index.product_id = e.entity_id และ cat_index.store_id = 1 และ cat_index.visibility ใน (2, 4) และ cat_index.category_id = '3' WHERE (e
.type_id
IN ( 'ง่าย' )) และ (e.website_id = '1') และ (e.customer_group_id = 0) และ (e.min_price ไม่เป็นโมฆะ) กลุ่มตามพื้น ((รอบ (e.min_price) * 1, 2)) / 10) + 1 ORDER BY FLOOR ((รอบ ((e.min_price) * 1, 2)) / 10) + 1 ASC