2015-09-28 8 views
8

मुझे एक बहुत ही अनोखी समस्या है।श्रेणी के आधार पर उत्पादों को सॉर्ट करें (मूल श्रेणी दृश्य में)

मैं एक दुकान जहां इस

संग्रह की तरह एक सेटअप में अनेक श्रेणियां होती हैं
.... शॉर्ट्स (उत्पादों: - लाल और छोटे 20 - छोटे 16 BLUE) है
... । पोशाक (उत्पादों: नीला: 16, ग्रीन 19)

अगर मैं दुकान में संग्रह को खोलने मैं इस

की तरह आइटम प्राप्त 363,210

ब्लू 16
ग्रीन 19
छोटे 16 - लाल
छोटे 20 - नीले

मैं अपने उत्पादन इस तरह रहना चाहता हूँ:

छोटे 16 - लाल
छोटे 20 - नीला
ब्लू 16
ग्रीन 1 9

मुझे यह परिणाम कैसे प्राप्त हो सकता है? मुझे खेद है मैं किसी भी कोड प्रदान नहीं किया है हूँ, मैं पता नहीं है के रूप में मैं इस

उत्तर

0

1 catalog_block_product_list_collection घटना पर पर्यवेक्षक बनाने

<events> 
     <catalog_block_product_list_collection> 
      <observers> 
       <namespace_module> 
        <class> namespace_module/observer</class> 
        <method>collectionList</method> 
       </namespace_module > 
      </observers> 
     </catalog_block_product_list_collection> 
    </events> 

2 वर्ग Namespace_Module_Model_Observer

class Namespace_Module_Model_Observer 
{ 
    public function collectionList($observer) 
    { 
     /** @var Mage_Catalog_Model_Category $currentCategory */ 
     $currentCategory = Mage::registry('current_category'); 

     $children = Mage::getResourceModel('catalog/category')->getChildrenIds($currentCategory); 
     if (!$children) { 
      return $this; 
     } 
     $children = implode(',', $children); 
     /** @var Mage_Catalog_Model_Resource_Product_Collection $collection */ 
     $collection = $observer->getCollection(); 

     $attr = $this->_getAttribute('name'); 

     $collection->getSelect() 
      ->join(
       array('c' => $this->_getResource()->getTableName('catalog_category_product')), 
       "c.product_id = e.entity_id AND c.category_id IN ($children)", 
       array('child_category_id' => 'category_id') 
       ) 
      ->join(
       array('ac' => $this->_getResource()->getTableName('catalog_category_entity_' . $attr['backend_type'])), 
       "c.category_id = ac.entity_id AND ac.attribute_id = {$attr['attribute_id']}", 
       array('child_category_name' => 'value') 
      ) 
     ->order('child_category_name DESC'); 

     return $this; 
    } 

    protected function _getAttribute($attributeCode, $static = true, $entityTypeId = 3) 
    { 
     $readAdapter = $this->_getReadAdapter(); 
     $select = $readAdapter->select() 
      ->from($this->_getResource()->getTableName('eav/attribute')) 
      ->reset(Zend_Db_Select::COLUMNS) 
      ->columns(array('attribute_id', 'backend_type')) 
      ->where('entity_type_id = ?', $entityTypeId) 
      ->where('attribute_code = ?', $attributeCode) 
      ->limit(1); 
     if (!$static) { 
      $select->where('backend_type != ?', 'static'); 
     } 

     $entityId = $readAdapter->query($select)->fetch(); 
     return $entityId; 
    } 

    protected function _getResource() 
    { 
     return Mage::getSingleton('core/resource'); 
    } 

    protected function _getReadAdapter() 
    { 
     return $this->_getResource()->getConnection('core_read'); 
    } 
} 
यहाँ

हम बच्चे श्रेणी नाम से संग्रह प्रकार सेट बनाते हैं, आप इसे करने के लिए श्रेणी आईडी बदलने के लिए या करने के लिए जोड़ सकते हैं किसी भी श्रेणी विशेषता को संग्रहित करें और इस विशेषता द्वारा क्रमबद्ध करें

->order('child_category_name DESC'); 

यह सिर्फ नमूना है कि बाल श्रेणियों द्वारा उत्पाद संग्रह को कितनी तेज़ी से सॉर्ट करें, निश्चित रूप से आप टूलबार में विकल्प जोड़ सकते हैं और क्रमशः

0

मुझे लगता है कि आप व्यवस्थापक से एक विशेषता बनाना चाहिए,

कैसे प्राप्त करना चाहिए से Admin-> सूची एक विशेषता custom_order बनाएं -> विशेषताएं-> गुण प्रबंधित करें

सेट उत्पाद प्रविष्टि में प्रयुक्त = हाँ उत्पाद प्रविष्टि में छंटाई के लिए प्रयुक्त = हाँ

व्यक्तिगत रूप से प्रत्येक उत्पाद के लिए स्थिति मान निर्दिष्ट करें।

फिर व्यवस्थापक-> कैटलॉग-> श्रेणियां प्रबंधित करें पर जाएं।

एक वर्ग का चयन करें, प्रदर्शन सेटिंग टैब पर क्लिक करें, "करके डिफ़ॉल्ट लिस्टिंग क्रमबद्ध उत्पाद" custom_order

+0

और इस सॉर्टिंग के लिए कोड कैसे बनाऊं? –

+0

आपको कोड करने की आवश्यकता नहीं है। इसके परिणामस्वरूप डिफ़ॉल्ट रूप से आरोही क्रम के रूप में परिणाम प्राप्त हो रहा है। – Supravat

+0

जब मैंने देखा कि आपने क्या जवाब दिया है तो मुझे थक गया होगा - क्षमा करें। यह उत्पाद बदलते समय काम की तरह लगता है, इसे कस्टम विशेषता या कुछ और कस्टम के साथ बनाने का एक तरीका होना चाहिए –

1

मैं इस के समान कुछ करना

सेट।

Magento व्यवस्थापक के भीतर आप मैन्युअल रूप से ऑर्डर सेट कर सकते हैं जिसमें उत्पाद श्रेणी पृष्ठ पर प्रदर्शित होते हैं।

  • सूची -> श्रेणियाँ
  • "श्रेणी उत्पाद" टैब के अंतर्गत (अपने वर्ग का चयन करें) आप पर सबसे दाएं सभी वर्गों को सौंपा उत्पादों, जिसमें एक तालिका देखेंगे वहाँ एक स्तंभ कहा जाता है प्रबंधित करें " पद"। यहां वह जगह है जहां आप एक int मान दर्ज करते हैं, श्रेणी पृष्ठ पर उत्पाद जितना अधिक होगा उतना ही कम होगा।
संबंधित मुद्दे