6

HTML/JS テンプレートが混在しています。JS 配列を使用している場合、Fluid は自動置換を試みます。

Fluid テンプレートで中括弧をエスケープする方法はありますか?

更新日:

JS パーツをエスケープするための実際の構文は次のとおりです。

<script type="text/javascript">/*<![CDATA[*/
/*]]>*/
var llKeyOne = '{f:translate(key:"key1")}';
var llKeyTwo = '{f:translate(key:"key2")}';
/*<![CDATA[*/
var myTranslations = {
  llKeyOne: llKeyOne,
  llKeyTwo: llKeyTwo
};
/*]]>*/</script>
4

7 に答える 7

8

使ってみて

<![CDATA[...]]>

JS コードを囲むタグ。

于 2013-07-17T09:39:17.233 に答える
5

<![CDATA[]]> TYPO3 v8.7.16 では上記の解決策ではうまくいかなかったので、私自身の解決策を共有したいと思いました。ブラケットをエスケープするための私の「ハック」は、それらを<f:format>ビューヘルパーでラップすることです。

私の目標は、フロントエンドでこれを出力することでした (400 とスイングは流動的な変数です)。

<ul data-animate="{duration:400, easing:'swing'}">
    ...
</ul>


Fluidtemplate でこれを行ったところ、完全に機能しました。

<ul data-animate="<f:format.raw>{</f:format.raw>duration: {data.myfield1}, easing:'{data.myfield2}'<f:format.raw>}</f:format.raw>">
    ...
</ul>
于 2018-07-05T22:58:15.607 に答える
3

TYPO3 9.x / 9.5.x で動作するソリューション

要約マークアップ (読みやすさと IDE サポート/強調表示) に「あまり良くない」影響を与える中括弧の周りのマークアップが多すぎるのを避けるために、追加の解決策を示します。

考えられる制限: この場合、fluid テンプレートには、テンプレートの head セクション内にfluid テンプレート変数のみが含まれ、その後に によって処理/レンダリングされるマークアップ全体が続きますangular.js

そのため、パーツのパーシャルを作成し、angular.jsそれらをメインの流体テンプレート内に含めました。

例: angular.js 部分にパーシャルを使用し、そこでの流体解析を無効にします

インクルードされた部分ファイルは、{parsing off}ステートメントを使用して開始されるようになりました (以下の例を参照)。

一部 (簡略化):

{parsing off} <!-- This solved all our issues -->

<div ng-show="showSlider">
    <div class="slider" data-test="slider-wrapper">
        <div class="row">
            <div class="slide-indicator-mask col-lg-12">
                <div class="slider-scope page-{{firstSlide}}"></div>
            </div>
    </div>
</div>
于 2019-04-26T09:51:51.833 に答える
1

fluid-Variable を使用して、"![CDATA[" をスクリプトに追加します。

構文の強調表示がうまく機能するため、javascript で fluid のタグ表記を使用します。

<script type="text/javascript">/*{startCDATA}*/

var llKeyOne = '<f:translate key="key1" />';
var llKeyTwo = '<f:translate key="key2" />';
var myTranslations = {
  llKeyOne: llKeyOne,
  llKeyTwo: llKeyTwo
};
/*{endCDATA}*/</script>

同じ方法で動的テンプレートの TYPO3-fluid と angulars-expressions でブラケットの問題を解決しました

<f:alias map="{ang: {s: '{{', e: '}}'}}">
...    
    <div class="{ang.s}{class}-{subclass}{ang.e}">...
</f:alias>
于 2015-01-16T11:16:14.613 に答える
0

Maybe too late but I found also one funny solution.

When I was integrating google seach structured data I found there this settings which should go to the template

<meta itemprop="target" content="https://query.example.com/search?q={search_term_string}"/>

And this is the easiest way I found for integration there

<meta itemprop="target" content="https://query.example.com/search?q={<f:format.raw>search_term_string</f:format.raw>}"/>

于 2020-12-10T10:10:30.690 に答える