С 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, как это было просто передано 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'];
}
Единственная проблема сейчас заключается в том, что тег viewport ядра не перезаписывается, поэтому я застрял в своем собственном теге и ядре. Не знаете, как справиться с этим, или мой тег должен перезаписывать ядро?