Исключение одной или нескольких подкатегорий на странице категории, на которой отображается список подкатегорий
У меня есть следующий код, который будет отображать список подкатегорий на странице категорий, и я хочу исключить несколько подкатегорий из отображения, но активен в меню навигации.
Сценарий дерева категорий:
Одежда
--- Мужчины
--- Женщины
--- Дети
Обувь
--- Мужчины
--- Женщины
--- Дети
Когда я нажал на категорию одежды, которая является частью меню/навигации вверху. Он перейдет на страницу категории одежды и отображать только название подкатегории и изображение подкатегории Мужчин, женщин и детей. Но я бы исключил Детей. Но он все равно будет виден в навигации при наведении курсора, если все три подкатегории являются частью раскрывающегося списка.
<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().'"> </a>
<h2 class="product-name">
<a href="'.$cat->getURL().'">'.$cat->getName().'</a>
<div class="title-divider"><span> </span></div>
</h2>
</div>
</div>
<div class="clear"></div>
</li>';
}
}
?>
<!-- -->
</ul>
С нетерпением жду вашей помощи, ребята. Спасибо!
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.