web-dev-qa-db-fra.com

Comment ajouter une balise META dans la section <head> ... </head>?

Comment puis-je ajouter la balise META suivante dans le <head>...</head> section dans Drupal 8?

<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
21
lesley n.

À 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.


1. Utilisation du fichier THEME.theme

Je pense que la même question a été posée sur enjeuoverflow: ajoutez la 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 fichier THEME.theme, Videz le cache et vous serez prêt à partir. Remarque: function theme_preprocess_html(&$variables) {...} devrait déjà être 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:

enter image description here


2. Grâce au fichier modèle:

Une autre question a été posée à ce sujet: Comment définir/supprimer drupal 8 balises META .

Si vous lisez la question dans le lien mentionné ci-dessus, Questioner a mentionné qu'en utilisant le fichier modèle html.html.twig, Vous pouvez directement ajouter des balises META à <head>....</head>

Fichier html.html.twig Que vous pouvez trouver sur core/modules/sytem/templates/html.html.twig. Vous pouvez copier et coller cela dans le dossier de modèles de votre thème et votre thème l'utilisera.

à partir 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:

enter image description here

REMARQUE: Ceci 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 la ligne fournit par Questioner dans le lien ci-dessus, mais comme nous modifions le fichier de modèle pour ajouter d'autres choses, nous ne pouvons pas utiliser pour ajouter des balises. VEUILLEZ FOURNIR DES COMMENTAIRES SI CECI IS PAS UNE BONNE FAÇON DE FAIRE, Ce sera aussi une expérience d'apprentissage pour moi, merci.


3. Créez votre propre module personnalisé

Si vous vous référez à ce tutoriel de: Ajout de nouvelles balises HTML dans 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 votre condition. Vous pouvez consulter 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 le fichier 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'];
}

Je pense que cette méthode et la méthode décrite dans la 1ère option sont tout à fait les mêmes.


4. Utilisation du module Drupal

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.

50
CodeNext

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 à n'importe quel thème ou é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é au <head>...</head> section.

Dans un hook de prétraitement, vous pouvez attacher au niveau supérieur de $variables, voir https://drupal.stackexchange.com/a/288989/47547

4
4k4

Ici, nous pouvons utiliser le module Metatag.

Nous devons activer le sous-module Metatag: Mobile & UI Adjustments.

Après avoir fait cela à partir de la page de configuration des métabalises, nous serions en mesure de voir Windows et Windows Mobile sous chaque type de métabalise et selon nos besoins, nous pouvons ajouter du contenu global ou compatible X-UA spécifique à la page.

0
Vidit Anjaria