2013-01-11 9 views
11

यदि श्रेणी सक्रिय है, तो मैं सभी श्रेणियों और उपश्रेणियों को कैसे प्राप्त कर सकता हूं, लेकिन "नेविगेशन मेनू में शामिल करें" को "नहीं" पर सेट किया गया है?मैं सभी श्रेणियों और उपश्रेणियों को कैसे प्राप्त कर सकता हूं?

मैं इस का उपयोग करने का प्रयास करें:

<?php 
$_categories = Mage::getBlockSingleton('catalog/navigation'); 
foreach ($_categories->getStoreCategories() as $_category) { 
$category = Mage::getModel('catalog/category'); 
$category->load($_category->getId()); 
$subcategories = explode(',', $category->getChildren()); 
?> 
<dl> 
<dt><?php echo $this->htmlEscape($_category->getName()); ?></dt> 
<dd> 
<ol> 
<?php 
foreach ($subcategories as $subcategoryId) { 
$category->load($subcategoryId); 
echo '<li><a href="' . $category->getURL() . '">' . $category->getName() . '</a></li>'; 
} 
?> 
</ol> 
</dd> 
</dl> 
<?php 

} 
?> 

लेकिन अगर एक वर्ग की 'नव मेनू में शामिल करें "" नहीं ", यह पहले पन्ने पर नहीं दिखाया जाएगा है!

उत्तर

29

आपको केवल एक चीज बदलने की जरूरत है! जब आप $_categories = Mage::getBlockSingleton('catalog/navigation') पर कॉल करते हैं तो आप वास्तव में catalog/navigation मॉडल से श्रेणियों को विशेष रूप से पकड़ रहे हैं - "गैर नेविगेशन" श्रेणियों से फ़िल्टरिंग पहले से ही पूर्ण हो चुकी है। इसके बजाय, हम यकीन है कि हम साइट पर सभी श्रेणियों उपलब्ध करना सुनिश्चित कर सकें catalog/category मॉडल से एक संग्रह हड़पने कर सकते हैं:

$categories = Mage::getModel('catalog/category') 
     ->getCollection() 
     ->addAttributeToSelect('*') 
     ->addIsActiveFilter(); 

ध्यान दें कि मैं addIsActiveFilter() उपयोग कर रहा हूँ यकीन है कि हम केवल श्रेणियों है कि वर्तमान में सक्रिय हैं/सक्षम करना सुनिश्चित कर सकें।

+1

धन्यवाद का उपयोग करना पसंद है, तो आप वास्तव में मदद की! दिखाता है कि क्या आवश्यक है, तो मैं इसे लाऊंगा जैसा कि यह होना चाहिए! – Oleg

3

मैं सूची/श्रेणी सहायक

$helper = Mage::helper('catalog/category'); 
$categories = $helper->getStoreCategories(); 
संबंधित मुद्दे

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