Réponses:
À partir de différentes sources, j'ai trouvé différentes façons d'ajouter des balises META dans Drupal 8, donc de compiler toutes les façons.
Je pense que la même question a été posée sur enjeuoverflow: ajoutez une balise meta à la tête dans drupal 8 et si vous voyez la réponse de @Danielishko , il a fourni le code suivant,
Ajoutez simplement le code suivant dans votre THEME.theme
fichier, videz le cache et vous serez prêt à partir. Remarque: function theme_preprocess_html(&$variables) {...}
devrait être déjà là dans votre fichier .theme, donc n'en créez pas de nouveau, sinon cela donnera une erreur.
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'];
}
Image de sortie:
Une autre question a été posée à ce sujet: comment définir / supprimer les balises meta drupal 8 .
Si vous lisez la question dans le lien mentionné ci-dessus, Questioner a mentionné qu'en utilisant le html.html.twig
fichier modèle, vous pouvez directement ajouter des balises META à<head>....</head>
html.html.twig
fichier que vous pouvez trouver core/modules/sytem/templates/html.html.twig
, vous pouvez copier et coller cela dans le dossier de modèle de votre thème et votre thème l'utilisera.
de 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>
Image de sortie:
REMARQUE: c'est ma propre logique et j'ai essayé de trouver une référence pour cela, je n'ai trouvé aucune référence à ce sujet, sauf une ligne fournie par Questioner dans le lien ci-dessus, mais puisque nous modifions le fichier de modèle pour ajouter d'autres choses, pourquoi nous ne pouvons pas utiliser pour ajouter Mots clés. VEUILLEZ FOURNIR DES COMMENTAIRES SI CE N'EST PAS UNE BONNE FAÇON DE FAIRE, Ce sera également une expérience d'apprentissage pour moi, merci.
Si vous vous référez à ce tutoriel de: Ajouter de nouvelles balises HTML dans Drupal 8 , Il a décrit la manière générale d'ajouter une balise à head dans Drupal 8. J'ai modifié selon vos besoins. Vous pouvez vous référer à ce tutoriel: Drupal 8: Créer un module simple pour savoir comment développer un module simple dans Drupal 8, et le code suivant ira dans votre fichier module_name.module, c'est tout.
pour module_name.module
fichier,
<?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'];
}
Je pense que cette méthode et la méthode décrite dans la 1ère option sont tout à fait les mêmes.
Je ne sais pas, comment utiliser cette approche, j'ai essayé de trouver. Ici, je mentionne parce que lorsque le point d'ajouter des balises meta vient ce module toujours pop-up.
Je pense que vous devriez utiliser cette approche. Dans la réponse acceptée, il a décrit la méthode du module et vous pouvez utiliser le module Metatag pour cela. Ce module a des modules dépendants Token & Ctools , ce qui est très courant. Dans cette réponse, toute la procédure a été décrite, donc je ne parle pas ici.
Lorsque vous ajoutez du contenu à un contrôleur, un bloc, une entité, un champ ou à d'autres endroits, vous n'avez pas besoin de créer un hook.
Vous pouvez ajouter la balise meta directement à un thème ou d'un élément de rendu ( #theme
, #type
, #markup
):
$build['username'] = [
'#theme' => 'username',
'#account' => \Drupal::currentUser(),
'#attached' => [
'html_head' => [
[
[
'#tag' => 'meta',
'#attributes' => [
'name' => 'foo',
'content' => 'bar',
],
],
'my_module_foo',
],
],
],
];
Une fois rendu, le tag bouillonne jusqu'au niveau de la page et est ajouté à la <head>...</head>
section.
Dans un hook de prétraitement, vous pouvez attacher au niveau supérieur de $variables
, voir /drupal//a/288989/47547
Vous pouvez et devez utiliser le crochet alter pour les pièces jointes de page dans votre thème.
function THEME_page_attachments_alter(array &$page) {
$page['#attached']['library'][] = 'theme_name/main';
}