वर्तमान श्रेणी की वस्तु से शीर्ष मूल श्रेणी कैसे प्राप्त करें?


14

मुझे वर्तमान श्रेणी की वस्तु से शीर्ष स्तर की मूल श्रेणी (बस डिफ़ॉल्ट श्रेणी के बाद) कैसे मिल सकती है? मैं उपश्रेणियों में दिखाने के लिए उस मूल श्रेणी का श्रेणी नाम और श्रेणी URL चाहता हूं।

  • डिफ़ॉल्ट श्रेणी
    • बिल्ली ए
      • बिल्ली बी
        • बिल्ली सी

मैं वस्तुओं और वस्तुओं Cat Aमें नाम और URL कैसे प्राप्त कर सकता हूं ?Cat BCat C

जवाबों:


22

$category->getPath()पेड़ की जड़ से स्लैश ( /) द्वारा अलग किए गए वर्तमान तक सभी श्रेणियों की आईडी लौटाएगा । यहाँ एक उदाहरण है: 1/2/56/124/543। पहला है 'जड़ की जड़'। दूसरा एक कैटलॉग रूट (डिफ़ॉल्ट श्रेणी) है। उनमें से बाकी सरल श्रेणियां हैं। तो आप ऐसा कुछ कर सकते हैं।

$path = $category->getPath();
$ids = explode('/', $path);
if (isset($ids[2])){
    $topParent = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load($ids[2]);
}
else{
    $topParent = null;//it means you are in one catalog root.
}

अब आप इस तरह नाम और यूआरएल प्राप्त कर सकते हैं:

if ($topParent){
    $name = $topParent->getName();
    $url = $topParent->getUrl();
}

धन्यवाद Marius! getId()मैंने इसे ठीक किया एक टाइपो था । यह पूरी तरह से काम कर रहा है।
MagExt

ठंडा। टाइपो के बारे में खेद है। और सुधार के लिए धन्यवाद।
Marius

नमस्ते, क्या कोई मुझे श्रेणी के पेड़ के लिए आधिकारिक मैगनेटो दस्तावेज़ का उल्लेख कर सकता है?
मेंगट

@ मैं जब श्रेणी का पथ प्राप्त करता हूं तो सभी श्रेणी 1/2 / <प्रतिक्रियाशील श्रेणी ID> मेरी डिफ़ॉल्ट श्रेणी आईडी कहती है। 2. फिर यह 1 क्या है?
बटरफ्लाई

1
@invissible आप सही हैं।
मेरियस

15

इसे इस्तेमाल करे

$level = $this->getCurrentCategory()->getParentCategory()->getLevel();
if($level > 1){                 
    echo $this->getCurrentCategory()->getParentCategory()->getName();
    }
    else{
    echo $this->escapeHtml($_category->getName());
    }

बस इस कोड को कॉपी और पेस्ट करें :)


नमस्ते। आपके उत्तर के लिए धन्यवाद, लेकिन आप 5 महीने लेट हो गए :)
MagExt

9
Magento स्टैक में आपका स्वागत है। यदि आपके पास पहले से कवर नहीं किया गया है, तो आपके पास एक पुराने प्रश्न का उत्तर देने के लिए काफी सही है। उत्तर समुदाय की भलाई के लिए हैं न कि केवल ओपी के लाभ के लिए। कीप आईटी उप! :)
मैकनाब

यह उत्तर गलत होगा यदि आप स्तर 3 और गहरे में हैं, क्योंकि यह पहले जनक को लौटाता है, जबकि प्रश्न शीर्ष एक के बारे में था।
ग्नसेक

हालांकि यह एक पूर्ण समाधान नहीं है, जब तक वांछित स्तर तक नहीं पहुंच जाता है तब तक कोई भी लूप नहीं कर सकता है। मुझे सही दिशा में धकेल दिया।
डोमिनोज़

4

आप वर्तमान श्रेणी पर getParentCategories () का उपयोग कर सकते हैं और फिर अंतिम तत्व प्राप्त करने के लिए array_pop को कॉल कर सकते हैं। दूसरा अंतिम तत्व प्राप्त करने के लिए इसे दो बार करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.