2011-03-31 20 views
5

मेरे पास एक सीएमएस पृष्ठ है जो मैं निम्नलिखित अद्यतन XML कोड के साथ उत्पादों को प्रदर्शित करने जा रहा हूं:मैं वर्तमान श्रेणी आईडी कैसे प्राप्त करूं?

<reference name="content"> 
    <block type="catalog/product_list" name="product_list" template="catalog/product/wholesale-list.phtml"> 
     <action method="setCategoryId"><category_id>191</category_id></action> 
     <action method="setToolbarBlockName"><name>product_list_toolbar</name></action> 
    </block> 
</reference> 

मैंने लेआउट में सेट आईडी प्राप्त करने का प्रयास किया है, लेकिन ऐसी कोई किस्मत नहीं है। मैंने कोशिश की है:

$_category = Mage::registry(‘current_category’); 
$currentCategoryId= $_category->getId(); 

और

$layer = Mage::getSingleton(‘catalog/layer’); 
$_category = $layer->getCurrentCategory(); 
$currentCategoryId= $_category->getId(); 

लेकिन इन तरीकों में से कोई भी काम नहीं करता है। क्या कोई जानता है कि मैं आईडी कैसे प्राप्त कर सकता हूं?

उत्तर

4

इस आज़माया नहीं, लेकिन शायद कुछ इस तरह:

$this->getLayout()->getBlock('product_list')->getCategoryId() 

इस तरह से आप सीधे चर है कि आप XML में ब्लॉक वस्तु पर स्थापित किया है हो रही है।

चीयर्स,
जद

+0

बहुत बहुत शुक्रिया! – Chris

1

क्या आपने सीएमएस पृष्ठ बनाने के बजाय कैटलॉग पेज का लेआउट अपडेट करने पर विचार किया है? मुझे लगता है कि ऐसी स्थितियां हैं जहां आप एक सीएमएस पृष्ठ पसंद कर सकते हैं, लेकिन आप आसानी से एक श्रेणी का लेआउट अपडेट कर सकते हैं, जितना आसान हो उतना आसान है जितना मैगेंटो में मिलता है, जो कि इतना आसान नहीं है :)

लॉगिन व्यवस्थापक बैकएंड, कैटलॉग पर जाएं -> श्रेणियां प्रबंधित करें, फिर इच्छित श्रेणी चुनें, फिर कस्टम डिज़ाइन टैब पर क्लिक करें। कस्टम लेआउट अपडेट फ़ील्ड पर ध्यान दें। यह वह जगह है जहां आप अपना लेआउट अपडेट डाल सकते हैं।

इस श्रेणी के लिए

तो, अगर आप एक विशिष्ट ब्लॉक आप की तरह

<reference name="right"> 
     <remove name="right.permanent.callout" /> 
</reference> 

कौन सा पूरी तरह लेआउट से right.permanent.callout नामित ब्लॉक हटा कुछ कर सकते हैं प्रदर्शित करने के लिए नहीं चाहता था। और फ़ाइल अगर आप सिर्फ उत्पाद अपने विशिष्ट phtml उपयोग करने के लिए सूची को बदलना चाहते हैं आप कुछ की तरह कर सकता है ...

<reference name="product_list"> 
     <action method="setTemplate"><template>catalog/product/wholesale.phtml</template></action> 
</reference> 

आप शायद कैसे लेआउट के बारे में अधिक जानने के लिए गूगल का उपयोग कर सकते हैं।

0

यह मेरे लिए काम करता है:

$layer = Mage::getSingleton('catalog/layer'); 
$_category = $layer->getCurrentCategory(); 
$currentCategoryId= $_category->getId(); 
39

मुझे लगता है कि यह सबसे अच्छा तरीका है;)

Mage::registry('current_category')->getId(); 
+0

यह सही उत्तर है और इस तरह चिह्नित किया जाना चाहिए :) – nickspiel

3

कोड के नीचे का प्रयास करें

Mage::getModel('catalog/layer')->getCurrentCategory()->getId(); 
0

यह मेरे लिए काम किया:

$currentCat = $this->getLayout()->getBlock('category.products')->getCurrentCategory(); 

तो फिर तुम एक वस्तु के रूप में वर्तमान श्रेणी है और आप द्वारा आईडी प्राप्त कर सकते हैं:

$currentCat->getId(); 
संबंधित मुद्दे