Magento получава колекция от категории за продукти - специфични за няколко сайта

Имам настройка за няколко сайта, Magento 1.8, и искам да изброя категориите, в които се съдържа даден продукт, във файла template/catalog/product/view/description.phtml

Искам да направя това за всеки сайт. Например Продуктът се продава на Сайт 1 и Сайт 2...

В обект 1 той е посочен в категория A и категория B

На сайт 2 той е посочен в категория Y и категория Z

Така че в описанието на продукта на Сайт 1 искам да изброя категория A и B, но не Y и Z

И в описанието на продукта на сайт 2 искам да изброя категория Y и Z, но не и A и B.

Това е кодът, който имам досега, но той изброява всички категории, в които продуктът е включен от всички сайтове, как мога да го принудя да изброява само категории от конкретен сайт...

$catIds = $this->getProduct()->getCategoryIds();
$catCollection = Mage::getResourceModel('catalog/category_collection')
                     ->addAttributeToSelect('name')
                     ->addAttributeToSelect('url')
                     ->addAttributeToSelect('*')
                     ->addAttributeToFilter('entity_id', $catIds)
                     ->addIsActiveFilter();

foreach($catCollection as $cat){

    echo "<a href=\"";
    echo $cat->getUrl();
    echo "\">";
    echo $cat->getName();
    echo "</a><br/>";
}

person AdamL    schedule 11.07.2014    source източник


Отговори (1)


Опитайте тази:

$category_ids = $this->getProduct()->getCategoryIds();
foreach ($category_ids as $category_id) {
    $category = Mage::getModel('catalog/category')->load($category_id);
    if ($category->getIsActive()) {
        echo $category->getUrl();
        echo $category->getName();
    }
}

Или в съответствие с оригиналния ви код (и по-малко работа за вашата база данни), можете да опитате този филтър:

->addFieldToFilter('is_active', 1)
person Adelmar    schedule 11.07.2014
comment
зареждането в рамките на foreach цикъл е лоша форма. - person easymoden00b; 01.06.2015