2011-06-03 58 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