Existe-t-il un moyen de masquer les catégories qui n'ont pas de produits actifs? Ou, mieux encore, n'affiche que les catégories qui ont des produits et des stocks actifs .
Gardez à l'esprit que la méthode vérifie chaque catégorie individuellement en utilisant le modèle de catalogue / catégorie. Donc, si vous avez plusieurs catégories, vous voudrez peut-être réécrire le code pour ne pas rencontrer de problèmes de performances. Dans un petit magasin que nous exploitons, cela fonctionne bien.
Est-il possible de placer cela dans une extension qui peut être déposée dans un dossier local? Inquiet que le code soit écrasé dans les futures mises à jour de Magento.
MagentoMac
10
Il n'y a pas de fonction intégrée pour masquer les catégories vides (mais vous pouvez sélectionner manuellement Est actif = Non pour chaque catégorie dans la zone d'administration-> catalogue-> gérer les catégories)
Cela semble bon, mais pour une raison quelconque ne fonctionne pas dans notre magasin ... des idées sur la façon de déboguer? Pas de message d'erreur. J'ai suivi les instructions pour un tee-shirt, mais aucun changement dans le frontend. Ont déjà désactivé, puis
réactivé le
4
Si vous souhaitez simplement les masquer dans la navigation dans le catalogue, vous pouvez ajouter une condition if dans le modèle pour vérifier la quantité de produits dans cette catégorie.
Ce qui a fonctionné pour moi, c'est de créer une arborescence de catégories de modèles et d'implémenter une fonction de condition qui rend l'arborescence de catégories:
Vous pouvez exécuter sql suivant pour désactiver toutes les catégories sans produits.
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
ce que j'ai fait pour cacher les catégories vides, c'est réécrire la Mage_Catalog_Model_Resource_Category_Treeload()fonction. Je dois rejoindre la collection de produits avec la collection de catégories comme ci-dessous.
J'ai ajouté le champ product_count supplémentaire qui contient le nombre réel de produits actifs.
J'utilise un module tiers pour afficher la catégorie dans le menu supérieur et j'ai mis une condition basée sur le nombre de produits lorsque le menu est rendu.
Réponses:
La façon la plus simple de le faire est de réécrire uniquement le
Mage_Catalog_Block_Navigation
bloc:=> Dans la méthode que
_renderCategoryMenuItemHtml()
vous souhaitez remplacer la boucle=> avec ceci:
=> et de même dans la méthode
renderCategoriesMenuHtml()
remplacer le code=> avec ceci:
=> Enfin, ajoutez la méthode que nous venions d'utiliser dans notre code:
Gardez à l'esprit que la méthode vérifie chaque catégorie individuellement en utilisant le modèle de catalogue / catégorie. Donc, si vous avez plusieurs catégories, vous voudrez peut-être réécrire le code pour ne pas rencontrer de problèmes de performances. Dans un petit magasin que nous exploitons, cela fonctionne bien.
la source
Il n'y a pas de fonction intégrée pour masquer les catégories vides (mais vous pouvez sélectionner manuellement Est actif = Non pour chaque catégorie dans la zone d'administration-> catalogue-> gérer les catégories)
Voici un lien sur un excellent article du blog de Josh Prattski , où il a écrit une procédure pas à pas sur la façon de créer une extension à cet effet.
la source
Si vous souhaitez simplement les masquer dans la navigation dans le catalogue, vous pouvez ajouter une condition if dans le modèle pour vérifier la quantité de produits dans cette catégorie.
la source
Peut-être que cela aiderait aussi.
Accédez au backend de votre boutique en ligne.
L'étiquette
Display Mode
peut être définie surla source
Pour masquer une catégorie vide du menu principal, procédez comme suit:
la source
Ce qui a fonctionné pour moi, c'est de créer une arborescence de catégories de modèles et d'implémenter une fonction de condition qui rend l'arborescence de catégories:
la source
Vous pouvez exécuter sql suivant pour désactiver toutes les catégories sans produits.
Plus de détails vous pouvez trouver ici http://quicktips.ru/all/hide-all-categories-without-products-and-show-categories-with-pr/
la source
ce que j'ai fait pour cacher les catégories vides, c'est réécrire la
Mage_Catalog_Model_Resource_Category_Tree
load()
fonction. Je dois rejoindre la collection de produits avec la collection de catégories comme ci-dessous.ajoutez ce code avant
$arrNodes = $this->_conn->fetchAll($select);
cette ligne.Et enveloppez ce code avec cette condition, cette classe appelée aussi à partir du modèle frontend et backend
J'ai ajouté le champ product_count supplémentaire qui contient le nombre réel de produits actifs.
J'utilise un module tiers pour afficher la catégorie dans le menu supérieur et j'ai mis une condition basée sur le nombre de produits lorsque le menu est rendu.
la source