Magento: не могу получить категории детей - PullRequest
0 голосов
/ 05 декабря 2011

По какой-то причине этот код возвращает NULL при попытке получить подкатегории категорий.

 <?php var_dump($_category->getChildrenCategories()); ?>

Вот полный код из файла .phmtl.

<ul id="nav_vert">
            <?php foreach ($this->getStoreCategories() as $_category): ?>
            <?php if ($_category->getIsActive()) { ?>
            <?php $open = $this->isCategoryActive($_category); ?>
            <?php $potential = $_category->hasChildren(); ?>
            <li><a href="<?php echo $this->getCategoryUrl($_category); ?>"<?php if($open) { echo ' class="open"'; } ?><?php if($potential) { echo ' class="potential"'; } ?> ><?php if($potential&&$open) { echo 'v '; } elseif($potential) { echo '> '; }else{ echo '  '; }?><?php echo $_category->getName();?></a>
                <?php if ($open && $potential): ?>
                <?php var_dump($_category->getChildrenCategories()); ?>
                <ul>
                    <?php foreach ($_category->getChildrenCategories() as $subcategory): ?>
                    <?php $subCat = Mage::getModel('catalog/category')->load($subcategory); ?>
                    <?php $open = $this->isCategoryActive($subCat); ?>
                    <?php $potential = $subCat->hasChildren(); ?>
                    <li><a href="<?php echo $this->getCategoryUrl($subCat); ?>"<?php if($open) { echo ' class="subopen"'; } ?><?php if($potential) { echo ' class="potential"'; } ?><?php if(!$potential&&$open) { echo ' class="final"'; } ?> ><?php if($potential&&$open) { echo ':: '; } elseif($potential) { echo '> '; }?><?php echo $subCat->getName(); ?> (<?php echo $subCat->getProductCount(); ?>)</a>
                        <?php if ($open && $potential): ?>
                        <ul>
                            <?php foreach ($subcategory->getChildrenCategories() as $subsubcategory): ?>
                            <?php $subsubCat = Mage::getModel('catalog/category')->load($subsubcategory); ?>
                            <?php $open = $this->isCategoryActive($subsubCat) ?>
                            <li><a href="<?php echo $this->getCategoryUrl($subsubCat); ?>" <?php if($open) { echo ' class="final"'; } ?>><?php echo $subsubCat->getName(); ?> (<?php echo $subsubCat->getProductCount(); ?>)</a></li>
                            <?php endforeach; ?>
                        </ul>
                        <?php endif; ?>
                    </li>
                    <?php endforeach; ?>
                </ul>
                <?php endif; ?>
            </li>
            <?php } ?>
            <?php endforeach ?>
        </ul>

Эта строкавсегда возвращает true

<?php $potential = $_category->hasChildren(); ?>

И я знаю, что у категории есть дети.

Кто-нибудь может подсказать, почему это не работает?

Вот как я размещаю phtmlна странице:

<reference name="left">
    <block type="catalog/navigation" name="catalog.vertnav" template="catalog/navigation/vert_nav.phtml" before="-" />
</reference>

Magento версия 1.5.1.0

Ответы [ 4 ]

2 голосов
/ 05 декабря 2011

Попробуйте использовать $_category->getChildren() (вместо $_category->getChildrenCategories())


Хорошего дня,
Песах

0 голосов
/ 27 октября 2012
<?php $helper = $this->helper('catalog/category') ?>
 <?php $categories = $this->getStoreCategories() ?>
  <?php foreach($categories as $category): ?>
    <?php $subcategories = $category->getChildren() ?>
      <?php foreach($subcategories as $subcategory): ?>
        <?php $subsubcategories = $subcategory->getChildren() ?>
         <?php foreach($subsubcategories as $subsubcategory): ?>
         <?php endforeach; ?><!-- end foreach subsubcategories -->
      <?php endforeach; ?><!-- end foreach subcategories -->
  <?php endforeach; ?><!-- end foreach categories -->

Это основная идея выделения дочерних категорий.
Соответственно, вы можете работать над этим.

0 голосов
/ 26 октября 2012

Попробуйте с этим кодом,

$this->getCurrentCategory()->getChildrenCategories()

Надеюсь, это поможет

0 голосов
/ 06 декабря 2011

Вы также можете попробовать это,

foreach ($_category->getCategories($_category) as $subcategory):

getCategories() - более сложная форма, но она также дает вам больше контроля. Указав уровень рекурсии, вы можете получить не только детей, но и внуков ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...