MODx缓存它不应该缓存的内容';T

MODx缓存它不应该缓存的内容';T,modx,Modx,我和MODx revo合作。我编写了一个名为putBoxId的代码段,内容如下: <?php $id = isset($_GET['id']) ? $_GET['id'] : null; if (!is_null($id)) { return $modx->getChunk($tpl, array('id' => $id)); } return ''; ? &id=`[[+id]]` 问题是,出于某种原因,它会被缓存。我试着放了在所有的组合中,仍然会得到

我和MODx revo合作。我编写了一个名为putBoxId的代码段,内容如下:

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

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

return '';
? &id=`[[+id]]`

问题是,出于某种原因,它会被缓存。我试着放了在所有的组合中,仍然会得到缓存。如何解决这个问题?

缓存[[~3],因此实际上只有第一次调用putBoxId

在Revo-中,任何[[*(标记)都可以以一个(不可缓存标志)开头。因此,在您的案例中-[!~3[[!putBoxId?&tpl='boxIdUrl']]](注意:这里有一个输入错误,在您的原始问题中,请参阅下面的评论。这应该有效:[[~3][!putBoxId?&tpl='boxIdUrl']))

更多信息


更妙的是,除非有充分的理由,否则请删除该块,因为$modx->getChunk调用不会缓存在您的场景中(转到db获取模板,等等)

使用在代码段本身中完成这一切(有关更多选项,请参阅链接)


我尝试了[[!~3[[!putBoxId?&tpl='boxIdUrl']]],但没有成功(除非我错过了什么)。是的..这是一个打字错误。你需要先关闭标记:[[~3][[!putBoxId?&tpl='boxIdUrl']]因为您的原始代码段只是在链接后添加文本。请注意,如果已经存在查询字符串,例如不使用友好URL,则原始代码段将失败。(只是因为?vs&)
<?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`]]