2012-03-06 126 views
2

我寫了一個簡單的Magento插件,它簡單地列出了從給定父ID啓用的所有子類別。Magento插件刷新緩存保存

用戶只需使用我創建的插件選項卡從管理員中選擇一個父類別標識。

爲了加快速度用下面的代碼

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

這種運作良好,到目前爲止,我已經添加塊緩存到插件,就好像一個子類別的啓用/禁用緩存廢止及被替換。但是,如果我更改管理員中的父類別id,則只有使用system-> cachemanagment刷新整個塊緩存時纔會看到更改。

我想要做的是有一種方法,當用戶點擊保存在管理員緩存刷新只是這一塊,而不是刷新一切。

我該怎麼辦呢?我正在考慮adminhtml中的保存事件的某種事件觀察員?但我不知道如何做到這一點。

我對其他人可能擁有的建議/建議感興趣。

非常感謝

伊恩·卡西迪

回答

3

您可以使用事件觀察清潔緩存。您可以按照this tutorial設置您的觀察員,然後觀察catalog_category_save_after事件。

要清除緩存,請在您的Observer模型中使用Mage::app()->getCacheInstance()->cleanType(Mage_Catalog_Model_Category::CACHE_TAG);

PS:也許你必須將<events>設置爲<admin><adminhtml>而不是<globals>

+0

這個拉斐爾的乾杯:-) – revolution14 2012-03-14 17:13:46

0

您可以使用observer generate在緩存管理中單擊刷新操作。之後,您可以通過緩存標記或緩存ID來清除緩存。這是通過緩存ID清除緩存的解決方案。你能看到how to refresh cache in custom cache type