I have written a simple Magento plugin that simply lists all sub categories that are enabled from a given parent id.
The user simply selects a parent category id from the admin using the plugin tab i have created.
To speed things up i have added block caching to the plugin using the following code
$this->addData(array(
'cache_lifetime' => 86400,
'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG)
));
This works well so far, as if a sub category is enabled / disabled the cache invalidates and is replaced. However if i change the parent category id in the admin changes are not seen until the whole block cache is refreshed using system->cache managment.
What i would like to do is have a method where by when a user clicks save in the admin the cache is flushed for just this one block rather than refreshing everything.
How would i go about this ? i am thinking some sort of event observer on the save event in adminhtml? however i wouldn’t know how to do this.
I am interested on what thoughs / suggestions other people may have.
Many thanks
Ian Cassidy
You can use an Event Observer to clean cache. You can follow this tutorial to setup your observers, and then observe the
catalog_category_save_afterevent.To clear cache, use
Mage::app()->getCacheInstance()->cleanType(Mage_Catalog_Model_Category::CACHE_TAG);in your Observer Model.PS: maybe you have to setup your
<events>into<admin>or<adminhtml>instead of<globals>.