フッターをキャッシュしない


8

このコードをlocal.xmlに追加しました

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

しかし、それはうまくいきませんでした。footer.phtmlプログラムでキャッシュを更新するにはどうすればよいですか?


3
フルページキャッシュを有効にしていますか、それともブロックキャッシュのみですか?
David Manners

回答:


6

Sanjana、これには2つの方法があります。

無効にする getChildHtml()

MagentoによるとgetChildHtml()、2番目のパラメーターを送信することで、キャッシュを使用するかどうかを指定できます。

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

設定して$useCache呼び出すときに、このブロックのために$this->getChildHtml('footer')$this->getChildHtml('footer', false)

  • 1column.phtml
  • 2columns-left.phtml
  • 2columns-left.phtml そして
  • 3columns.phtml

ルートテンプレートファイルです。

キャッシュの有効期間をnullに設定してlayout.xmlヘルパーを作成する

簡単なヘルパーを使用しましょう:

クラスMy_Module_Helper_Data extends Mage_Core_Helper_Abstract {

public function returnNull() 
{
    return null;
} 

}

そして、レイアウトxmlに次のように値を設定します。

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

Fabrizio Brancaに感謝


こんにちはアミット..この行を追加する必要がある場所。パブリック関数getChildHtml($ name = ''、$ useCache = true、$ sorted = false)
sanjana

すでにそれを説明しました。ルートレイアウトファイル1column.phtml
Amit Bera

これらのソリューションは私のサイトでは機能しませんでした。
sanjana 2015

これに対する他の解決策はありますか?私は過去2日間以来、この問題に悩まされています。事前の感謝
sanjana

1
3番目のオプション- public function getCacheLifetime() { return null; }フッターブロックに追加します。これは、すでにローカルオーバーライドがある場合にのみ有効なオプションです。そうでない場合は、他の2つのオプションのいずれかを使用してください。
ロビーアベリル2015年

1

あなたが直面している問題は、ファブリツィオがここで説明しているものと同じです:

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

彼のブログ投稿を言い換えると、xmlでキャッシュの有効期間を設定している場合、ノードに渡す値はすべて<action method="setCacheLifetime">と評価されtrueます。あなたは合格した場合でもnull、それはに変換されstring、それはstringなりますtrue。ノードでnullの値を設定できるヘルパークラスを作成する必要があります。

空のモジュールを作成し、構成ファイルを追加します。

{{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>

次に、ヘルパークラスを作成します。

{{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;
    } 
}

モジュールがサイトに正しく読み込まれていることを確認したら、必要なxmlを追加して、キャッシュからフッターを削除できます。

{{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>

フッターが実際にキャッシュされていないかどうかを確認するには、Fabrizioの別のツールを使用します。

https://github.com/AOEpeople/Aoe_TemplateHints

これを使用すると、キャッシュされているブロックや、サイトのコンテンツに関するその他の有用な情報がフルカラーで表示されます。


0

最後のステップは変更する必要があるかもしれません:

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

0

ワーキング

  • nullヘルパー経由で設定

    <reference name="footer">
        <action method="setCacheLifetime">
            <value helper="helper/method" />
        </action>
    </reference>
    
  • 引数を渡さない

    <reference name="footer">
        <action method="setCacheLifetime"></action>
    </reference>
    
  • JSONデータを使用する

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

機能していない:

  • null文字列として設定

    <reference name="footer">
        <action method="setCacheLifetime">
            <value>null</value>
        </action>
    </reference>
    
  • 空の値

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.