Comme il s'agissait d'EE, j'ai pu utiliser le support de Magento, mais j'ai également travaillé par moi-même pour aider à résoudre le problème et obtenir une solution aussi rapidement que possible. Les modifications de code ont été fournies par Magento, donc les appliquer aux fichiers app / code / core réels est correct, bien que vous puissiez toujours dupliquer les fichiers dans votre / app / code / local et y appliquer les modifications.
Le problème était que la méthode de mise en cache des blocs qui a été ajoutée dans 1.14.2 ne générait pas une clé de cache unique, donc lorsque j'ai utilisé plusieurs blocs dans l'espace du contrôleur de catégorie, la clé de cache générée a fini par être unique uniquement pour le premier accès à la page, résultant dans toutes ces pages pour afficher le contenu en double.
Le correctif consistait à ajouter ce qui suit (affiché au format de fichier diff pour montrer le contexte entourant les ajouts - il suffit d'ajouter les lignes avec le + où ils doivent aller):
Dans app / code / core / Mage / Cms / Block / Block.php à la ligne 72:
}
return $html;
}
+
+ /**
+ * Retrieve values of properties that unambiguously identify unique content
+ *
+ * @return array
+ */
+ public function getCacheKeyInfo()
+ {
+ $blockId = $this->getBlockId();
+ if ($blockId) {
+ $result = array(
+ $blockId,
+ Mage::app()->getStore()->getCode(),
+ );
+ } else {
+ $result = parent::getCacheKeyInfo();
+ }
+ return $result;
+ }
}
Dans app / code / core / Mage / Cms / Block / Widget / Block.php à la ligne 82:
$helper = Mage::helper('cms');
$processor = $helper->getBlockTemplateProcessor();
$this->setText($processor->filter($block->getContent()));
+ $this->addModelTags($block);
}
}
unset(self::$_widgetUsageMap[$blockHash]);
return $this;
}
+
+ /**
+ * Retrieve values of properties that unambiguously identify unique content
+ *
+ * @return array
+ */
+ public function getCacheKeyInfo()
+ {
+ $result = parent::getCacheKeyInfo();
+ $blockId = $this->getBlockId();
+ if ($blockId) {
+ $result[] = $blockId;
+ }
+ return $result;
+ }
}
Je ne pense pas que je serais le seul à voir ce problème et s'il apparaît dans CE 1.9.2, j'espère que cela aidera à le résoudre pour certaines personnes.