Список подкатегорий в Magento

Я много огляделся и нашел много информации о том, как вытащить списки родительских идентификаторов и подкаталогов, но это немного отличается, и я, похоже, не могу найти ответ, я не гуру PHP (пока), так что полегче на меня. Я пробовал разные вещи, но я просто получаю ошибки.

Я создал шаблон phtml для отображения подкатегорий родительской категории во встроенном блоке ссылок под моей основной навигацией. Я вызываю этот шаблон со статическим блоком от администратора, который работает нормально, но блок ссылок исчезает, когда я перехожу на страницу подкатегории, очевидно, потому, что этот код вызывает подкаталоги родителя, но не тогда, когда вы на самом деле находитесь В под кат. вот код, который я использую до сих пор:

<?php if (!Mage::registry('current_category')) return ?>
<?php $_categories = $this->getCurrentChildCategories() ?>
<?php $_count = is_array($_categories)?count($_categories):$_categories->count(); ?>
<?php if($_count): ?>
    <div class="category-products <?php echo Mage::getModel('catalog/layer')->getCurrentCategory()->getName(); ?>">
        <dl id="narrow-by-list2">
            <dt></dt>
            <dd>
                <ol class="subcat_list">
                <?php foreach ($_categories as $_category): ?>
                    <?php if($_category->getIsActive()): ?>
                    <li>
                        <a href="<?php echo $this->getCategoryUrl($_category) ?>"<?php if ($this->isCategoryActive($_category)): ?> class="current"<?php endif; ?>><?php echo $this->htmlEscape($_category->getName()) ?></a>
                    </li>
                    <?php endif; ?>
                <?php endforeach ?>
                </ol>
            </dd>
        </dl>
        <script type="text/javascript">decorateDataList('narrow-by-list2')</script>
    </div>
<?php endif; ?>

какие-нибудь идеи относительно того, как я могу изменить это, чтобы список оставался там, пока я на самом деле просматриваю подкаталог? Большое спасибо


person Henry Cullen    schedule 29.11.2013    source источник


Ответы (2)


После долгих поисков я, наконец, наткнулся на то, что мне нужно. Спасибо MagikSwapna за ваш вклад, это помогло мне немного лучше понять вещи.

Я в конце концов закончил с этим

    <div class="category-products <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('parent_cat_name')->toHtml() ?>">
<?php  echo "<ol class='subcat_list'>"; ?>

 <?php
    $currentCat = Mage::registry('current_category');

    if ( $currentCat->getParentId() == Mage::app()->getStore()->getRootCategoryId() )
    {
        // current category is a toplevel category
        $loadCategory = $currentCat;

    }
    else
    {
        // current category is a sub-(or subsub-, etc...)category of a toplevel category
        // load the parent category of the current category
        $loadCategory = Mage::getModel('catalog/category')->load($currentCat->getParentId());
        // @TODO enhance for more nested category levels to display sub-categories
    }    
    $subCategories = explode(',', $loadCategory->getChildren());

    foreach ( $subCategories as $subCategoryId )
    {
        $cat = Mage::getModel('catalog/category')->load($subCategoryId);

        if($cat->getIsActive())
        {
            if($crcat == $cat->getName())                                                   //Check if current category is this subcategory
                echo '<li><b><a href="'.$cat->getURL().'">'.$cat->getName().'</a></b>'.'</li>'; //If yes display it as bold (Currently Selected)
            else                                                                            //
                echo '<li><a href="'.$cat->getURL().'">'.$cat->getName().'</a>'.'</li>';        //Otherwise display it as normal
        }
    }

?>
<?php  echo "</ol>"; ?>
</div>

и он работает нормально, я создал собственный макет для использования на страницах категорий, и он выдаст ошибку, если использовать его на странице, не связанной с категорией, но это работает! Ну наконец то.

person Henry Cullen    schedule 04.12.2013

person    schedule
comment
Фантастика, большое спасибо, я сейчас пробую разные варианты. Кстати, мой сайт находится здесь ashfordweb-dev.co.uk /proaudio/monitoring/active-monitors.html Я все еще не совсем уверен, как показывать только ссылки для подкатегорий родителя, пока я в нем, я пытаюсь использовать ‹?php if( $_category-›getIsActive()); ?› но это не работает - person Henry Cullen; 02.12.2013
comment
Есть ли способ отсортировать его по алфавиту? - person Raj; 01.04.2014