2012-03-06 68 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