我有一个模块,允许用户选择一个类别,然后用于过滤组件的输出。因此,当用户首次点击菜单项时,视图会显示所有类别中的项目,然后当他们点击模块时,会将诸如& catid = 69等的参数添加到网址并用于过滤显示的项目
系统插件通过注册额外的'catid'参数来补充行为,即
$registeredurlparams->catid = 'INT';
$app->set('registeredurlparams', $registeredurlparams);
模块使用类别ID来创建缓存ID,并显示顶级类别+所选类别的子类别。
这在系统配置中启用了保守缓存并启用了系统缓存插件时效果很好。
我担心的是我无法使用渐进式缓存:即使组件输出正确缓存,模块也不会更新(因此我从未看到子类别)。 / p>
最终我计划在JED上提供扩展,并且我希望与所有可能的缓存配置兼容。是否有可能强制渐进式缓存将我想要的参数添加到缓存ID?
不会接受诸如发送完整类别树和使用ajax进行操作的变通方法。
答案 0 :(得分:0)
您可以看到的一件事是后端的ContentModelArticle。你会注意到cleanCache() 强行清除可能受保存或创建影响的内容模块。
protected function cleanCache($group = null, $client_id = 0)
{
parent::cleanCache('com_content');
parent::cleanCache('mod_articles_archive');
parent::cleanCache('mod_articles_categories');
parent::cleanCache('mod_articles_category');
parent::cleanCache('mod_articles_latest');
parent::cleanCache('mod_articles_news');
parent::cleanCache('mod_articles_popular');
}
我一直认为这是一个大锤/ kludge,因为它不会让网站管理员控制是否这样做,但你可以为你的模型制作一个自定义的cleanCache()。