在Magento的类别页面上获取产品标签?

时间:2012-07-31 11:48:07

标签: magento tags categories product

如何在类别视图中获取和显示产品标签(在产品列出的循环中)? 我使用了代码(来自another question)并放入\ app \ design \ frontend \ ... \ template \ catalog \ product \ list.phtml:

<?php $_tags = new Mage_Tag_Block_Product_List(); ?>

并在foreach(产品列表中)显示标签:

<?php if($_tags) : ?>
    <?php foreach($_tags->getTags() as $tag):?>
        <span class="tag"><?=$tag->getName()?></span>
    <?php endforeach; ?>
<?php endif; ?>

它无法正常工作,因为实例化$ _tags会给我错误:

  

在非对象中调用成员函数getItems()   第45行\ app \ code \ core \ Mage \ Tag \ Block \ Product \ List.php。

2 个答案:

答案 0 :(得分:2)

我使用此代码,产品的标签循环显示集合中的每个产品:

foreach ($_productCollection as $_product):
    $model=Mage::getModel('tag/tag');
    $tags= $model->getResourceCollection()
        ->addPopularity()
        ->addStatusFilter($model->getApprovedStatus())
        ->addProductFilter($_product->getId())
        ->setFlag('relation', true)
        ->addStoreFilter(Mage::app()->getStore()->getId())
        ->setActiveFilter()
        ->load();

    if(isset($tags) && !empty($tags)):
        foreach($tags as $tag):
            echo '<span class="tag">'.$tag->getName().'</span>';
        endforeach;
    endif;
endforeach;

答案 1 :(得分:2)

我认为这是一个很好的开始:

要查看哪些产品具有特定标签,您可以使用

$tagId = 9;  
$collection = Mage::getResourceModel('tag/product_collection')->addTagFilter($tagId);
?>
    <ul class=\"tags-list tag_overview\">
        <?php foreach ($collection as $_tag): ?>
            <li><a href=\"<?php echo $_tag->getTaggedProductsUrl() ?>\" style=\"font-size:<?php echo $_tag->getRatio()*70+75 ?>%;\"><?php echo $this->htmlEscape($_tag->getName()) ?></a></li>
        <?php endforeach; ?>
    </ul>

你可以使用addTagFilter($tagId)或不使用,取决于你的目标