2009-11-12 15 views
7

Bir ürün filtresini iki kez bir kategori filtresinden geçirmenin bir yolu olup olmadığını bilen var mı? Gizlenmiş, "öne çıkan bir kategoriye sahibim" kategorisinde, öne çıkan ürünler olarak kullanabilecekleri ürünleri ekliyorum. Şu anda böyle ürünümü koleksiyonunu alıyorum:Magento - Bir ürün koleksiyonunu 2 kategori filtresini kullanarak filtreleme?

$_productCollection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('visibility', $visibility) 
    ->addCategoryFilter('36'); 
    $_productCollection->load(); 

Bu ana sayfasında çalışıyor, ancak kategori sayfalarında, ben özellikli kategoriye göre önce mevcut kategoriye göre sonuçları filtrelemek ve gerekir:

$_productCollection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('visibility', $visibility) 
    ->addCategoryFilter('15') 
    ->addCategoryFilter('36'); 
    $_productCollection->load(); 

Maalesef, yapmak istemediğim temel dosyaları düzenlemeden 2 kategori filtresi gerçekleştiremiyorsunuz.

Bu konuda nasıl bir fikrin var?

Ben

if (stristr($featProductCollection, $currProductCollection)) 
gibi, o hem ikamet eden ürünleri bulmak ve bu kullanmak PHP'nin stristr kullanarak, belki özellikli kategoriye göre ayrı ayrı geçerli kategoriye göre filtrelenmiş bir ve bir tane 2 ürün koleksiyonları kapmak düşünüyordum

Fikir sahibi olan var mı? Sanırım belki de sadece SKU’ların ürünlerini, belki de virgülle ayrılmış bir listeden geri göndermem gerekiyor. Ama bunun için en iyi yoldan emin değilim, ve biraz rahatsız görünüyor.

+0

Bu Magento sorunları ile tremensoudly yardımcı olur Filtreyi uygulamak için kullandığınız PHP kodunun bir örneği 2. Koddaki tüm değişkenler için, nesnenin nesnesinin sınıfını öğrenmesine izin verin Magento geliştiricileri arasında düzgün ve tutarlı bir paylaşılan kelime dağarcığı yok. yardım ile mümkün o zaman bir cevap bulmak. –

+0

Bazı örnek kod eklendi. –

cevap

6

Tamam, aslında başka birinden yardım ile biraz kendim sıralanmış: $ _category Geçerli kategoriyi ise

$_productCollection = Mage::getResourceModel('reports/product_collection') 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('visibility', $visibility) 
    ->addCategoryFilter($_category) 
    ->addAttributeToFilter('category_ids',array('finset'=>'36')) 
    $_productCollection->load(); 

.

+0

Sadece referans için geçerli kategori almak için: '$ _category = Mage :: getModel ('katalog/kategori') -> load (Mage :: registry ('current_category') -> getId()); –

0

emin niçin, ama bu 1.4 çalışmaz, benim çözüm çok güzel değildi ama büyük veritabanı üzerinde de işe: yapabilirsiniz 1. Mesaj eğer

$select = $collection->getSelect(); 
$select->where('(SELECT COUNT(1) FROM `catalog_category_product_index` AS `cat_index` 
WHERE cat_index.product_id=e.entity_id AND cat_index.category_id 
IN('.implode(',',$categories).') AND cat_index.store_id='.$collection->getStoreId().') >= '.count($categories)); 
+3

kötü uygulama, asla magentoda bir şey yapmamak için asla ve asla sql kullanmayın –

İlgili konular