1

私は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]]`

問題は、何らかの理由でキャッシュされることです。「!」を入れてみた すべての組み合わせで、引き続きキャッシュされます。これはどのように修正できますか?

4

1 に答える 1

2

[[~3 はキャッシュされているため、putBoxId は実際には初回のみ呼び出されます。

Revo では - any * [[ * (タグ) は!で始めることができます。(キャッシュ不可フラグ)。 だから、あなたの場合 - [[! ~3[[!putBoxId? &tpl='boxIdUrl']] ]]注:ここと元の質問にタイプミスがあります。以下のコメントを参照してください。これは機能するはずです: [[~3]][[!putBoxId? &tpl='boxIdUrl']]

詳細はこちら


さらに良いことに、シナリオでは $modx->getChunk 呼び出しがキャッシュされないため、正当な理由がない限り、そのチャンクを削除します (データベースに移動してテンプレートを取得するなど... )。

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`]]
于 2011-06-09T19:48:29.813 に答える