SUPEE-9767-Problem: Entwurfsausnahmen mit Enterprise-Ganzseiten-Cache

7

SUPEE-9697 hat die Design Exceptions-Funktionalität von Magento Enterprise mit Full Page Cache beschädigt. Diese Funktion wird normalerweise zum Bereitstellen eines mobilen Themas verwendet.

So erstellen Sie das Problem neu (mit aktiviertem Ganzseiten-Cache und definierter Designausnahme):

  • Ganzseiten-Cache leeren.
  • Aktivieren Sie in Chrome Entwicklertools und schalten Sie die Gerätesymbolleiste um.
  • Wechseln Sie zu einem Gerät, das Ihr Thema aktiviert (z. B. ein iPhone).
  • Besuchen Sie die Website und bestätigen Sie, dass Sie Ihr mobiles Thema sehen.
  • Schalten Sie die Gerätesymbolleiste der Entwicklertools um, sodass jetzt eine Desktopansicht angezeigt wird.
  • Lade die Seite neu.

Unerwünschtes Verhalten:

  • Sie werden sehen, dass die Vorlage, die bereitgestellt wird (vom Ganzseiten-Cache), die mobile Vorlage ist, die falsch ist.
cmtickle
quelle

Antworten:

5

Dieses Problem wird durch den Patch verursacht, der Zend_Json verwendet, um Werte in den Cache des Enterprise PageCache Observer zu codieren, in dem zuvor die Serialisierung verwendet wurde.

Das Update (kopieren Sie die Datei nach lokal, um die Bearbeitung des Kerns zu vermeiden):

app/code/core/Enterprise/PageCache/Model/Processor.php:195

Veränderung:

$exceptions = @unserialize($exceptions);

Zu:

$exceptions = @Zend_Json::decode($exceptions);
cmtickle
quelle
Löst dies auch Benutzeragentenausnahmen nur im Layout, selbst wenn dasselbe Paket verwendet wird? Ich frage dies, weil dies meine Konfiguration ist und diese Lösung nicht funktioniert. In der $ Ausnahmevariablen kann ich sehen, dass die Werte nicht unserialisiert wurden.
Fra H
Es sollte alle Designausnahmeprobleme lösen. Haben Sie nach dem Anwenden des Fixes den Ganzseiten-Cache geleert?
cmtickle
Leider ja. I 'mit einer Version 1.13.1.0, bei der alle Patches angewendet wurden. Ich werde versuchen herauszufinden warum. Bei der Konfiguration gibt es nur Ausnahmen für Modell, Thema und Layout.
Fra H
Ich habe sogar versucht, dem Paket eine Ausnahme hinzuzufügen. Nun, das Ganze funktioniert nicht :(
Fra H
Beim Zurücksetzen des Patches funktioniert die Themenausnahme wieder.
Fra H
1

Auch auf Magento v1.13.1 (@thundar) unterscheidet sich der Code geringfügig von der akzeptierten Antwort.

Es ist in Zeile 196 statt 195 und der ursprüngliche Code war:

$rules = @unserialize($exceptions);

Soll werden:

$rules = @Zend_Json::decode($exceptions);
uberdev
quelle