0

在基于 MODx Revo 的站点上工作并尝试编写一个 simlpe 插件(受过去为 Evo 编写的“模板切换器插件”的启发)。下面是代码

if (isset($_GET['template'])) {
   $template_id=$_GET['template'];

   if(isset($template_id)){
       $template = $modx->getObject('modTemplate', $template_id);
       $modx->resource->template = $template->get('id'); 
   }

}

最终,该插件将包含更多检查等,但是现在我只想确保它可以正常工作。想法很简单,它应该根据url提供的模板参数为页面获取不同的模板。阻止它按我想要的方式工作的问题是 modx 缓存。

我的问题是,如何在这种特定情况下操作缓存(清除/重新加载?),以便插件完成其工作?

4

1 回答 1

0

试一试:

$modx->executeProcessor(array(
   'location' => 'system',
   'action' => 'clearCache',
));

我认为,您可能真正想做的是调查在插件而不是片段中更改页面模板。看看 OnWebPagePrerender 事件。http://rtfm.modx.com/display/revolution20/OnWebPagePrerender

另外,做一些测试,虽然一些事件在 modx 中列出并可用,但并非所有事件都实际实现[即不起作用] [还可以查看该父页面:http://rtfm.modx.com /display/revolution20/插件]

*更新***

嗯 - 好的,试试这个:

/* refresh all the core partitions */
$modx->cacheManager->refresh();

请注意,在阅读此处的文档后:http: //rtfm.modx.com/display/revolution20/Caching 可用于不同版本的 modx 的不同方法,有些已被贬值。...因此,请务必扫描文档以找到适合您的 modx 版本的方法。

于 2012-09-23T13:41:21.233 回答