2011-06-03 57 views
1

我正在使用MODx revo。我写了一个叫putBoxId具有下列内容片断:MODx缓存它不应该的内容

<?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]]` 

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

回答

2

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

在雷沃 - 任何 * [ *(标签)可以用开始!非缓存标记)。 所以,在你的情况 - [[!〜3 [[!putBoxId? & TPL = 'boxIdUrl']]]] 注:有一个错字在这里和你原来的问题,请参见下面评论这应该工作:![〜3]] [[putBoxId & TPL =” boxIdUrl']

更多信息here


更妙的是 - 除非有一个很好的理由,摆脱那种大块的,因为$ modx-> 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`]] 
+0

我试过[[〜3 [putBoxId ? &tpl ='boxIdUrl']]]],它不起作用(除非我错过了某些东西)。 – 2011-06-10 07:01:00

+1

是的..这是一个错字。您需要先关闭标签: [[〜3]] [[!putBoxId? &tpl ='boxIdUrl']] 作为您的原始代码段只是在链接后添加文本。 – oori 2011-06-11 20:34:28

+0

只需注意,如果您的原始代码段已经存在查询字符串,例如不使用友好的网址时,您的原始代码段就会失败。 (仅仅是因为vs vs) – oori 2011-06-11 20:43:33