2013-03-29 1 views
5

У меня есть идентификатор категории .Я получил идентификатор из этого кодапроверка категории имеют категорию ребенка или нет в Magento

<?php echo $current_catid=$this->getCategoryId(); ?> 

Теперь я хочу, чтобы проверить, что эта категория имеет категорию ребенка или нет.

если у него есть ребенок, он отобразит изображение, имя и URL-адрес дочерней категории.

ответ

4

Пожалуйста, попробуйте это, его рабочий штраф в моем конце

<?php 
$parentCategoryId = 10; 
$categories = Mage::getModel('catalog/category')->load($parentCategoryId)->getChildren(); 
$catArray = explode(',', $categories); 
foreach($catArray as $child) 
{ 
$_child = Mage::getModel('catalog/category')->load($child); 
echo $_child->getName() . '<br />'; 
echo $_child->getUrl() . '<br />'; 
echo $_child->getDescription() . '<br />'; 
} 
?> 
+0

Спасибо, человек, ты герой –

8

Если у Вас есть current_category идентификатор то категория нагрузки

$category = Mage::getModel('catalog/category')->load(id);

и проверить count($category->getChildren());

Другие методы для подсчета детей

count($category->getChildrenNodes()); 

$category->getChildrenCount(); 

Таким образом, вы можете проверить, если категория имеет детей или нет.

getChildren() методы дают вам идентификатор категории детей и на основе идентификатора вы можете получить изображение категории и название категории.

+0

я попробовал ваш код, но его не рабочий. всегда показывает 1, когда я считаю детей, но у него есть 2 дочерние категории . Я ставлю этот код $ current_catid = $ this-> getCategoryId(); $ category = Mage :: getModel ('catalog/category') -> load ($ current_catid); количество эхо ($ category-> getChildren()); –

+0

Попробуйте использовать методы getChildre() -> count() или вы также можете использовать count ($ category-> getChildrenNodes()); для категории счетчиков – Mufaddal

+0

Я пробовал это, как вы мне сказали $ category-> getChildren() -> count(); его давая мне фатальную ошибку –

1

староват, но я искал того же раствора и @ раствор Mufaddal не работал. Затем я нашел getChildrenCategories().

$_category = Mage::registry('current_category'); 
count($_category->getChildrenCategories()); 
0

у вас есть еще один вариант, чтобы проверить категории ребенка категория существует или нет ..

<?php 
    $currentCategoryId = Mage::registry('current_category')->getId(); 
    $collection = Mage::getModel('catalog/category')->getCollection() 
     ->addAttributeToFilter('is_active', 1) //only active categories 
     ->addAttributeToFilter('parent_id', $currentCategoryId); 
    $currentCat = Mage::registry('current_category'); 
    $subCategories = Mage::getModel('catalog/category')->load($currentCat->getParentId())->getChildrenCategories(); 

    if($collection->getSize() >= 1){//there some thing....}else{ 

//Get Subcategory.... 


foreach ($subCategories as $subCategoryId): 

        if($subCategoryId->getIsActive()) 
        { $products = Mage::getModel('catalog/category')->load($subCategoryId->getId()) 
        ->getProductCollection() 
        ->addAttributeToSelect('entity_id') 
        ->addAttributeToFilter('status', 1) 
        ->addAttributeToFilter('visibility', 4); 


         <li <?php if($subCategoryId->getId()==$currentCategoryId){?>class="active"<?php } ?>> 
          <a href="<?php echo $subCategoryId->getURL(); ?>"> 
           <?php //echo $subCategoryId->getName()." (".$products->count().")"; ?> 
           <?php echo $subCategoryId->getName(); ?> 
          </a> 
         </li> 
         } endforeach;}?> 

, если это поможет полный, дайте мне знать ...

Спасибо Ravi

1

Собственно это зависит от того, включена ли опция «Использовать категорию плоских каталогов».

Таким образом, лучший способ проверить категории имеют категорию ребенка или нет:

if (Mage::helper('catalog/category_flat')->isEnabled()) { 
    $childrenCount = $category->getResource()->getChildrenAmount($category); 
} else { 
    $childrenCount = $category->getResource()->getChildrenCount(); 
} 

с $ категории Я полагаю, у вас есть уже, как:

$category = Mage::getModel('catalog/category')->load(id); 
Смежные вопросы