2012-07-31 88 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)與否,取決於你的目標

相關問題