З Drupal 8.0 beta2, 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'];
Це не працює, хоча повідомлення про помилки у сторожовій службі немає. Я також спробував поставити це на сторінці змінити, а також обмін $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'];
}
Єдине питання полягає в тому, що тег поля перегляду ядра не перезаписується, тому я застряг зі своїм власним тегом та ядром. Не знаєте, як поводитися з цим чи повинен мій тег перезаписати ядро?