Die erste Sammlung posten, ohne zu brechen pager

Ich habe eine Frage zu diesem früheren, aber ich habe Sie jetzt weitere Informationen an und ich dachte, es am besten posten Sie eine neue ein, anstatt ändern (sorry, wenn das nicht die richtige Protokoll). Finden Sie meine ursprüngliche Frage hier.

Jedenfalls, das erste problem war, dass ich wollte, zu inspizieren, um das erste Element in einer Sammlung in der List.php Klasse nur nach der Einstellung der Sammlung, so dass ich könnte kratzen, die Kategorie und Bewertungen anzeigen. Das war alles, basierend auf einem benutzerdefinierten Modul, so gab es eine Menge von Variablen. Ich habe seitdem versucht es auf eine Standard-Magento-sample-store und nur Hinzugefügt EINE Linie zu app/code/core/Mage/catalog/Block/Product/List.php zu brechen, den pager. Hier sind die details. Wenn Sie irgendwelche Ideen, warum dies geschieht, bitte lassen Sie mich wissen, wie ich bin stecken

Öffnen Sie zunächst app/code/core/Mage/catalog/Block/Product/List.php und suchen Sie die _getProductCollection Funktion. Am Ende der if (is_null...) block, fügen Sie $_foo123 = $this->_productCollection->getFirstItem(); so haben Sie eine Funktion, die wie folgt aussieht:

protected function _getProductCollection()
{
    if (is_null($this->_productCollection)) {
        $layer = $this->getLayer();
        /* @var $layer Mage_Catalog_Model_Layer */
        if ($this->getShowRootCategory()) {
            $this->setCategoryId(Mage::app()->getStore()->getRootCategoryId());
        }

        //if this is a product view page
        if (Mage::registry('product')) {
            //get collection of categories this product is associated with
            $categories = Mage::registry('product')->getCategoryCollection()
            ->setPage(1, 1)
            ->load();
            //if the product is associated with any category
            if ($categories->count()) {
                //show products from this category
                $this->setCategoryId(current($categories->getIterator()));
            }
        }

        $origCategory = null;
        if ($this->getCategoryId()) {
            $category = Mage::getModel('catalog/category')->load($this->getCategoryId());
            if ($category->getId()) {
                $origCategory = $layer->getCurrentCategory();
                $layer->setCurrentCategory($category);
            }
        }
        $this->_productCollection = $layer->getProductCollection();

        $this->prepareSortableFieldsByCategory($layer->getCurrentCategory());

        if ($origCategory) {
            $layer->setCurrentCategory($origCategory);
        }

        //THIS LINE BREAKS THE PAGER
        $_foo123 = $this->_productCollection->getFirstItem();
    }

    return $this->_productCollection;
}

Nun, gehen Sie einfach zu einem Produkt-Liste, das die Klasse verwendet (Kategorie Ansicht, zum Beispiel) und du wirst sehen was ich meine. Egal was Sie wählen, unter Zeigen, XX pro Seite in der Symbolleiste, es wird immer zeigen Sie alle Elemente in der Liste. Wenn Sie kommentieren, dass $_foo123... Zeile, funktioniert es einwandfrei.

Was gibt??

P. S. ich weiß, ich bin eigentlich nicht zum Bearbeiten von core-Dateien...dies ist nur ein Beispiel 🙂

InformationsquelleAutor BrianVPS | 2011-06-15

Schreibe einen Kommentar