2017-09-28 3 views
0

私は以下のコードで(つまり、デフォルトで「新しいコメントを追加」レンダリング)各ノードのComment Link「タイトル」テキストを変更することができましたが、私はHTMLを追加する場合、それはプレーンテキストとしてレンダリングされます。私はこのテキスト<i class="fa fa-comments" aria-hidden="true"></i>HTMLレンダリングが単純な「タイトル」変更でプレーンテキストとして表示されるのはなぜですか?

enter image description here

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'; 
    } 
} 

私が合格したすべての$ビルドパラメータである前にFontAwesomeアイコンを追加しようとしているが、私はこれが問題であるかどうかが不明です。

アイデア?

答えて

1

あなたはTRUEhtmlオプションを設定することで、リンクでHTMLをレンダリングすることができます。 すべてのオプションを表示するにはtheme_links()を確認してください。

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

HTMLとしてスパンタグをレンダリングするであろうしながら

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

例えば

は、エスケープされているスパンタグをもたらすであろう。

だからあなたの場合には、次の行を追加する必要があります。

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

それはプレーンテキストと翻訳対象として維持する必要があるかもしれないフィールドのタイプであるとして、あなたは、アイコンを付加するためにCSSを使用することができ、そのフィールドにHTMLを含めることができない場合。

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>

+0

うわー、CSS&Unicodeを使うほうがずっと簡単です!ありがとうございました! :) – WebMW

+0

私が見つけることができる唯一の欠点は、アンカー内に配置されていないので、アンカーにホバーカラーがないことです。今のところそれができますが、私はまだPHPでこれを行う方法について他のアイデアを聞いています。 – WebMW

関連する問題