EEコードとして中括弧内の項目を表現しないように式エンジンを強制する方法はありますか? google chart toolsは、中括弧{}を含むjavascriptコードを使用しています。自然にEEはそれを変数と考え、それをレンダリングしようとします。これはどうですか?シングル、ペア、および条件変数:ExpressionEngine {}を使用したJSコードのレンダリング
答えて
ExpressionEngineののテンプレートクラス 3つの変数の種類を探して、中括弧template variablesとして{}
を解析し、CSSで
// Single Variable
{summary}
// Pair Variable
{category} ... {/category}
// Conditional Variable
{if segment_2 != ""} ... {/if}
中括弧は特別な条件と考えられています。
たとえば、以下のCSSテンプレートのどこにでも配置することが許容あり、かつインテリジェントを解析されます:
<style>
/* All On One Line = Okay */
p { margin-bottom: 1em; }
/* Indented and On Separate Lines = Also Okay */
p em {
font-style: italic;
}
/* EE Variables are Parsed and Replaced */
p.{site_name} {
text-decoration: none;
}
/* EE Code is Allowed and Parsed Appropriately */
{exp:channel:entries channel="channel_name" limit="1"}
li.{url_title} a {
color: #c00;
}
{/exp:channel:entries}
</style>
は残念ながら、JavaScriptは異なる方法で処理し、タグには何も処理することから高度な条件文パーサを防止しています。例えば、中括弧ではJavaScript以下の1行上のすべて:
<script>var addthis_config = { 'ui_click': true };</script>
は、テンプレート変数としてExpressionEngineので解析され、としてレンダリング:
<script>var addthis_config = ;</script>
あなたはすべてがから始まるわかります開幕{
と終了}
の中括弧が解析されて置き換えられます。回避策として、あなたは別々の行に括弧を配置し、この問題を回避することができます
<script>
var addthis_config = {
'ui_click': true,
'data_track_clickback': true
};
</script>
あなたはExpressionEngineのから値を期待するJavaScript関数を書いた場合は、単にgood coding conventionある別々の行—であなたの中括弧を置きますそしてoptimal for readabilityです:
<script>
$(document).ready(function() {
...
{exp:channel:entries channel="channel_name" limit="1"}
var business_name = '{business_website}';
var business_website = '{business_website}';
{/exp:channel:entries}
...
});
</script>
ベンによって示唆されるように、あなたがHidden Configuration Variableを設定することにより、この動作を変更することができます:$conf['protect_javascript'] = 'n';
どのような素晴らしい応答。これはちょうど私がいくつかのjavascriptのものとEEに関して探していた情報でした。 –
Expressを何ionEngineの隠された$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';
上記から同じコードスニペットをは、アドバンスドコンディションの評価をとすることができます。
あなたが見ることができるように3210、違いが高度な条件文は、JavaScriptのコードブロックで評価されているかどうかではありません。
Simple conditionalsとtemplate tagsは関係なく、常に—を設定$config['protect_javascript']
の、<script>
タグで評価されているだけで別の行に、あなたの中括弧{}
を置くようにしてください!単純に別々の行に中括弧を置く
<script>
// Simple Conditionals Are Unaffected and Always Work
{if segment_2 != ""}
{redirect="404"}
{/if}
</script>
は(私はEE 2.1.1を使用しています)何らかの理由で私のために動作しませんでした。 しかし、中括弧の前後にコメント行を配置しています。例えば。 Google Analyticsコードの場合:
<script>
(function(i,s,o,g,r,a,m)
//
{
//
i['GoogleAnalyticsObject']=r;i[r]=i[r]||function()
//
{
//
(i[r].q=i[r].q||[]).push(arguments)
//
}
//
,i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
//
}
//
)(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-3636230-46', 'auto');
ga('send', 'pageview');
</script>
これはうまくいくかもしれませんが、なぜ**動作しているのか分からず、問題を完全に解決するわけではありません。どのように、そしてなぜそれが働くのかが明確になるまでは、この時点ではコメントとしては良いかもしれません。 –
JSコードを含むグローバル変数を作成します。テンプレート内のグローバル変数を使用してください:
https://docs.expressionengine.com/v2/templates/globals/index.html
- 1. JSコードを使用したモバイルレスポンス
- 2. d3.jsとsvgsを使用したBackbone.jsでのレンダリング
- 3. 複合ExpressionEngineテンプレート:レンダリング可能<= 1秒?
- 4. Rails ActionMailerを使用した電子メールのQRコードのレンダリング
- 5. TagBuilderとASP.NET MVC 4(Razorエンジンを使用)を使用したhtmlコードのレンダリング
- 6. OpenSGを使用したレンダリング
- 7. reactjsを使用したレンダリング
- 8. Angular JSを使用してjsにPHPコードを移行
- 9. Codeigniter expressionEngine
- 10. JSコードのレスポンステキストの要素を使用
- 11. OpenStreetMapを使用した地図のレンダリング
- 12. Djangoレンダリングmpld3を使用したHTMLの
- 13. VTK APIを使用したメッシュのレンダリング
- 14. リアルータを使用したサーバー側のレンダリング
- 15. はExpressionEngineの
- 16. EXT JS 4グリッド表示値をレンダリングするためのモデルアソシエーションを使用
- 17. ExpressionEngine内のプレミアムメンバーシップ?
- 18. ExpressionEngineの:オンザフライset_flashdata
- 19. MAMPのExpressionEngine
- 20. カスタムLabelTableを使用したJSliderレンダリング
- 21. Cobraを使用したJava HTMLレンダリング
- 22. Webpackを使用した同形レンダリング
- 23. リアクションを使用したサーバー側レンダリング
- 24. OpenGLを使用したQtレンダリング
- 25. React.jsを使用したサーバー側レンダリング
- 26. Angular cliを使用したサーバー側レンダリング
- 27. QRコードを使用して3Dモデルをレンダリングする
- 28. jQueryを使用してMVCビューにコードをレンダリングする
- 29. Cycle.jsでレンダリングされたすべてのDOMの後にjsコードを実行
- 30. バックボーンを使用したテンプレートのロードjs
例を挙げることはできますか? –