1

EE2.2をjQueryおよびjQueryテンプレートプラグインと一緒に使用しています。私のテンプレートには、jQueryテンプレートの動作の一部である中括弧がたくさんあります。問題は、EEがJavaScriptの中括弧と中括弧に含まれるEEタグを区別していないことです。EEは中括弧をEEタグとして解釈しているため、テンプレートは機能しません。これらの中括弧はスクリプトタグ内にあるため、EEはそれらをjavascriptおよびEEタグに関連しないものとしてカウントすると思います。これらがEEタグではないことをEEに伝えるにはどうすればよいですか。これを回避するための回避策はありますか?

<script id="template-download" type="text/x-jquery-tmpl">
    <tr class="template-download{{if error}} ui-state-error{{/if}}">
        {{if error}}
            <td></td>
            <td class="name">${name}</td>
            <td class="size">${sizef}</td>
            <td class="error" colspan="2">Error:
                {{if error === 1}}File exceeds upload_max_filesize (php.ini directive)
                {{else error === 2}}File exceeds MAX_FILE_SIZE (HTML form directive)
                {{else}}${error}
                {{/if}}
            </td>
        {{else}}
            <td class="preview">
             .....
</script>
4

3 に答える 3

3

ExpressionEngineの隠し$config['protect_javascript']は実際に何をしますか?それはおそらく例によって最もよく説明されます—説明させてください。

次のコードサンプルを考えると、$config['protect_javascript'] = 'y';高度な条件付きは完全に無視されます。

<script>
    {if username == "admin"}
        Welcome, {username}!
    {if:elseif member_id == "2"}
        Welcome, {screen_name}!
    {if:else}
        Welcome, Guest!
    {/if}
</script>

これにより、次の出力が生成されます。

<script>
    Welcome, admin!

    Welcome, Administrator!

    Welcome, Guest!
</script>

一方、$config['protect_javascript'] = 'n';上記と同じコードスニペットを使用すると、高度な条件を評価して次のように生成できます。

<script>
    Welcome, admin!
</script>

ご覧のとおり、違いは、高度な条件がJavaScriptコードブロックで評価されるかどうかです。

単純な条件文テンプレートタグ<script>は、設定に関係なく、常にタグで評価され$config['protect_javascript']ます。中かっこ{}は必ず別々の行に配置してください。

<script>
    // Simple Conditionals Are Unaffected and Always Work
    {if segment_2 != ""}
        {redirect="404"}
    {/if}
</script>
于 2011-09-29T03:54:35.870 に答える
1

これは、以前に回答された一般的な質問です。簡単に言えば:

  • JavaScriptの中括弧{}を別の行に配置するか、
  • 隠し構成変数を制定する$config['protect_javascript']

使用法では、2番目のオプションがおそらく最良の解決策です。

于 2011-09-29T01:37:54.037 に答える
1

テンプレートタイプを「静的」に設定して、簡単に修正することもできます。JSが他のEEコードを含むテンプレートに含まれている場合は、それを「静的」テンプレートに移動して埋め込むことができます。

于 2011-10-08T08:50:18.170 に答える