Domanda

per scopi di progettazione ho bisogno di recuperare il percorso della categoria di prodotti di ogni singolo prodotto. Sono stato in grado di recuperare il percorso della categoria ed esplodere il primo livello utilizzando il seguente codice nel catalogo / prodotto / list.phtml:

<?php $currentCat = Mage::registry('current_category'); ?>
<?php $exp = explode("/", $currentCat->getPath());?>

d'altra parte ho cercato di recuperare categoria percorso di ogni esposizione dei prodotti nei risultati di ricerca al fine di visualizzare colori diversi per ogni prodotto in base alla loro categoria principale, ma senza buoni risultati.

qualsiasi aiuto sarà apprezzato. Con rispetto.

È stato utile?

Soluzione

Il seguente codice vi darà un array a partire dalla categoria principale (id: 1)., Poi la categoria negozi di radice e quindi il percorso verso il basso per la categoria il prodotto è in

$category = Mage::getModel('catalog/product')->load([id])->getCategory();
$path = explode('/', $category->getPath());

Come sempre, questo è abbastanza un pezzo 'pesante' di codice solo per la progettazione. Si potrebbe essere meglio di estendere la raccolta del prodotto nella classe Mage_Catalog_Block_Product_List, metodo _getProductCollection unendo la tabella catalog_category_entity alla query di raccolta e aggiungendo il campo path ai campi di selezione

Altri suggerimenti

Per ottenere il percorso dal catalogo Root

public function getCategoryPath($sku)
{
    $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku);

    $pathArray = array();
    $collection1 = $product->getCategoryCollection()
        ->setStoreId(Mage::app()->getStore()->getId())
        ->addAttributeToSelect('path')
        ->addAttributeToSelect('is_active');


    foreach($collection1 as $cat1){            
        $pathIds = explode('/', $cat1->getPath());            
        $collection = Mage::getModel('catalog/category')->getCollection()
            ->setStoreId(Mage::app()->getStore()->getId())
            ->addAttributeToSelect('name')
            ->addAttributeToSelect('is_active')
            ->addFieldToFilter('entity_id', array('in' => $pathIds));

        $pahtByName = '';
        foreach($collection as $cat){                
            $pahtByName .= '/' . $cat->getName();
        }

        $pathArray[] = $pahtByName;

    }

    return $pathArray;
}

Ho usato seguente codice per trovare categorie di prodotti per la mollica di pane in fase di atterraggio alla pagina del prodotto al di fuori del sito. (Quando non riesce if ($category = $this->getCategory()))

$cate è l'ultimo prodotto della categoria è stato trovato in ed è possibile utilizzare le funzioni di categoria per ottenere il percorso.

Magento / app / code / core / Mage / Catalogo / Helper / Data.php

Aggiungi dove si trova prodotto per chi proviene da qualche altra parte di categoria

Ha bisogno FIX: TODO: verifica se il prodotto ha categoria prima di loop

if(empty($path)) {
    if ($this->getProduct()) {
        $collection =  Mage::getModel('catalog/category')->getCollection()
            ->setStoreId(Mage::app()->getStore()->getId())
            ->addAttributeToSelect('name')
            ->addAttributeToSelect('is_active')
            ->addFieldToFilter('entity_id', array('in' => $this->getProduct()->getCategoryIds()));
        $categories = array();
        $cate = "";
        foreach ($collection as $category) {
            $cate = $category;
            $pathInStore = $category->getPathInStore();
            $pathIds = array_reverse(explode(',', $pathInStore));
        }
        $categories = $cate->getParentCategories();
        if($categories) {
        foreach($pathIds as $categoryId) {
                $path['category'.$categoryId] = array(
                    'label' => $categories[$categoryId]->getName(),
                    'link' => $this->_isCategoryLink($categoryId) ? $categories[$categoryId]->getURL() : ''
                );
        }}
    }
}

Grazie per le risposte che mi hanno aiutato a raggiungere questo obiettivo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top