2009-11-12 17 views
7

क्या किसी को पता है कि किसी श्रेणी फ़िल्टर के माध्यम से उत्पाद संग्रह चलाने का कोई तरीका है या नहीं? मेरे पास एक 'फीचर्ड' श्रेणी है, जो छुपा हुआ है, कि मैं उत्पादों को जोड़ता हूं ताकि वे फीचर्ड उत्पादों के रूप में पकड़ सकें। वर्तमान में मैं इस तरह अपने उत्पाद संग्रह हो रही है:Magento - 2 श्रेणी फ़िल्टर का उपयोग कर उत्पाद संग्रह को फ़िल्टर करने के लिए कैसे करें?

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

यह मुखपृष्ठ पर ठीक काम करता है, लेकिन श्रेणी पृष्ठों पर, मैं विशेष रुप से प्रदर्शित श्रेणी के द्वारा वर्तमान श्रेणी के द्वारा परिणामों को फ़िल्टर करने के लिए पहले, और फिर जरूरत है:

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

दुर्भाग्य से, ऐसा लगता है कि आप कोर फाइलों को संपादित किए बिना 2 श्रेणी फ़िल्टर नहीं कर सकते हैं, जो मैं नहीं करना चाहता हूं।

कोई विचार यह कैसे प्राप्त करें?

मैं सोच रहा था कि मैं शायद 2 उत्पाद संग्रह अलग से, एक मौजूदा श्रेणी द्वारा फ़िल्टर, और एक विशेषताओं श्रेणी के द्वारा हड़पने सकता है,,

if (stristr($featProductCollection, $currProductCollection)) 
की तरह तो का उपयोग कर PHP के stristr दोनों में रहने वाले उत्पादों को खोजने के लिए और उन का उपयोग करें

कोई भी विचार? मुझे लगता है कि मुझे शायद एसकेयू के उत्पादों को वापस लौटना होगा, शायद अल्पविराम से अलग सूची में। लेकिन मुझे इस बारे में जाने का सबसे अच्छा तरीका नहीं है, और यह थोड़ा हैकी लगता है।

+0

यह अगर आप कर सकते हैं 1. पोस्ट Magento समस्याओं के साथ मदद करता है tremensoudly फ़िल्टर 2 लागू करने के लिए आप जिस PHP कोड का उपयोग कर रहे हैं उसका एक उदाहरण कोड में किसी भी चर के लिए, लोगों को ऑब्जेक्ट की कक्षा Magento डेवलपर्स के बीच उचित निरंतर साझा शब्दावली नहीं है, इसलिए लोगों को उतना संदर्भ दें सहायता के साथ संभव है तो एक जवाब पता लगाएं। –

+0

कुछ उदाहरण कोड जोड़ा गया। –

उत्तर

6

ठीक है, वास्तव में यह अपने आप मदद का एक सा के साथ किसी से कहीं अनुसार क्रमबद्ध:

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

कहाँ $ _category वर्तमान वर्ग है।

+0

संदर्भ के लिए, वर्तमान श्रेणी प्राप्त करने के लिए: '$ _category = Mage :: getModel ('कैटलॉग/श्रेणी') -> लोड (मैगे :: रजिस्ट्री ('current_category') -> getId()); ' –

0

सुनिश्चित नहीं हैं कि क्यों, लेकिन यह 1.4 में काम नहीं करता, मेरे समाधान बहुत ही सुंदर नहीं था, लेकिन बड़े डेटाबेस पर अच्छी तरह से काम:

$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

सबसे खराब अभ्यास, Magento पर कुछ करने के लिए कभी भी कभी भी एसक्यूएल का उपयोग न करें –

संबंधित मुद्दे