Com o Drupal 8.0 beta2, drupal_add_html_head()
foi preterido em favor de #attached
. Então, o caminho antigo era:
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');
}
Com base no aviso de alteração que você usa agora #attached
. Portanto, o código acima é essencialmente o mesmo, com a última parte alterada para:
$build['#attached']['html_head'][] = [$viewport, 'viewport'];
Porém, isso não funciona e nenhuma mensagem de erro no watchdog. Eu também tentei colocar isso em uma página alter, bem como trocar $build
com $variables
e, $output
mas ainda não funciona. Além disso, tentei a coisa toda como uma matriz:
$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',
),
);
... mas isso também não funcionou. Não sei ao certo o que estou fazendo de errado, parece que deveria estar funcionando.
Atualizar
Aqui está o código de trabalho que usa o hook_page_attachments_alter
que não está no D8 Beta 2, pois foi comprometido apenas com o dev.
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'];
}
O único problema agora é que a tag de viewport do núcleo não é substituída, por isso estou preso à minha tag e núcleo personalizados. Não sabe como lidar com essa ou minha tag deve substituir os principais?
hook_page_attachments_alter
. Há um efeito colateral que agora tenho duas tags de viewport, uma do núcleo e a que adicionei do meu tema, por isso não tenho certeza de como lidar com isso.