Magento Enterprise Cache Affichage même produit plusieurs fois dans les produits connexes
-
16-10-2019 - |
Question
J'essaie de comprendre pourquoi un site Magento Enterprise affiche le même article quatre fois dans la section « Article connexe » de la page.
CORRECT COMPORTEMENTS:
- Après les caches de compensation, quatre différents éléments sont indiqués sur la première page de chargement (ce qui est le comportement correct)
PROBLÈME:
- des charges de pages supplémentaires montrent pas seulement les quatre mêmes éléments, mais le exactement le même élément répété quatre fois (voir capture d'écran)
- L'élément qui se répète est toujours le dernier élément qui a été affiché dans la charge de la page originale. En d'autres termes, s'il y a, b, c, d articles connexes figurant sur la première page de chargement après une fush de cache, il est « d » qui sera répété quatre fois sur les charges de page future. d, d, d, d
CONTEXTE:
- Page utilise un thème personnalisé
.
- Ce problème ne se produit lorsque la mise en cache de la page complète est activée
.
- Si la page est revenu sur le thème « par défaut », le problème ne se produit plus, même avec la mise en cache pleine page activée
- Pour résumer: le problème se produit uniquement avec le thème personnalisé et la mise en cache pleine page activée
- Magento Enterprise ver. 1.13.0.0
La partie des produits de la page est insérée avec le code suivant:
<?php echo $this->getChildHtml('relatedProducts', false) ?>
Je serais reconnaissant:
- Une avance spécifique sur ce problème peut être ce
- des moyens fiables pour désactiver un cache spécifique lié à cette
(GUI Dans le code dans le terminal??)
- Tests et mesures que je peux prendre pour restreindre celui-ci à coder, db ou fichiers
Merci d'avance!
La solution
Il est apparu que nous avions créé une version locale de la valeur par défaut related.phtml fichier qui a été utilisé comme modèle pour le bloc d'éléments connexes. Dans ce code, il y a cette ligne dans une boucle:
$itemBlock = $this->getChild('catalog.product.related.item')->setItem($_item)->setPosition($i);
Notez la variable $ i à la fin de la ligne.
Cette variable n'a pas été incrémenté ailleurs dans le code. J'ai ajouté $i = 0;
avant que la boucle et $i++;
à l'emplacement approprié dans la boucle. Avec la variable $ i maintenant incrémenter, le problème de l'article répéter a été résolu.