/ / HTMLが単純な「タイトル」の変更でプレーンテキストとしてレンダリングされるのはなぜですか? -drupal、drupal-7、drupal-modules、drupal-views

HTMLが単純な「タイトル」の変更でプレーンテキストとしてレンダリングされるのはなぜですか? -drupal、drupal-7、drupal-modules、drupal-views

各ノードを変更できました」 コメントリンク 「タイトル」テキスト(デフォルトでは「新しいコメントを追加」をレンダリングする)は以下のコードを使用しますが、HTMLを追加するとプレーンテキストとしてレンダリングされます。このテキストの前にFontAwesomeアイコンを追加しようとしています <i class="fa fa-comments" aria-hidden="true"></i>

ここに画像の説明を入力

function MODULE_node_view_alter(&$build) {
$node = $build["#node"];
if (isset($build["links"]["comment"]["#links"]["comment-add"])) {
$build["links"]["comment"]["#links"]["comment-add"]["title"] = "<i class="fa fa-comments" aria-hidden="true"></i> Add Comment";
}
}

私が渡したのは$ buildパラメーターだけですが、これが問題なのかどうかはわかりません。

何か案は?

回答:

回答№1は2

リンクでHTMLをレンダリングするには、 html オプション TRUE。 チェック theme_links() すべてのオプションを表示します。

例えば

theme("links", array(
"links" => array(
"title" => "<span>Title</span>",
"href" => "node/1",
"html" => FALSE, // default
)
))

その結果、spanタグがエスケープされますが、

theme("links", array(
"links" => array(
"title" => "<span>Title</span>",
"href" => "node/1",
"html" => TRUE,
)
))

spanタグをhtmlとしてレンダリングします。

そのため、次の行を追加する必要があります。

$build["links"]["comment"]["#links"]["comment-add"]["html] = TRUE;

回答№2の場合は0

そのフィールドにhtmlを含めることができない場合、これはプレーンテキストおよび翻訳可能のままにしておく必要があるフィールドのタイプであるため、cssを使用してアイコンを追加できます。

    a:before {
font-family: FontAwesome;
content: "f086";
}


<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>

<a>Add Comment</a>