Ho aggiunto un filtro in Metodo _getProductCollection()
della classe Mage_Catalog_Block_Product_List
come segue.
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'");
...
}
Il codice sopra funziona alla versione 1.7 di Magento. Ma ogni volta che scrivo il seguente codice, dà
Colonna non trovata: 1054 Colonna sconosciuta 'e.type_id' in 'dove clausola'
errore.
Il codice (che non funziona).
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
Ora le domande .
- Ci saranno conseguenze sulle prestazioni se uso il primo codice funzionante?
- c'è un altro modo per aggirare un filtro prodotto adeguato?
AGGIORNARE:
Ogni volta che applico il seguente codice e utilizzo il rwd
tema, non ricevo alcun errore. Ma ogni volta che utilizzo il default
tema utente , visualizzo l'errore di seguito,
Codice
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
Errore
SQLSTATE [42S22]: Colonna non trovata: 1054 Colonna sconosciuta 'e.type_id' in 'dove clausola', la query era: SELECT FLOOR ((ROUND ((e.min_price) * 1, 2)) / 10) + 1 AS
range
, COUNT (*) AScount
FROMcatalog_product_index_price
ASe
INNER JOINcatalog_category_product_index
COMEcat_index
ON cat_index.product_id = e.entity_id E cat_index.store_id = 1, cat_index.visibility IN (2, 4) E cat_index.category_id = '3' WHERE (e
.type_id
IN ( 'semplice' )) AND (e.website_id = '1') AND (e.customer_group_id = 0) AND (e.min_price NON È NULL) GRUPPO PER PIANO ((ROUND ((e.min_price) * 1, 2)) / 10) + 1 ORDINA PER PIANO ((ROUND ((e.min_price) * 1, 2)) / 10) + 1 ASC