2012-03-06 9 views
2

私は、特定の親IDから有効になっているすべてのサブカテゴリを単純にリストするシンプルなMagentoプラグインを作成しました。プラグインのMagentoリフレッシュキャッシュ保存

ユーザーは、作成したプラグインタブを使用して管理者から親カテゴリIDを選択するだけです。私は、サブカテゴリーはキャッシュを無効にして交換された無効/有効になっているかのようにこれは、これまでのところうまく機能し、次のコード

$this->addData(array(
      'cache_lifetime' => 86400, 
      'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG) 
     )); 

を使用してプラグインにブロックキャッシュを追加したものをスピードアップするため

。しかし、私が管理者の親カテゴリーIDを変更した場合、システムキャッシュ管理を使用してブロックキャッシュ全体がリフレッシュされるまで、変更は見られません。

私がしたいのは、ユーザーが管理者のセーブをクリックしたときに、すべてをリフレッシュするのではなく、この1つのブロックだけキャッシュがフラッシュされる方法です。

どうすればいいですか? adminhtmlのsaveイベントで何らかのイベントオブザーバーを考えていますか?しかし、私はこれを行う方法を知りませんでした。

私は他の人が持っているかもしれない考えや提案に興味があります。

感謝

イアン・キャシディ

答えて

3

あなたはキャッシュをきれいにするイベントオブザーバを使用することができます。 this tutorialに従ってオブザーバーをセットアップし、catalog_category_save_afterイベントを観察できます。

キャッシュをクリアするには、Observer ModelでMage::app()->getCacheInstance()->cleanType(Mage_Catalog_Model_Category::CACHE_TAG);を使用してください。

PS:おそらく<events>をの代わりに<admin>または<adminhtml>に設定する必要があります。

+0

このラファエルのための乾杯:-) – revolution14

0

キャッシュ管理でリフレッシュアクションをクリックすると、observer generateを使用できます。その後、キャッシュタグまたはキャッシュIDでキャッシュをクリアすることができます。これは、キャッシュIDでキャッシュをクリアするためのソリューションです。あなたが見ることができますhow to refresh cache in custom cache type

関連する問題