使用Drupal 8.0β2,drupal_add_html_head()
已被弃用,赞成的#attached
。因此,旧方法是:
function MYTHEME_page_build(&$page) {
$viewport = array(
'#type' => 'html_tag',
'#tag' => 'meta',
'#attributes' => array(
'name' => 'viewport',
'content' => 'width=device-width, initial-scale=1.0, maximum-scale=2.0, minimum-scale=0.55, user-scalable=yes',
),
);
drupal_add_html_head($viewport, 'viewport');
}
根据您现在使用的更改通知#attached
。因此,上面的代码本质上是相同的,最后一部分变为:
$build['#attached']['html_head'][] = [$viewport, 'viewport'];
但是,这不起作用,并且看门狗中没有错误消息。我也尝试将其放在页面alter中以及$build
与$variables
和进行交换,$output
但仍然无法正常工作。另外,我尝试将整个过程作为数组:
$build['#attached']['html_head'][] = array(
'#type' => 'html_tag',
'#tag' => 'meta',
'#attributes' => array(
'name' => 'viewport',
'content' => 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no',
),
);
...但是那也不起作用。我不确定自己在做什么错,似乎应该可以正常工作。
更新资料
这是工作代码,使用的代码hook_page_attachments_alter
不在D8 Beta 2中,因为它只是致力于开发的。
function MYTHEME_page_attachments_alter(array &$page) {
$viewport = array(
'#type' => 'html_tag',
'#tag' => 'meta',
'#attributes' => array(
'name' => 'viewport',
'content' => 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no',
),
);
$page['#attached']['html_head'][] = [$viewport, 'viewport'];
}
现在唯一的问题是核心的视口标签不会被覆盖,因此我只能使用自定义标签和核心标签。不确定如何处理该标签,还是我的标签应该覆盖核心标签?