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