0

如何在类别视图上获取和显示产品标签(在产品列表的循环中)?我使用了代码(来自另一个问题)并放入了 \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 给了我错误:

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

4

2 回答 2

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)或不使用,取决于你的目标

于 2012-12-12T16:01:08.253 回答
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;
于 2012-08-02T09:26:10.917 回答