如何覆盖Drupal 7中已添加的元标记?

时间:2018-04-04 16:59:56

标签: drupal drupal-7 drupal-theming

在主题供应商文件中我有:

$element = array(
  '#tag' => 'meta',
  '#attributes' => array(
    'name' => 'viewport',
    'content' => 'width=device-width, initial-scale=1.0',
  ),
);
drupal_add_html_head($element, 'bootstrap_responsive');

我不想触摸该文件,但我想在其他地方覆盖此设置。我当然可以这样做:

drupal_add_html_head(array(
  '#tag' => 'meta',
  '#attributes' => array(
    'name' => 'viewport',
    'content' => 'maximum-scale=1.0' // Change is here
  )
), 'bootstrap_responsive_2');

这样可行,但也会非常难看,因为它最终会创建2个元标记。

<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="maximum-scale=1.0" />

我可以简单地覆盖已添加的元标记吗?

1 个答案:

答案 0 :(得分:3)

来自自定义模块工具hook_html_head_alter。阅读该链接后面页面上的评论,你会在那里找到一些有用的片段。

function MYMODULE_html_head_alter(&$head_elements) {

  foreach ($head_elements as $key => $element) {

    if (isset($element['#attributes']['name']) && $element['#attributes']['name'] == 'viewport') {

      // Override 'content'.
      $head_elements[$key]['#attributes']['content'] = 'maximum-scale=1.0';
    }
  }
}