Ответы:
Из разных источников я нашел разные способы добавления мета-тегов в Drupal 8, отсюда и все способы компиляции.
Я думаю, что тот же вопрос был задан в колдовстве: добавьте метатег к голове в drupal 8, и если вы видите ответ @Danielishko , он предоставил следующий код:
Просто добавьте следующий код в ваш THEME.theme
файл, очистите кеш, и все будет хорошо. Примечание: function theme_preprocess_html(&$variables) {...}
должно быть уже в вашем файле .theme, поэтому не создавайте новый, иначе это приведет к ошибке.
function theme_preprocess_html(&$variables) {
$xuacompatible = [
'#tag' => 'meta',
'#attributes' => [
'http-equiv' => 'x-ua-compatible',
'content' => 'ie=edge',
],
];
$variables['page']['#attached']['html_head'][] = [$xuacompatible, 'x-ua-compatible'];
}
Выходное изображение:
Другой вопрос был задан по этой теме: Как установить / удалить метатеги drupal 8 .
Если вы прочитали вопрос в вышеупомянутой ссылке, Вопросник упомянул, что с помощью html.html.twig
файла шаблона вы можете напрямую добавить метатеги в<head>....</head>
html.html.twig
файл , который вы можете найти на core/modules/sytem/templates/html.html.twig
, Вы можете копировать и вставлять , что в папке шаблона вашей темы и ваша тема будет использовать этот один.
из html.html.twig
<!DOCTYPE html>
<html{{ html_attributes }}>
<head>
<head-placeholder token="{{ placeholder_token|raw }}">
<title>{{ head_title|safe_join(' | ') }}</title>
<css-placeholder token="{{ placeholder_token|raw }}">
<js-placeholder token="{{ placeholder_token|raw }}">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body{{ attributes }}>
{#
Keyboard navigation/accessibility link to main content section in
page.html.twig.
#}
<a href="#main-content" class="visually-hidden focusable">
{{ 'Skip to main content'|t }}
</a>
{{ page_top }}
{{ page }}
{{ page_bottom }}
<js-bottom-placeholder token="{{ placeholder_token|raw }}">
</body>
</html>
Выходное изображение:
ПРИМЕЧАНИЕ: это моя собственная логика, и я пытался найти ссылку для этого, я не нашел никаких ссылок на это, за исключением одной строки, предоставленной спрашивающим в приведенной выше ссылке, но так как мы редактируем файл шаблона для добавления других вещей, почему мы не можем использовать их для добавления теги. ПОЖАЛУЙСТА, ПРЕДОСТАВЛЯЙТЕ КОММЕНТАРИИ, ЕСЛИ ЭТО НЕ ПРАВИЛЬНЫЙ СПОСОБ, Это также будет для меня опытом обучения, спасибо.
Если вы обратитесь к этому руководству: Добавление новых тегов HTML в Drupal 8 , он описал общий способ добавления тега к заголовку в Drupal 8. Я изменил в соответствии с вашим требованием. Вы можете обратиться к этому руководству: Drupal 8: создайте простой модуль, чтобы узнать, как разработать простой модуль в Drupal 8, и следующий код будет помещен в ваш файл module_name.module, вот и все.
для module_name.module
файла,
<?php
/**
* Implements hook_page_attachments().
*/
function module_name_page_attachments(array &$page) {
$xuacompatible = [
'#tag' => 'meta',
'#attributes' => [
'http-equiv' => 'x-ua-compatible',
'content' => 'ie=edge',
],
];
$page['#attached']['html_head'][] = [$xuacompatible, 'x-ua-compatible'];
}
Я думаю, что этот метод и метод, описанный в первом варианте, совершенно одинаковы.
Я не уверен, как использовать этот подход, я пытался найти. Здесь я упоминаю, потому что когда добавляется метатег, этот модуль всегда всплывает.
Я думаю, что этот подход вы должны использовать. В принятом ответе он описал способ модуля, и вы можете использовать модуль Metatag для этого. Этот модуль имеет зависимые модули Token & Ctools , что очень распространенная вещь. В этом ответе была описана вся процедура, поэтому я здесь не упоминаю.
При добавлении контента в контроллер, блок, сущность, поле или другие места вам не нужно создавать ловушку.
Вы можете добавить мета - тег непосредственно к любой теме или визуализации элемента ( #theme
, #type
, #markup
):
$build['username'] = [
'#theme' => 'username',
'#account' => \Drupal::currentUser(),
'#attached' => [
'html_head' => [
[
[
'#tag' => 'meta',
'#attributes' => [
'name' => 'foo',
'content' => 'bar',
],
],
'my_module_foo',
],
],
],
];
При визуализации тег всплывает до уровня страницы и добавляется в <head>...</head>
раздел.
В хуке предварительной обработки, который вы можете прикрепить к верхнему уровню $variables
, см. Https://drupal.stackexchange.com/a/288989/47547.
Вы можете и должны использовать крючок alter для прикрепления страницы в вашей теме.
function THEME_page_attachments_alter(array &$page) {
$page['#attached']['library'][] = 'theme_name/main';
}