我编写了一个简单的Magento插件,它只列出了从给定父ID启用的所有子类别。
用户只需使用我创建的插件选项卡从管理员中选择父类别ID。
为了加快速度,我使用以下代码
为块插件添加了块缓存 $this->addData(array(
'cache_lifetime' => 86400,
'cache_tags' => array(Mage_Catalog_Model_Category::CACHE_TAG)
));
到目前为止效果很好,就像启用/禁用子类别一样,缓存无效并被替换。但是,如果我更改了管理员中的父类别ID,则在使用system-> cache managment刷新整个块缓存之前,不会看到更改。
我想要做的是有一种方法,当用户点击管理员中的保存时,只刷新一个块而不是刷新所有内容。
我该如何解决这个问题?我正在考虑在adminhtml中保存事件的某种事件观察者?但是我不知道该怎么做。
我对其他人可能有的建议感兴趣。
非常感谢
Ian Cassidy
答案 0 :(得分:3)
您可以使用事件观察器清除缓存。您可以按this tutorial设置观察者,然后观察catalog_category_save_after
事件。
要清除缓存,请在观察者模型中使用Mage::app()->getCacheInstance()->cleanType(Mage_Catalog_Model_Category::CACHE_TAG);
。
PS:也许您必须将<events>
设置为<admin>
或<adminhtml>
而不是<globals>
。
答案 1 :(得分:0)
在缓存管理中单击刷新操作时,可以使用observer generate。之后,您可以按缓存标记或缓存ID清除缓存。这是通过缓存ID清除缓存的解决方案。你能看到how to refresh cache in custom cache type
吗?