Question

J'ai un certain nombre de collections qui ont des blocs que la sortie du contenu à des itinéraires frontend (Mon compte, les caractéristiques de frontend).

J'ai besoin paginer certains d'entre eux. Je sais que les méthodes de paginations existent sur les collections, mais il est un moyen de gérer la partie querystring ainsi? Je déteste réinventer la roue ...

Était-ce utile?

La solution

Il est en fait assez simple.

Dans le bloc principal qui appelle votre collection à rendre, ajouter ce qui suit:

protected function _prepareLayout()
{
    parent::_prepareLayout();

    $pager = $this->getLayout()->createBlock('page/html_pager', 'your.custom.blockname.pager')
        ->setCollection($this->getCollection()); //call your own collection getter here, name it something better than getCollection, please; *or* your call to getResourceModel()
    $this->setChild('pager', $pager);
    return $this;
}

public function getPagerHtml()
{
    return $this->getChildHtml('pager');
}

Par défaut cela limitera votre collection à 10 à-un-temps! Doux !!

Ensuite, à partir de votre phtml de modèle associé à votre collection, ajoutez les commandes de téléavertisseur en faisant écho à la sortie de notre autre méthode, getPagerHtml:

<?php echo $this->getPagerHtml(); ?>

Source: Expérience. Et aussi, le bloc sales/order_history dans Magento.

Autres conseils

J'ai utilisé cette classe à l'intérieur de bloc (C'est de Mage_Catalog_Block_Navigation):

$pager = new Mage_Page_Block_Html_Pager();
$pager->setLimit(100)->setCollection(...getCollection());
$this->setChild('pager', $pager);
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top