2016-05-06 4 views
1

Drupal 8の一般的なリンクフィールドをHTMLエンティティ(例えば»)で拡張する方法を解明しようとしています。 私の最初の試行は、フィールドの前処理機能でした。残念ながら、私はtrue へのリンクのhtmlオプションを設定するために管理していないここで私はそれがDrupal Twigテンプレートのリンクフィールド出力を延長する

function MYTHEME_preprocess_field(&$variables) { 
    if ($variables['element']['#field_name'] == 'field_slideshow_link'){ 
    foreach ($variables['items'] as $idx => $item) { 
     $variables['items'][$idx]['content']['#title'] = $variables['items'][$idx]['content']['#title'] . " <span>&raquo;</span>"; 
     $variables['items'][$idx]['content']['#url']->setOption('html', true); 
    } 
    } 
} 

これは動作しませんでした試みた方法です。だから私が思いついた唯一の解決策は、テンプレート内でリンクを手動で生成することでした。ちょうどいい感じではありません。ここで私は

<a href="{{ node.field_slideshow_link.0.url }}">{{ node.field_slideshow_link.0.title }} <span>&raquo;</span></a> 

それをやった方法です誰にもっとエレガントにこの問題を解決するための方法を考えていますか?

答えて

0

この問題もありました。次の解決策を見つけた

$url = [ 
'#title' => new FormattableMarkup('&@text;', ['@text' => t('raquo')]); 
//The rest 
]; 

スパンのようなhtml要素でこれを行いましたが、これでうまくいくかどうかわかりません。お知らせ下さい!

+0

ありがとうございました。これは機能します。それが正しい方法であるかどうかまだ分かりません。しかし、ちょっとまだDrupalを学んで8 –

+0

@JensHeidrich私はソースコードを見てアイデアに来た。それがレンダリングされるとき、SafeMarkupタイプのものかどうかを調べます。そうでない場合、すべてのHTMLがエスケープされます。これを正解としてこれを受け入れるようにしてください – VJamie

関連する問題