Magento - liste.phtml filtrage de la collection de produits de ne pas donner la pagination est correcte

Je suis en train de filtrer la liste.phtml pour répondre à mes besoins, qui est à seulement montrer des produits à base d'une valeur de l'attribut. Le code d'origine pour charger le produit de la collecte est:

$_productCollection=$this->getLoadedProductCollection();
$_helper = $this->helper('catalog/output');

Pour faire le filtrage, j'ai le code:

$_productCollection=$this->getLoadedProductCollection();

$cat_id = Mage::getModel('catalog/layer')->getCurrentCategory()->getId();
$_productCollection = Mage::getResourceModel('catalog/product_collection')
   ->addAttributeToFilter('language', array('eq' => array('English')))
   ->addAttributeToSelect('*')
   ->addCategoryFilter(Mage::getModel('catalog/category')->load($cat_id));


$_helper = $this->helper('catalog/output');

Cela fonctionne toutefois, la pagination et les éléments nombre total (généré à partir de la barre d'outils.phtml et pager.phtml sont incorrectes. Par exemple, le produit original de la collection a la bonne pagination de 7 pages et 10 produits par page.

Cependant quand j'utilise le filtre ci-dessus de la pagination montre les mêmes 7 pages et tous les filtrée livre sur une page (il y a 18 livres en anglais, donc 7 pages du 18 livres qui sont dupliqués).

Svp quelqu'un peut m'aider dans la résolution de ce problème de pagination.

Grâce.

Le code SQL de la collection est comme suit:

 SELECT `e`.*, `at_language`.`value` AS `language`, `cat_index`.`position`
 AS `cat_index_position` FROM `catalog_product_entity`
 AS `e` INNER JOIN `catalog_product_entity_varchar`
 AS `at_language` ON (`at_language`.`entity_id` = `e`.`entity_id`) 
 AND (`at_language`.`attribute_id` = '1002') 
 AND (`at_language`.`store_id` = 0) INNER JOIN `catalog_category_product_index`
 AS `cat_index` ON cat_index.product_id=e.entity_id AND cat_index.store_id=1 
 AND cat_index.visibility IN(2, 4) AND cat_index.category_id='38' 
 AND cat_index.is_parent=1 WHERE (at_language.value = 'English')
  • pourriez-vous poster le SQL généré pour votre collection? Vous pouvez l'obtenir avec $_productCollection->getSelect()->__toString()
  • J'ai édité la question afin de montrer le SQL qui est à la base de la collection de code dans votre réponse, Merci.
  • voir le plus de ma réponse
InformationsquelleAutor user1669256 | 2013-01-29