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();?

amitshree
quelle

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);
simonthesorcerer
quelle
Ich denke, er könnte den var_dump des OBJECT als Array falsch interpretieren, da var_dump das Ergebnis ausgibt.
ProxiBlue