2011-08-19 4 views
1

J'ai un problème de cache très étrange. J'ai un magasin avec deux langues. Quand je change la langue de l'allemand à l'anglais, ça marche la première fois. Donc, quand je suis sur le côté A (allemand), il passe à A (anglais). Mais .... si je change la page ou la catégorie ... dans l'exemple, de A à B et ALORS je change de langue, il me redirige vers A et non vers B.Problème de cache Magento

C'est un très strage problème de cache. J'ai désactivé toutes les options de cache et par la suite cela fonctionne parfaitement, mais je ne peux pas gérer un magasin sans aucune possibilité de cache:

Voici ma boutique: http://www.livewire-clothing.de/packagedetails/ Vérifiez le code de la page. Changez la langue et la page et vérifiez à nouveau le code.

Cette partie ne change jamais:

<select id="select-language" title="Ihre Sprache" onchange="window.location.href=this.value"> 
    <option value="http://www.livewire-clothing.de/merchandise/k.html?band=78&amp;manufacturer=55&amp;size=39&amp;___store=de&amp;___from_store=de" selected="selected">Deutsch</option> 
    <option value="http://www.livewire-clothing.de/merchandise/k.html?___store=en&amp;band=78&amp;manufacturer=55&amp;size=39&amp;___from_store=de">Englisch</option> 
</select> 

Il doit être le cache. Est-ce que quelqu'un a une solution pour moi ou pourrait m'aider? Merci beaucoup.

Répondre

3

Le problème est très probablement que vous avez mis le sélecteur de langue dans le bloc de pied de page. Le bloc de pied de page de Magento a activé la mise en cache des blocs. Si vous jetez un oeil à Mage_Page_Block_Html_Footer, vous verrez une clé de cache définie (Magento 1.5):

public function getCacheKeyInfo() 
{ 
    return array(
     'PAGE_FOOTER', 
     Mage::app()->getStore()->getId(), 
     (int)Mage::app()->getStore()->isCurrentlySecure(), 
     Mage::getDesign()->getPackageName(), 
     Mage::getDesign()->getTheme('template') 
    ); 
} 

Cela signifie que la sortie du bloc sera mis en mémoire cache dans des versions distinctes en fonction du magasin actuel, la conception, etc.

Cependant, votre sélecteur de langue est directement relié à la page en cours dans chaque langue. Lorsque le lien est différent pour chaque page, la sortie de votre pied de page sera différente pour chaque page. Je recommanderais simplement de désactiver la mise en cache des blocs pour le bloc de pied de page en remplaçant le bloc et en supprimant les définitions de cache, ou en utilisant un bloc core/template à la place.

+0

Merci beaucoup pour la réponse! Peux-tu m'aider avec ça? Ou quelqu'un d'autre? Je ne suis pas très bon en programmation magento. :) Ou donnez-moi juste un indice où je dois commencer. – Marek123

+2

Un moyen facile serait de copier app/code/noyau/Mage/Page/Block/Html/Footer.php dans app/code/local/Mage/Page/Bloc/Html/Footer.php et commenter la fonction _construct. –

+0

Merci! :) Je vais essayer ça! – Marek123