0

製品タグの配列があり、これらのタグが割り当てられているすべての製品を検索したいと考えています (IE は、タグ「大」および「赤」を持つすべての製品を返します)。現在、以下を使用していますが、期待どおりに動作しません。

$this->_productCollection = Mage::getResourceModel('tag/product_collection')
    ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes())
    ->addStoreFilter(Mage::app()->getStore()->getId())
    ->addMinimalPrice()
    ->addUrlRewrite()
    ->setActiveFilter();

foreach ($tags as $tagName) {
    $tagId = Mage::getModel('tag/tag')->loadByName($tagName)->getId();
    $this->_productCollection->addTagFilter($tagId);
}

addTagFilter()複数のタグではなく、一度しか機能しないようです。私も試してみました

$this->_productCollection->getSelect()->Where('relation.tag_id=?', $tagId);

ただし、複数を追加してWhere(relation.tag_id=?, $tagId)も機能しないようです。

4

3 に答える 3

0

次に、すべてのタグIDを配列に収集する必要があります

$this->_productCollection->getSelect()->where('relation.tag_id IN (?)', implode(',',$tagId);
于 2013-02-17T22:00:06.160 に答える
0

$prodids =array();// 商品 ID の配列 $tagName = array("Awesomeee","Black");// タグ名

                        foreach ($tagName as $_tagname) {
                            $tagId=Mage::getModel('tag/tag')->loadByName($_tagname)->getId();
                            $collections = Mage::getResourceModel('tag/product_collection')
                                ->addAttributeToSelect('sku')
                                ->addAttributeToSelect('name')
                                ->addTagFilter($tagId);
                            $productIDs = $collections->getData();

                            foreach($productIDs as $_product){
                                array_push($prodids,$_product['product_id']);
                            }
                        }


                        $collection = Mage::getModel('catalog/product')
                            ->getCollection()
                            ->addAttributeToSelect('*')
                            ->addAttributeToFilter('entity_id', array('in' => $prodids));

$_productCollection=$collection;//最終製品コレクション

于 2016-11-26T08:12:18.300 に答える