【问题标题】:Magento get category collection for product - multi site specificMagento 获取产品的类别集合 - 多站点特定
【发布时间】:2014-09-02 14:02:13
【问题描述】:

我有一个多站点设置,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/>";
}

【问题讨论】:

    标签: php magento magento-1.8


    【解决方案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)
    

    【讨论】:

    • 在 foreach 循环中加载是错误的形式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2013-05-23
    相关资源
    最近更新 更多