Svg画像のマークアップコードをプレーンテキストフィールドからhtmlにレンダリングしようとしている壁に遭遇しました。
他の場所でのプレーンテキストフィールドのレンダリングを上書きせずに、プレーンテキストフィールドからsvgコードをレンダリングしたいと考えています。
現在、プレーンテキスト形式では、すべてのhtmlタグと<>が< >
に変換されます。
私はフィールドテンプレートを作成し、フィールドコンテンツを
{{ item.content.context.value }}
そして
{{ item.content|raw }}
どちらも、値を「引用符」ですべての行をラップする文字列としてレンダリングし、改行を<br/>
タグに変換します。
以前はフィールドタイプでフォーマットされたテキストがありましたが、すべてのタグが許可されている場合でも、<pre>
タグですべてが囲まれていました。私はそれをプレーンテキストで動作させたいです。
フィールドがテキスト形式で保持する必要があるsvg-codeの例:
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 290 290" enable-background="new 0 0 290 290" xml:space="preserve">
<g>
<path fill="none" stroke="#78C681" stroke-width="3" stroke-miterlimit="10" d="M261.1,273.1H28.9c-6.6,0-12-5.4-12-12V28.9
c0-6.6,5.4-12,12-12h232.1c6.6,0,12,5.4,12,12v232.1C273.1,267.7,267.7,273.1,261.1,273.1z"/>
<circle fill="none" stroke="#1B435D" stroke-width="2" stroke-miterlimit="10" cx="145.2" cy="166.9" r="62.7"/>
<line fill="none" stroke="#78C681" stroke-width="3" stroke-miterlimit="10" x1="16.9" y1="60.8" x2="273.1" y2="60.8"/>
<circle fill="none" stroke="#1B435D" stroke-width="2" stroke-miterlimit="10" cx="178.3" cy="152.3" r="6.8"/>
<path fill="none" stroke="#1B435D" stroke-width="2" stroke-linecap="round" stroke-miterlimit="10" d="M115.1,167.9
c8.8,0,22.3,3.2,28.4,4.7"/>
<path fill="none" stroke="#1B435D" stroke-width="2" stroke-linecap="round" stroke-miterlimit="10" d="M151.9,216.9
c0,0,17.2-1.5,29.6-14.8"/>
</g>
</svg>
誰かが助けてくれることを願っています。
ベスト、
アラリ
Drupalコミュニティからのiworkyonによる解決策:
フィールド-ノード-[フィールド名] .html.twig:
{% if svg %}
<div class="my-svg">
{{ svg|raw }}
</div>
{% endif %}
THEME.info:
/**
* Implements hook_preprocess_field().
*/
function MYTHEME_preprocess_field(&$variables, $hook) {
switch ($variables['element']['#field_name']) {
case 'field_svg_test':
$variables['svg'] = $variables['items'][0]['content']['#context']['value'];
break;
}
}
これは私のために働きました:
{{ item.content['#context'].value|raw }}
値に生のフィルターを適用しようとしましたか?
{{ item.content.context.value|raw }}
しかし、これは安全ではありません。ファイルを出力するには、ファイルフィールドを使用できます。これには、リンクを生成するための正しいフィールドフォーマッターがあります。必要に応じてUIのリンクを構成できない場合は、twigまたはこの特定のフィールドの前処理を変更できます。