2016-03-30 18 views
0

Örneğin, üç farklı kategoride bulunabilecek bir ürünüm var. ID 104, 115 ve 126.Magento: Karşılıklı çoklu kategorilerden ürün koleksiyonu

Şimdi, üç kategoride de bulunması gereken ürünlerden oluşan bir ürün koleksiyonu almak istiyorum. Bu demektir ki, kedi kimliği 104 ve 115 olan bir ürün, 126 eksik olduğundan, koleksiyonda olmamalıdır.

Bunu nasıl yaparım? :-) Ape cevabı

Cevap:

yaklaşımınızı çalıştı. Benim Kodun ilk bölümü aşağıdaki gibidir:

 $_year = $_product->getBbYear(); 
     $_yearInterval = $this->getYearInterval(); 
     $_minYear = $_year - $_yearInterval; 
     $_maxYear = $_year + $_yearInterval; 

     $_minPopularityScore = $this->getMinPopularityScore(); 

     $categories = $_product->getCategoryIds(); 

     $collection = Mage::getModel('catalog/product')->getCollection() 
      ->addAttributeToSelect(Mage::getSingleton('catalog/config')->getProductAttributes()); 

     // EXCLUDE PRODUCT FROM COLLECTION 
     $collection->addAttributeToFilter('entity_id', array('nin' => $_product->getId())); 

     // BUILD PRIMARY COLLECTION 
     if (!$_fallback) { 
      foreach ($categories as $catid) { 
       $collection->addAttributeToFilter('category_id', array('finset' => $catid)); 
      } 

      // FILTER COLLECTION BASED ON RELEASE YEAR 
      $collection->addAttributeToFilter('bb_year', array('gt' => $_minYear)); 
      $collection->addAttributeToFilter('bb_year', array('lt' => $_maxYear)); 

      // FILTER COLLECTION BASED ON POPULARITY SCORE 
      $collection->addAttributeToFilter('bb_popularity_score', array('gt' => $_minPopularityScore)); 

     // BUILD SECONDARY COLLECTION ON FALLBACK 
     } 

Ancak, bir kez döngü ekleyip category_id üzerinde birden fazla filtre ekler, sayfa hale gelmez. Ancak, herhangi bir excecptions alamadım ve ayrıca sistem günlüğü

cevap

0

Sen Ürünün kategorisi kimlikleri üzerinden yineleme ve her kategori için bir filtre ekleyebilirsiniz ... hiçbir yardım içindir: addAttributeToFilter() arayarak

foreach ($product->getCategoryIds() as $id) { 
    $collection->addAttributeToFilter('category_id', array('finset' => $id)); 
} 

Birden çok kez, bir AND koşul

+0

oluşturuyorsunuz. – EibergDK

İlgili konular