2015-07-22 7 views
7

का उपयोग कर Magento स्तरित नेविगेशन फ़िल्टर मेरे पास इसके साथ जुड़े सरल उत्पादों के साथ कॉन्फ़िगर करने योग्य उत्पाद है। पूर्व। विशेषताओं के साथ जूता सरल पर आकार और चौड़ाई।सरल कॉन्फ़िगर करने योग्य

  1. जब मैं चौड़ाई और आकार से फ़िल्टर करता हूं, तो यह एक कॉन्फ़िगर करने योग्य दिखाता है भले ही उस आकार और चौड़ाई वाला एक साधारण उत्पाद मौजूद न हो।

मैंने इसे पहले बिना किसी समाधान के कई रूपों में पूछा है। क्या कोई इस कार्यक्षमता को ठीक करने के बारे में जानता है? मुझे आश्चर्य है कि यह बॉक्स से कैसे बनाया गया है।

https://magento.stackexchange.com/questions/18001/shop-by-layered-navigation-configurable-products-not-filtering-correctly

Magento - Layered navigation, configurable products, multiple filters active issue

+0

मुझे लगता है कि मेरे पास इसका जवाब है। कॉन्फ़िगर करने योग्य और सरल के लिए उत्पाद दृश्यता कॉन्फ़िगर कैसे की जाती है? क्या वे दोनों सूची/खोज या केवल कॉन्फ़िगर करने योग्य उत्पाद में दिखाई दे रहे हैं? – kais

+0

बस कॉन्फ़िगर करने योग्य। – David

+1

ऐसा लगता है कि यह इंडेक्सिंग को संशोधित किए बिना या प्रदर्शन को गंभीर रूप से नुकसान पहुंचाए बिना आसानी से किया जा सकता है। 'ऐप/कोड/कोर/मैज/कैटलॉग/मॉडल/संसाधन/परत/फ़िल्टर/विशेषता.पीपी :: getCount' स्तरित नेविगेशन लिंक पुनर्प्राप्त किए जा रहे हैं, इंडेक्स टेबल का उपयोग करता है, जिसमें वे उत्पाद शामिल नहीं होते हैं जो दिखाई नहीं दे रहे हैं व्यक्तिगत रूप से। इसलिए आपको संबंधित सरल उत्पादों को प्राप्त करने के लिए कुछ अतिरिक्त प्रश्न जोड़ना होगा और जांचें कि दो (या अधिक) गुणों का संयोजन मौजूद है या नहीं। यह वह जगह है जहां प्रदर्शन मारेगा, खासकर यदि आपके पास बहुत सारे गुण/मूल्य हैं। – kais

उत्तर

-1

आप स्थानीय/दाना निर्देशिका में यह कॉपी करके कोर फ़ाइल को अनुकूलित करने के लिए है।

मान लीजिए कि आपको आकार & रंग बदलना है।

ओपन फाइल app\code\core\Mage\Catalog\Model\Layer.php

निम्न कोड के बाद: -

$collection 
    ->addAttributeToSelect(
    Mage::getSingleton('catalog/config')->getProductAttributes() 
) 
    ->addMinimalPrice() 
    ->addFinalPrice() 
    ->addTaxPercents() 
    ->addUrlRewrite($this->getCurrentCategory()->getId()); 

आप चयनित विशेषता के लिए इसे अनुकूलित करने के लिए है: -

उदाहरण के लिए: -

if(isset($_GET['size'])) 
    { 
     $query = 'SELECT value FROM aw_layerednavigation_filter_option_eav WHERE name="title" AND option_id IN ('.$_GET['size'].')'; 
     $results = $readConnection->fetchAll($query); 
     $sizeLabels = array(); 
     foreach($results as $_r){ 
      $size_labels[] = $_r['value']; 
     } 

     $query = 'SELECT parent_id FROM advance_filter WHERE size IN ('.implode(",",$size_labels).') AND qty > 0'; 

     $results = $readConnection->fetchAll($query); 
     foreach($results as $_r){ 
      $size_prod_Ids[] = $_r['parent_id']; 
     } 
    } 
    $color_prod_Ids = array(); 
    if(isset($_GET['color'])) 
    { 
     $query = 'SELECT value FROM aw_layerednavigation_filter_option_eav WHERE name="title" AND option_id IN ('.$_GET['color'].')'; 
     $results = $readConnection->fetchAll($query); 
     $color_labels = array(); 
     foreach($results as $_r){ 
      $color_labels[] = strtoupper($_r['value']); 
     } 

     $query = 'SELECT parent_id FROM advance_filter WHERE color IN ("'.implode(",",$color_labels).'") AND qty > 0'; 

     $results = $readConnection->fetchAll($query); 
     foreach($results as $_r){ 
      $color_prod_Ids[] = $_r['parent_id']; 
     } 
    } 
    $productIds = array_merge($size_prod_Ids,$color_prod_Ids); 
    if(count($productIds) > 0){ 
     $collection->addAttributeToFilter('entity_id', array('in' => array_unique($productIds))); 
    } 

उम्मीद है कि यह मदद करेगा .. !!

+0

आप अपनी क्वेरी में उन टेबल को कहां से प्राप्त कर रहे हैं? – David

+0

@ डेविड इन टेबल एक विस्तार के हैं लेकिन आप उन्हें Magento कोर टेबल द्वारा प्रतिस्थापित कर सकते हैं। यह केवल आपके मुद्दों को ठीक करने के लिए समझने का मतलब है। –

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