0

私はCMSMSで本当に奇妙な問題を抱えています.なぜこれはハーフワーキングなのか:

<head>
{if $current_step=='2' or $current_step=='4'}
HEAD_ON
{else}
HEAD_FAIL
{/if}
</head>
{if $current_step=='2' or $current_step=='4'}
NEITHER_ONE_OK
{else}
NEITHER_ONE_FAIL
{/if}
<body>
{if $current_step=='2' or $current_step=='4'}
BODY_OK
{else}
BODY_FAIL
{/if}
</body>

戻り値:

HEAD_OK
NEITHER_ONE_FAIL
BODY_FAIL

最新の CMSMS バージョン - 1.9.3 を使用しています。また、CMSMS は smarty に基づいており、CMSMS UDT セクションでこれを行うことができます。

$gCms->smarty->assign('current_step',"".htmlspecialchars($_GET['step_id'])."");

この問題は、CMSMS が最初に本文セクションを解釈し、次に UDT をコンパイルし、次に Web サイト全体をコンパイルする方法を使用する場合に発生する可能性があると思います。

解決策はありますか?ありがとうございました。

4

3 に答える 3

1

はい、解決策があります。

どこでも変数を使用できるようにするには、コンテンツ部分とその他の呼び出しを smarty でキャプチャする必要があります。

テンプレートの上部で次を使用します。

{capture assign='cc'}{content}{/capture}

{$cc} の {content} タグを置き換えます。

このようにして、ヘッダーが処理された後、ページ コンテンツの UDT 呼び出しで変数を定義すると、テンプレートの残りの部分で使用できるようになります。

この古いガイドをチェックして、体から頭への変数を取得してください。それがどのように機能するかを理解できます。

http://forum.cmsmadesimple.org/viewtopic.php?f=4&t=30475&sid=ed7e25c50612eb9f052ec4bee16d782c

于 2012-01-25T02:46:33.693 に答える
1

CMSMS は、ほぼ逆の順序でテンプレートを処理します。

1.4 のリリース ノートから: http://www.cmsmadesimple.org/cgblog/818/Announce-CMS-Made-Simple-1-4-Jamaica/

* We split the template into three pieces
a) Any text ontop of 
b) The section
c) the rest of the template (the body)
于 2011-02-25T06:53:45.197 に答える
0

CMSMS 開発チームからの回答: 「CMSMS (デフォルト) は、最初に上記のものを処理し、次にセクション、次にヘッド セクションを処理し、出力前に結果を結合します。」

于 2011-04-06T09:41:53.650 に答える