Produktposition aus Kategorie abrufen


7

Ich implementiere die Schaltfläche " Zurück" / "Weiter" auf der Seite " Produktansicht" nach Inchoos Blog . Es funktioniert gut mit dem Standard-Magento-Design, aber in Mein Thema gibt es ein Problem beim Abrufen der Produktposition aus der Kategorie.

In der view.phtml des Produkts habe ich Code hinzugefügt

<?php $_prev = $this->helper('retailon_productprevnext')->getPreviousProduct(); ?>
<?php $_next = $this->helper('retailon_productprevnext')->getNextProduct(); ?>
<?php if($_prev): ?><a class="product-prev" href="<?php echo $_prev;?>"><?php echo $this->__('< Previous')?></a><?php endif; ?>
<?php if($_next): ?><a class="product-next" href="<?php echo $_next;?>"><?php echo $this->__('Next >')?></a><?php endif; ?>

Der Code für das vorherige Produkt in meinem Helper lautet wie folgt:

     public function getPreviousProduct()
        {
            $prodId = Mage::registry('current_product')->getId();

            $catArray = Mage::registry('current_category');

            if($catArray){
var_dump($catArray); 
                $catArray = $catArray->getProductsPosition();

var_dump($catArray); 
/// Remaining code to return previous product

Der erste Speicherauszug gibt Informationen zum Kategoriearray zurück, während der zweite keinen Wert ausgibt.

Gibt es eine andere Möglichkeit, mit der ich die Produktposition aus dem Kategoriearray ermitteln kann, anstatt sie zu verwenden $catArray = $catArray->getProductsPosition();?

Antworten:


1

Wenn der erste Speicherauszug ein Array zurückgibt, wäre ich erstaunt, wenn der zweite Speicherauszug tatsächlich ausgeführt wird.

$catArray = $catArray->getProductsPosition();

... muss Ihnen einen schwerwiegenden Fehler geben, da Sie eine Funktion für ein Nicht-Objekt aufrufen. Meine Vermutung: Die Produktpositionsdaten werden nicht in die aktuelle Kategorie-Registrierung geladen. Ich würde also versuchen:

$category = Mage::getModel('catalog/category')->load($catArray['entity_id']);
$positions = $category->getProductsPosition();
Zend_Debug::dump($positions);

Ich denke, er könnte den var_dump des OBJECT als Array falsch interpretieren, da var_dump das Ergebnis ausgibt.
ProxiBlue
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.