Odpowiedzi:
Z różnych źródeł znalazłem inny sposób dodawania metatagów w Drupal 8, stąd kompilowanie wszystkich sposobów.
Wydaje mi się, że to samo pytanie zostało zadane przy przepływie stawek: dodaj metatag do head w drupal 8, a jeśli zobaczysz odpowiedź @Danielishko , podał następujący kod:
Wystarczy dodać następujący kod do THEME.theme
pliku, wyczyścić pamięć podręczną, a będziesz gotowy. Uwaga: function theme_preprocess_html(&$variables) {...}
powinien już być w pliku .theme, dlatego nie twórz nowego, w przeciwnym razie spowoduje błąd.
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'];
}
Obraz wyjściowy:
Inne pytanie zostało zadane na ten temat: Jak ustawić / usunąć metatagi drupal 8 .
Jeśli czytasz pytanie w powyższym linku, Pytający wspomniał, że za pomocą html.html.twig
pliku szablonu możesz bezpośrednio dodawać metatagi<head>....</head>
html.html.twig
plik, który można znaleźć w. core/modules/sytem/templates/html.html.twig
Możesz skopiować i wkleić go w folderze szablonów motywu, a Twój motyw go użyje.
od 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>
Obraz wyjściowy:
UWAGA: To jest moja własna logika i próbowałem znaleźć odniesienie do tego, nie znalazłem żadnego odniesienia w tym zakresie, z wyjątkiem jednej linii podanej przez Pytającego w powyższym linku, ale ponieważ edytujemy plik szablonu w celu dodania innych rzeczy, dlaczego nie możemy użyć do dodania tagi. PROSZĘ PRZEDSTAWIĆ KOMENTARZE, JEŚLI TO NIE JEST WŁAŚCIWY SPOSÓB ZROBIENIA, Będzie to również dla mnie doświadczenie edukacyjne, dzięki.
Jeśli zapoznasz się z tym samouczkiem: Dodawanie nowych znaczników HTML w Drupal 8 , opisał ogólny sposób dodawania znaczników do głowy w Drupal 8. Zmodyfikowałem zgodnie z twoimi wymaganiami. Możesz odnieść się do tego samouczka: Drupal 8: Utwórz prosty moduł, aby dowiedzieć się, jak opracować prosty moduł w Drupal 8, a następujący kod zostanie umieszczony w pliku nazwa_modułu.module, to wszystko.
do module_name.module
pliku
<?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'];
}
Myślę, że ta metoda i metoda opisana w 1. opcji są całkiem takie same.
Nie jestem pewien, jak zastosować to podejście, próbowałem znaleźć. Wspominam tutaj, ponieważ kiedy pojawia się punkt dodawania metatagów, moduł ten zawsze się pojawia.
Myślę, że to podejście należy zastosować. W przyjętej odpowiedzi opisał sposób modułu i możesz do tego użyć modułu Metatag . Ten moduł ma zależne moduły Token & Ctools , co jest bardzo powszechne. W tej odpowiedzi opisano całą procedurę, więc nie wspominam tutaj.
Podczas dodawania treści do kontrolera, bloku, encji, pola lub innych miejsc nie trzeba tworzyć zaczepu.
Możesz dodać tag meta bezpośrednio z każdym tematem lub czynią elementu ( #theme
, #type
, #markup
):
$build['username'] = [
'#theme' => 'username',
'#account' => \Drupal::currentUser(),
'#attached' => [
'html_head' => [
[
[
'#tag' => 'meta',
'#attributes' => [
'name' => 'foo',
'content' => 'bar',
],
],
'my_module_foo',
],
],
],
];
Po renderowaniu znacznik przechodzi do poziomu strony i jest dodawany do <head>...</head>
sekcji.
W haku przedprocesowym, który można podłączyć do najwyższego poziomu $variables
, patrz /drupal//a/288989/47547
Możesz i powinieneś użyć haka alter do załączników strony w swoim motywie.
function THEME_page_attachments_alter(array &$page) {
$page['#attached']['library'][] = 'theme_name/main';
}