Исключение одной или нескольких подкатегорий на странице категории, на которой отображается список подкатегорий


У меня есть следующий код, который будет отображать список подкатегорий на странице категорий, и я хочу исключить несколько подкатегорий из отображения, но активен в меню навигации.
Сценарий дерева категорий:

Одежда
--- Мужчины
--- Женщины
--- Дети

Обувь
--- Мужчины
--- Женщины
--- Дети

Когда я нажал на категорию одежды, которая является частью меню/навигации вверху. Он перейдет на страницу категории одежды и отображать только название подкатегории и изображение подкатегории Мужчин, женщин и детей. Но я бы исключил Детей. Но он все равно будет виден в навигации при наведении курсора, если все три подкатегории являются частью раскрывающегося списка.

<ul class="products-grid widget-grid">
     <!--  -->
     <?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());
          }
          $subCategories = explode(',', $loadCategory->getChildren());

          foreach ( $subCategories as $subCategoryId )
          {
             $cat = Mage::getModel('catalog/category')->load($subCategoryId);
             if($cat->getIsActive()){
                echo '<li class="grid_3 item alpha">
                <div class="product-border">
                <div class="product-img-box">
                <a href="'.$cat->getURL().'" class="product-image" >
                <div class="hover-box">
                   <img src="'.$cat->getImageUrl().'" />
                   <span class="image-box"></span>
                </div>
                </a>
                <a class="fancybox" rel="category-gallery" title="'.$cat->getName().'" href="'.$cat->getURL().'">&nbsp;</a>
                <h2 class="product-name">
                <a href="'.$cat->getURL().'">'.$cat->getName().'</a>
                <div class="title-divider"><span>&nbsp;</span></div>
                </h2>
                </div>
                </div>
                <div class="clear"></div>
                </li>';
           }
      }
   ?>
     <!--  -->
</ul>

С нетерпением жду вашей помощи, ребята. Спасибо!

Author: KiD Cajes, 2015-12-14

1 answers

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

Например, создайте один атрибут категории под названием "Показать в списке" с параметрами "Да, нет", и на основе этих параметров вы можете пропустить эти категории из списка, и он по-прежнему будет доступен в верхней навигации.

Редактировать

Создайте один файл в корневом каталоге под названием createAttribute.php и добавьте приведенный ниже код в этот файл и запустите URL-адрес в браузере, например http://example.com/createAttribute.php

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

<?php
require_once("app/Mage.php");
Mage::app('default');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

$installer = new Mage_Eav_Model_Entity_Setup('core_setup');
$entityTypeId     = $installer->getEntityTypeId('catalog_category');
$attributeSetId   = $installer->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $installer->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);

$installer->addAttribute('catalog_category', 'show_in_list',  array(
    'group'    => 'General Information',
    'type'     => 'int',
    'label'    => 'Show in list',
    'input'    => 'select',
    'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_STORE,
    'visible'           => true,
    'required'          => false,
    'user_defined'      => false,
    'default'           => 0,
    'source' => 'eav/entity_attribute_source_boolean'
));
?>

Не в вашем коде phtml, как показано выше, просто добавьте еще одно условие, например

if($cat->getIsActive() && $cat->getShowInList()){...

Здесь будут перечислены только те категории, для которых вы установили опцию ДА в admin.

 1
Author: Akhilesh Patel, 2015-12-14 10:30:50