다음과 같이 _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 'where 절'에서 알 수없는 열 '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 'where 절'에서 알 수없는 열 'e.type_id', 쿼리는 다음과 같습니다. SELECT FLOOR ((ROUND ((e.min_price) * 1, 2)) / 10) + 1 AS
range
, COUNT (*) AScount
FROMcatalog_product_index_price
ASe
INNER JOINcatalog_category_product_index
AScat_index
ON cat_index.product_id = e.entity_id AND cat_index.store_id = 1 AND cat_index.visibility의 IN (2, 4) = cat_index.category_id '3'WHERE (e
.type_id
IN ( '단순한' )) AND (e.website_id = '1') AND (e.customer_group_id = 0) AND (e.min_price가 NULL이 아님) GROUP BY FLOOR ((ROUND ((e.min_price) * 1, 2)) / 10) + 1 ORDER BY FLOOR ((라운드 ((e.min_price) * 1, 2)) / 10) + 1 ASC