Pour mon module personnalisé, j'ai un produit par fabricant. Pour le modèle que j'ai copié list.phtml
.
Sur le fichier modèle, la pagination apparaît mais elle montre tous les produits au lieu de la limite sélectionnée par page. Le tri ne fonctionne pas trop.
Comment puis-je le faire fonctionner ??
C'est mon fichier de blocage:
protected function _getProductCollection()
{
if (is_null($this->_productCollection)) {
$layer = $this->getLayer();
$brand_id = $this->getRequest()->getParam('id');
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*');
$collection->addFieldToFilter(array(
array('attribute' => 'manufacturer', 'eq' => $brand_id)
));
}
return $collection;
}
Vous devez également utiliser les filtres suivants:
Ainsi, votre code complet devient:
la source
Ce n'est peut-être pas le cas dans votre cas, mais cela pourrait aider quelqu'un d'autre qui a ce problème. J'ai rencontré ce problème lors du test des modifications personnalisées dans
getProductCollection()
.J'ai pu le corriger en supprimant le code de journalisation que j'avais ajouté qui notait le nombre de la collection retournée. Je crois que tout ce qui interroge les résultats de la charge de collecte dans la
getProductCollection()
méthode forcera la collection à charger ses produits prématurément et empêchera les modifications en aval de l'ordre de collecte et la limitation des résultats d'être appliquées pour les contrôles de pagination.la source
$collection->getSize()
. Il effectuera une séparationSELECT COUNT(*)
avec les filtres de collection actuels.Vous devez remplacer le
_prepareLayout()
et définir les données comme ci-dessous.faites-moi savoir si vous avez des questions.
la source
Accédez à la section Gérer la catégorie et définissez l'option d'ancrage sur "Oui".
la source