Question

pour la conception des fins je dois récupérer le chemin de la catégorie de produit de chaque produit unique. J'ai pu récupérer le chemin de la catégorie et exploser le premier niveau en utilisant le code suivant dans catalogue / produit / list.phtml:

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

d'autre part j'ai essayé de récupérer chemin de la catégorie de chaque affichage du produit dans les résultats de recherche afin d'afficher différentes couleurs pour chaque produit en fonction de leur catégorie mais sans bons résultats.

toute aide sera appréciée. brgds.

Était-ce utile?

La solution

Le code suivant vous donnera un tableau en commençant par la catégorie racine (id: 1)., Puis la stocke catégorie racine, puis le chemin vers le bas pour la catégorie de votre produit est en

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

Comment jamais, cela est tout à fait un morceau de « lourd » de code juste pour la conception. Vous pourriez être mieux d'étendre la collection de produits dans la classe Mage_Catalog_Block_Product_List, méthode _getProductCollection se joindre à la table catalog_category_entity à la requête de collecte et en ajoutant le champ path aux champs sélectionner

Autres conseils

Pour obtenir le chemin du catalogue racine

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

je code suivant pour trouver des catégories de produits pour mie de pain lors de l'atterrissage à la page du produit site extérieur. (Lorsque if ($category = $this->getCategory()) échoue)

$cate est le dernier produit de la catégorie a été trouvé et vous pouvez utiliser les fonctions de la catégorie pour obtenir le chemin.

magento / app / code / core / Mage / Catalogue / Helper / Data.php

Ajouter où le produit se trouve en venant d'ailleurs que la catégorie

A besoin CORRECTIF: TODO: vérifier si le produit a la catégorie avant le bouclage

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

Merci pour vos réponses qui m'a aidé à y parvenir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top