Excluyendo una o más subcategoría en una página de categoría que muestra la lista de subcategoría
-
19-12-2019 - |
Pregunta
Tengo el siguiente código que mostrará la lista de subcategorías en una página de categoría y quiero excluir varias subcategorías de la visualización, pero está activa en el menú de navegación.
Categoría Categoría Escenario de árboles:
Ropa
--- hombres
--- Mujeres
--- niños
zapatos
--- hombres
--- Mujeres
--- niños
Cuando hice clic en la categoría de ropa que forma parte del menú / Navegación en la parte superior.Irá a la página de la categoría de la ropa y mostrará solo el nombre de la subcategoría y la imagen de subcategoría de hombres, mujeres y niños.Pero yo excluyo a los niños.Pero aún será visible en la navegación cuando pase la ropa, las tres subcategorías son parte de la caída.
<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>
Mirando hacia adelante para sus chicos de ayuda.¡Gracias!
Solución
Creo que la mejor manera es que puede cogarle un atributo de categoría que puede ser utilizado para administrarlo en la página de la lista de categorías.
Por ejemplo, cree un atributo de una categoría llamado "Mostrar en la lista" con "SÍ, NO" Opciones y en función de estas opciones, puede omitir esas categorías de la lista y aún estará disponible en la mejor navegación.
editar
Cree un archivo en la raíz llamada createattribute.php y agregue el código a continuación en ese archivo y ejecute la URL en el navegador como http://example.com/createattribute.php
Esto creará un nuevo atributo de categoría y puede verlo en Admin.Lo mismo que puede hacer usando la configuración del módulo también.
<?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'
));
?>
No en su código PHTML como lo muestre arriba, simplemente agregue una condición más como
if($cat->getIsActive() && $cat->getShowInList()){...
Esto solo enumerará las categorías que configuró la opción SÍ en admin.