2012-07-31 82 views
0

如何在类别视图中获取并显示产品标签(在产品上市的环路中)? 我使用的代码(从another question),并把在\程序\设计\前台\ ... \模板\目录\产品\ list.phtml:在Magento的类别页面上获取产品标签?

<?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是给我的错误:

Call to a member function getItems() on a non-object in \app\code\core\Mage\Tag\Block\Product\List.php on line 45.

+0

该块预计将在产品视图中呈现,因为它期望产品对象位于注册表中('Mage :: registry('current_product')')。 – benmarks 2012-07-31 12:19:58

+0

如何更改此代码以在每个产品的类别页面上显示产品标签?我必须初始化什么?我尝试把这个代码放在循环中:<?php foreach($ _productCollection as $ _product):?>' – Ues 2012-07-31 14:10:00

回答

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; 
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)与否,取决于你的目标

相关问题