MODx缓存它不应该的东西

时间:2011-06-03 10:20:38

标签: modx

我正在使用MODx revo。我写了一个名为putBoxId的片段,内容如下:

<?php
$id = isset($_GET['id']) ? $_GET['id'] : null;

if (!is_null($id)) {
    return $modx->getChunk($tpl, array('id' => $id));
}

return '';

我这样使用它:[[~3[[!putBoxId? &tpl='boxIdUrl']] ]](当然还有反引号),其中boxIdUrl是具有以下内容的块:

? &id=`[[+id]]`

问题是,由于某种原因它被缓存。我试着把'!'在所有组合中,仍然会被缓存。如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

正在缓存[[~3,所以你的putBoxId实际上只是第一次被调用。

在Revo中 - 任何 * [[ *(标记)可以以开始!不可缓存标志)。 所以,在你的情况下 - [[! ~3 [[!putBoxId? &amp; tpl ='boxIdUrl']]]] 注意: 这里有一个拼写错误,在您的原始问题中,请参阅下面的评论。应该工作:[[~3]] [[!putBoxId?&amp; tpl ='boxIdUrl']]

更多信息here


更好 - 除非有充分的理由,否则摆脱那个块,因为$ modx-&gt; getChunk调用不会在你的场景中缓存(转到db来获取模板等等... )。

使用modx->makeUrl 在代码段中完成所有操作(有关更多选项,请参阅链接)

<?php
$resourceId = $modx->getOption('resourceId', $properties, $modx->resource->get('id'));  // get resourceId from snippet, default to current
$args = (!empty($_REQUEST['id']))? array('id'=>$_REQUEST['id']) : '';
return $modx->makeUrl($resourceId, '', $args);

这样打电话:

[[!putBoxId]] or [[!putBoxId? &resourceId=`3`]]