Fußzeile nicht zwischenspeichern

8

Ich habe diesen Code in local.xml hinzugefügt

<default>
    <reference name="footer">
         <action method="unsetData"><key>cache_lifetime</key></action>
         <action method="unsetData"><key>cache_tags</key></action>
    </reference>
</default>

Aber es hat nicht funktioniert. Wie kann ich den Cache footer.phtmlprogrammgesteuert aktualisieren?

Sanjana
quelle
3
Haben Sie den Ganzseiten-Cache aktiviert oder nur den Block-Cache?
David Manners

Antworten:

6

Sanjana, Sie können dies auf zwei Arten tun:

Deaktivieren mit getChildHtml()

Laut Magento getChildHtml()können Sie den Cache verwenden, indem Sie den zweiten Parameter senden:

public function getChildHtml($name = '', $useCache = true, $sorted = false)

Stellen Sie $useCachefür diesen Block beim Aufruf $this->getChildHtml('footer'): $this->getChildHtml('footer', false)in

  • 1column.phtml
  • 2columns-left.phtml
  • 2columns-left.phtml und
  • 3columns.phtml

Das sind Root-Vorlagendateien.

Indem Sie die Cache-Lebensdauer auf null setzen layout.xmlund einen Helfer erstellen

Verwenden wir einen einfachen Helfer:

Klasse My_Module_Helper_Data erweitert Mage_Core_Helper_Abstract {

public function returnNull() 
{
    return null;
} 

}}

Und setzen Sie den Wert in Layout-XML wie folgt:

<reference name="footer">
    <action method="setCacheLifetime"><lifetime helper="mymodule/returnNull" /></action> </reference>

Vielen Dank an Fabrizio Branca

Amit Bera
quelle
Hallo Amit .. Wo ich diese Zeile hinzufügen muss. öffentliche Funktion getChildHtml ($ name = '', $ useCache = true, $ sortiert = false)
sanjana
Bereits erklärt. in der Root-Layout-Datei 1column.phtml
Amit Bera
Diese Lösungen haben für meine Website nicht funktioniert.
Sanjana
Gibt es eine andere Lösung dafür? Ich bin seit den letzten zwei Tagen mit diesem Problem beschäftigt.
Vielen
1
Dritte Option - public function getCacheLifetime() { return null; }Zum Fußzeilenblock hinzufügen . Dies ist nur dann eine gute Option, wenn Sie bereits eine lokale Überschreibung haben. Wenn Sie dies nicht tun, wählen Sie eine dieser beiden anderen Optionen.
Robbie Averill
1

Das Problem, mit dem Sie konfrontiert sind, ist das gleiche, das Fabrizio hier erklärt:

http://fbrnc.net/blog/2015/06/cache-and-layout-xml-tricks

Um seinen Blog-Beitrag zu paraphrasieren: Wenn Sie die Cache-Lebensdauer in der XML-Datei festlegen, werden alle Werte, die Sie an den Knoten übergeben <action method="setCacheLifetime">, ausgewertet true. Selbst wenn Sie bestehen null, wird das in a umgewandelt string, und das stringwird sein true. Sie müssen lediglich eine Hilfsklasse erstellen, die den Wert null im Knoten festlegen kann.

Erstellen Sie ein leeres Modul und fügen Sie Ihre Konfigurationsdatei hinzu:

{{site_root}} / app / code / local / {{your_namespace}} / CacheNull / ect / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <{{your_namespace}}_CacheNull>
            <version>1.0.0</version>
        </{{your_namespace}}_CacheNull>
    </modules>
    <global>
        <helpers>
            <customcachenull>
                <class>{{your_namespace}}_CacheNull_Helper</class>
            </customcachenull>
        </helpers>
    </global>
</config>

Erstellen Sie dann Ihre Hilfsklasse:

{{site_root}} / app / code / local / {{your_namespace}} / CacheNull / Helper / Data.php

class {{your_namespace}}_CacheNull_Helper_Data extends Mage_Core_Helper_Abstract
{
    public function returnNull()
    {
        return null;
    } 
}

Sobald Sie überprüft haben, ob das Modul korrekt auf Ihrer Site geladen wurde, können Sie die erforderliche XML-Datei hinzufügen, um die Fußzeile aus dem Cache zu entfernen:

{{site_root}} / app / design / frontend / {{you_theme_namespace}} / {{your_theme}} / layout / local.xml

<reference name="footer">
    <action method="setCacheLifetime"><lifetime helper="customcachenull/returnNull" /></action>
</reference>

Um zu überprüfen, ob die Fußzeile tatsächlich nicht zwischengespeichert wird, nehmen Sie ein anderes Tool von Fabrizio:

https://github.com/AOEpeople/Aoe_TemplateHints

Auf diese Weise können Sie in Farbe sehen, welche Blöcke zwischengespeichert werden, sowie eine Reihe weiterer nützlicher Informationen zum Inhalt Ihrer Website.

Kreismix
quelle
0

Der letzte Schritt muss möglicherweise geändert werden:

<reference name="footer">
    <action method="setCacheLifetime"></action>
</reference>
kenny
quelle
0

Arbeiten

  • nullüber Helfer einstellen

    <reference name="footer">
        <action method="setCacheLifetime">
            <value helper="helper/method" />
        </action>
    </reference>
  • kein Argument übergeben

    <reference name="footer">
        <action method="setCacheLifetime"></action>
    </reference>
  • Verwenden Sie JSON-Daten

    <action method="setCacheLifetime" json="value">
        <value>null</value>
    </action>

Funktioniert nicht:

  • nullals Zeichenfolge festlegen

    <reference name="footer">
        <action method="setCacheLifetime">
            <value>null</value>
        </action>
    </reference>
  • leerer Wert

    <reference name="footer">
        <action method="setCacheLifetime">
            <value></value>
        </action>
    </reference>

Quelle: http://fbrnc.net/blog/2015/06/cache-and-layout-xml-tricks

sv3n
quelle