为什么HTML在简单的“标题”更改中呈现为纯文本?

时间:2017-09-28 20:36:07

标签: drupal drupal-7 drupal-modules drupal-views

我已经能够使用以下代码更改每个节点的Comment Link'标题'文本(在默认情况下呈现'添加新评论'),但如果我添加HTML,它将呈现为纯文本。我正在尝试在此文<i class="fa fa-comments" aria-hidden="true"></i>

之前添加FontAwesome图标

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

我传递的只是$ build参数,但我不确定这是否是问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以通过将html选项设置为TRUE来在链接中呈现HTML。 检查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;

答案 1 :(得分: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>