¿Hay alguna forma de ocultar categorías que no tienen productos activos? O, mejor aún, solo muestre categorías que tengan productos y existencias activos .
Tenga en cuenta que el método verifica cada categoría individualmente utilizando el modelo de catálogo / categoría. Por lo tanto, si tiene muchas categorías, es posible que desee volver a escribir el código para no tener problemas de rendimiento. En una tienda más pequeña que estamos ejecutando, esto funciona bien.
¿Es posible encajonar esto en una extensión que se puede colocar en la carpeta local? Preocupado por la sobrescritura del código en futuras actualizaciones de Magento.
MagentoMac
10
No hay una función integrada para ocultar categorías vacías (pero puede seleccionar manualmente Está activo = No para cada categoría en el área de administración-> catálogo-> administrar categorías)
Esto se ve bien, pero por alguna razón no funciona en nuestra tienda ... ¿alguna idea de cómo depurar? No recibo ningún mensaje de error. Seguí las instrucciones hasta el tee, pero no hubo cambios en la interfaz. Ya deshabilité, luego volví a habilitar el compilador y
borré el
4
Si solo desea ocultarlos en la navegación del catálogo, puede agregar una condición if en la plantilla para verificar la cantidad de productos en esa categoría.
Puede ejecutar el siguiente sql para deshabilitar todas las categorías sin productos.
UPDATE `catalog_category_entity_int` AS `status`
INNER JOIN `eav_attribute` AS `attr` ON `attr`.`attribute_code`='is_active'
AND `attr`.`entity_type_id`=3
AND `status`.`attribute_id`=`attr`.`attribute_id`
SET `status`.`value`= IF((SELECT COUNT(`index`.`product_id`)
FROM `catalog_category_product_index` AS `index`
WHERE `index`.`category_id`=`status`.`entity_id` GROUP BY `index`.`category_id`)>0,1,0)
WHERE `status`.`store_id`=0
lo que hice para ocultar categorías vacías es reescribir la Mage_Catalog_Model_Resource_Category_Treeload()función. Tengo que unir la colección de productos con la colección de categorías como a continuación.
Agregué un campo extra product_count que contiene el recuento real de productos activos.
Estoy usando un módulo de terceros para mostrar la categoría en el menú superior y puse la condición según el recuento de productos cuando se muestra el menú.
Respuestas:
La forma más fácil de hacer esto es reescribir solo el
Mage_Catalog_Block_Navigation
bloque:=> En el método
_renderCategoryMenuItemHtml()
que desea reemplazar el bucle=> con esto:
=> y de manera similar en el método
renderCategoriesMenuHtml()
reemplaza el código=> con esto:
=> Finalmente agregue el método que estábamos usando en nuestro código:
Tenga en cuenta que el método verifica cada categoría individualmente utilizando el modelo de catálogo / categoría. Por lo tanto, si tiene muchas categorías, es posible que desee volver a escribir el código para no tener problemas de rendimiento. En una tienda más pequeña que estamos ejecutando, esto funciona bien.
fuente
No hay una función integrada para ocultar categorías vacías (pero puede seleccionar manualmente Está activo = No para cada categoría en el área de administración-> catálogo-> administrar categorías)
Aquí hay un enlace en una gran publicación del blog de Josh Prattski , donde escribió un tutorial paso a paso sobre cómo hacer una extensión para este propósito.
fuente
Si solo desea ocultarlos en la navegación del catálogo, puede agregar una condición if en la plantilla para verificar la cantidad de productos en esa categoría.
fuente
Quizás esto también ayude.
Vaya al backend de su tienda web.
La etiqueta
Display Mode
se puede establecer enfuente
Para ocultar una categoría vacía del menú superior, haga lo siguiente:
fuente
Lo que funcionó para mí es crear un árbol de categorías de plantillas e implementar una función de condición que represente el árbol de categorías:
fuente
Puede ejecutar el siguiente sql para deshabilitar todas las categorías sin productos.
Puede encontrar más detalles aquí http://quicktips.ru/all/hide-all-categories-without-products-and-show-categories-with-pr/
fuente
lo que hice para ocultar categorías vacías es reescribir la
Mage_Catalog_Model_Resource_Category_Tree
load()
función. Tengo que unir la colección de productos con la colección de categorías como a continuación.agregue este código antes de
$arrNodes = $this->_conn->fetchAll($select);
esta línea.Y envuelva este código con esta condición, esta clase llamada desde el modelo de interfaz y backend también
Agregué un campo extra product_count que contiene el recuento real de productos activos.
Estoy usando un módulo de terceros para mostrar la categoría en el menú superior y puse la condición según el recuento de productos cuando se muestra el menú.
fuente