Z Drupal 8.0 beta2 drupal_add_html_head()
został wycofany na korzyść #attached
. Więc stary sposób brzmiał:
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');
}
Na podstawie zawiadomienia o zmianie, z którego teraz korzystasz #attached
. Powyższy kod jest zasadniczo taki sam, a ostatnia część zmienia się na:
$build['#attached']['html_head'][] = [$viewport, 'viewport'];
To jednak nie działa i nie ma komunikatów o błędach w watchdog. Próbowałem zostały również umieszczenie tego na stronie zmieniać jak zamiana $build
z $variables
a $output
jednak nadal nie działa. Dodatkowo próbowałem całej rzeczy jako tablicy:
$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',
),
);
... ale to też nie działało. Nie jestem pewien, co robię źle, wydaje się, że powinno działać.
Aktualizacja
Oto działający kod, który używa, hook_page_attachments_alter
którego nie ma w D8 Beta 2, ponieważ został on właśnie poświęcony programistom.
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'];
}
Jedynym problemem jest teraz to, że znacznik rdzenia nie jest nadpisywany, więc utknąłem z moim znacznikiem niestandardowym i rdzeniem. Nie wiesz, jak sobie z tym poradzić, czy też mój tag powinien nadpisywać rdzenie?
hook_page_attachments_alter
. Jest jeden efekt uboczny, że mam teraz dwa tagi rzutni, jeden z rdzenia i ten, który dodałem z mojego motywu, więc nie jestem pewien, jak sobie z tym poradzić.