10
votes

Magento montrant le mauvais nombre de produits dans la catégorie

J'ai un problème étrange et semble que beaucoup ont la même chose sur Internet. Au-dessous de la photo définira mon problème et que ma version magento est de 1,7

Entrez la description de l'image ici

Comme je l'ai mis en surbrillance, la gauche indique que la catégorie dispose de 16 produits, mais dans l'onglet Produits de la catégorie indique 15 produits. Toutes mes catégories sont gâchées. S'il vous plaît laissez-moi savoir ce qui ne va pas. J'ai essayé de désactiver le cache, mais cela n'a pas fonctionné.

[modifier]

J'ai essayé de supprimer un produit à partir de la catégorie, puis le numéro de gauche est allé à 15 et totalis des enregistrements 14. Donc, je pensais être un produit dont il est désactivé dans cette catégorie. Mais quand j'ai cherché des produits handicapés, aucun n'était là.


0 commentaires

3 Réponses :


4
votes

HI Compte du produit provient du nom de la méthode LoadProDuccount qui est situé à l'emplacement Code / Core / Mage / Catalogue / Modèle / Ressource / Catégorie / Collection.PHP

Si vous creuserez Le nombre provient d'une requête de jointure entre deux tables: catalog_category_product et catalog_category_entity

J'ai corrigé ce problème en utilisant l'observateur de l'événement. Vous pouvez faire la même chose pour le temps. Et laissez-moi savoir si vous trouvez une meilleure solution. xxx

événement utilisé dans config.xml xxx


4 commentaires

Avez-vous dit que vous aviez le même problème?


Oui, je faisais face au même problème dans Magento 1.7 CE. En quelque sorte après la suppression du produit, l'entrée n'était pas supprimée de la table catalog_category_product.


Quel événement observez-vous?


@ROSHANLAL Avez-vous créé un module personnalisé pour cela?



12
votes

Cela les corrigera tous.

DELETE FROM 
catalog_category_product 
where product_id NOT IN (SELECT entity_id FROM (catalog_product_entity)) 


0 commentaires

2
votes

Une solution simple à ceci est d'aller à l'application / code / noyau / mage / catalogue / modèle / catégorie.php

ou il est préférable de créer un fichier local afin que cela ne soit pas effacé pendant la mise à niveau de Magento. Donc créer App / Code / Local / Mage / Catalogue / Modèle / Category.php P>

Dans ce modèle Créez une nouvelle fonction Dites GetFrontentProductCount () p>

 <ol>
            <?php foreach ($_categories as $_category): ?>
                <?php if($_category->getIsActive()): ?>
                <li>
                    <a href="<?php echo $this->getCategoryUrl($_category) ?>"<?php if ($this->isCategoryActive($_category)): ?> class="current"<?php endif; ?>><?php echo $this->htmlEscape($_category->getName()) ?></a> (<?php echo $_category->getFrontentProductCount() ?>)
                </li>
                <?php endif; ?>
            <?php endforeach ?>
            </ol>


0 commentaires