Frage

Ich habe eine Reihe von Sammlungen, die Blöcke haben, die den Inhalt an Frontend -Routen ausgeben (mein Konto, Frontend -Funktionen).

Ich muss einige davon paginieren. Ich weiß, dass in Sammlungen Paginierungsmethoden vorhanden sind, aber gibt es auch eine Möglichkeit, den Abfrageteil zu bewältigen? Ich hasse es, das Rad neu zu erfinden ...

War es hilfreich?

Lösung

Es ist eigentlich ganz einfach.

Fügen Sie im Hauptblock, der Ihre Sammlung zum Rendern aufruft, Folgendes hinzu:

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');
}

Standardmäßig beschränken dies Ihre Sammlung auf 10-at-a-Time! Süss!!

Fügen Sie dann aus Ihrer Vorlage, die Ihrer Sammlung zugeordnet ist, aus der Pagersteuerung hinzu, indem Sie die Ausgabe unserer anderen Methode widerspiegeln. getPagerHtml:

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

Quelle: Erfahrung. Und auch die sales/order_history Block in Magento.

Andere Tipps

Ich habe diese innerhalb der Blockklasse verwendet (es ist mage_catalog_block_navigation):

$pager = new Mage_Page_Block_Html_Pager();
$pager->setLimit(100)->setCollection(...getCollection());
$this->setChild('pager', $pager);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top