Я додав один фільтр в Метод _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_price
ASe
INNER 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