2012-02-23 38 views
4

我已經創建了一個名爲「by_item」的自定義下拉屬性,並增加了一些選項,它像「套房,新娘,牛仔褲」等如何通過magento中的自定義下拉屬性值來過濾所有產品?

<?php // get all products 
     $collection = Mage::getModel('catalog/product')->getCollection(); 
     $collection->addAttributeToSelect('*'); 

     //filter codition 
     $collection->addFieldToFilter(array(
         array('attribute'=>'by_item','eq'=>"Suite"), 
        )); 

     foreach ($collection as $product) { 

     var_dump($product->getData()); 
    } 

    ?> 

它給了什麼:(

但是當我這樣做:

<?php 
    $collection = Mage::getModel('catalog/product')->getCollection(); 
    $collection->addAttributeToSelect('*'); 

    //filter codition 
    //$collection->addFieldToFilter(array(
    //    array('attribute'=>'by_item','eq'=>"Suite"), 
    //   )); 

    foreach ($collection as $product) { 
    echo $product->getName() . "<br />"; 


} 

?> 

它給我的產品的所有名字,我到過很多文章,但在任何問題沒來:(

+0

有什麼我可能會失蹤? – atif 2012-02-23 13:07:55

回答

8

這不起作用,因爲您使用addFieldToFilter()的OR版本(嵌套數組)。

你想要的是AND版本。試試這個:

$collection = Mage::getModel('catalog/product')->getCollection(); 
    ->addAttributeToSelect('*') 
    ->addFieldToFilter('by_item', array('eq' => 'Suite')); 

foreach ($collection as $product) { 
    var_dump($product->debug()); 
} 

編輯

忽視的是,OP在談論一個 「下拉」 屬性(而不是文本框)。

當使用addFieldToFilter()按「下拉」屬性過濾時,您必須使用選項的值/標識號,但不是選項的文本/標籤。

例如,如果您的自定義下拉菜單的屬性有這個選項

id text 
12 Suite 
13 Bridal 
14 Jeans 

,並要通過「套房」來過濾,你這樣的代碼是:

$collection = Mage::getModel('catalog/product')->getCollection(); 
    ->addAttributeToSelect('*') 
    ->addFieldToFilter('by_item', array('eq' => '12')); 

你也可以用你的選項的文字/標籤間接:

$collection = Mage::getModel('catalog/product')->getCollection(); 
    ->addAttributeToSelect('*') 
    ->addFieldToFilter(
     'by_item', 
     array(
      'eq' => Mage::getResourceModel('catalog/product') 
         ->getAttribute('by_item') 
         ->getSource() 
         ->getOptionId('Suite') 
     ) 
    ); 
+0

tnx @Jurgen thelen,但仍然沒有運氣:( – atif 2012-02-23 13:04:42

+0

奇怪,如果我使用這個屬性,我添加到目錄,它工作正常,你是如何添加你的'by_item'屬性? – 2012-02-23 14:03:19

+0

這些是我的選項分別爲: by_item ,Global,Dropdown,No,No,None,All Producs Type,No,Yes,Yes,Yes,Filterable(with results),Yes,No,0,Yes Yes,Yes。 – atif 2012-02-23 14:10:41

相關問題