Я додав один фільтр в Метод _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" у "де пункт"
помилка.
Код (який не працює).
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
Тепер питання .
- Чи буде якийсь вплив на продуктивність, якщо я використовую перший робочий код?
- чи є якийсь інший спосіб обійти правильний фільтр продуктів?
ОНОВЛЕННЯ:
Щоразу, коли я застосовую наступний код і використовую rwdтему, я не отримую жодної помилки. Але щоразу, коли я користувачу defaultтему, я отримую нижче помилку,
Код
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
Помилка
SQLSTATE [42S22]: Стовпець не знайдено: 1054 Невідомий стовпець 'e.type_id' у «де пункт», запит: SELECT FLOOR ((КРУГЛО ((e.min_price) * 1, 2)) / 10) + 1 AS
range, COUNT (*) ЯКcountВІДcatalog_product_index_priceASeINNER JOINcatalog_category_product_indexЯКcat_indexПО 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В ( 'простий' )) І (напр., Веб-сайт_id = '1') І (наприклад, користувацька_група_id = 0) І (напр. Ціна НЕ НУЛЬНА) ГРУПА ПО ПЛАТЕ ((КРУГЛО ((e.min_price) * 1, 2)) / 10) + 1 ЗАМОВЛЕННЯ ПОЛУ ((КРУГЛО ((напр. Ціна) * 1, 2)) / 10) + 1 ASC