¿Cómo agrego una metaetiqueta en la sección <head> ... </head>?

19

¿Cómo puedo agregar la siguiente metaetiqueta dentro de la <head>...</head>sección en Drupal 8?

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

Respuestas:

49

De diferentes fuentes encontré una forma diferente de agregar metaetiquetas en Drupal 8, compilando así todas las formas.


1. Usando el archivo THEME.theme

Creo que se ha hecho la misma pregunta en el desbordamiento de estaca: agregue metaetiqueta a la cabeza en drupal 8 y si ve la respuesta de @Danielishko , Él ha proporcionado el siguiente código,

Simplemente agregue el siguiente código en su THEME.themearchivo, borre el caché y estará listo para comenzar. Nota: function theme_preprocess_html(&$variables) {...}ya debería estar allí en su archivo .theme, por lo tanto, no cree uno nuevo, de lo contrario, se producirá un error.

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'];
}

Imagen de salida:

ingrese la descripción de la imagen aquí


2. A través del archivo de plantilla:

Se hizo otra pregunta sobre este tema: Cómo configurar / eliminar las metaetiquetas de drupal 8 .

Si leyó la pregunta en el enlace mencionado anteriormente, el interlocutor ha mencionado que al usar el html.html.twigarchivo de plantilla puede agregar metaetiquetas directamente a<head>....</head>

html.html.twigarchivo que puede encontrar core/modules/sytem/templates/html.html.twig, puede copiar y pegar eso en la carpeta de plantillas de su tema y su tema usará ese.

desde 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>

Imagen de salida:

ingrese la descripción de la imagen aquí

NOTA: Esta es mi propia lógica y traté de encontrar referencias para esto, no encontré ninguna referencia al respecto, excepto una línea proporcionada por el interlocutor en el enlace anterior, pero dado que editamos el archivo de plantilla para agregar otras cosas, ¿por qué no podemos usar para agregar? Etiquetas PROPORCIONE COMENTARIOS SI ESTA NO ES UNA MANERA CORRECTA DE HACERLO, también será una experiencia de aprendizaje para mí, gracias.


3. Cree su propio módulo personalizado

Si hace referencia a este tutorial sobre: Agregar nuevas etiquetas HTML en Drupal 8 , ha descrito la forma general de agregar etiquetas al encabezado en Drupal 8. He modificado según sus requisitos. Puede consultar este tutorial: Drupal 8: cree un módulo simple sobre cómo desarrollar un módulo simple en Drupal 8, y el siguiente código irá en su archivo module_name.module, eso es todo.

para module_name.modulearchivo,

<?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'];
}

Creo que este método y el método descritos en la primera opción son bastante iguales.


4. Usando el módulo Drupal

No estoy seguro, cómo utilizar este enfoque, traté de encontrar. Aquí estoy mencionando porque cuando viene el punto de agregar metaetiquetas, este módulo siempre aparece.

Creo que este enfoque deberías usarlo. En la respuesta aceptada, describió la forma del módulo y puede usar el módulo Metatag para eso. Este módulo tiene módulos dependientes Token & Ctools , que es algo muy común. En esa respuesta se ha descrito todo el procedimiento, por lo que no estoy mencionando aquí.

CodeNext
fuente
Revisé el módulo metatag antes de escribir mi publicación, pero no sé qué campo tengo que elegir para generar lo que quiero. E incluso si así fuera, tengo que hacer esto para cada tipo de contenido. Tal vez hay una manera más cómoda?
lesley n.
@lesleyn. He actualizado mi respuesta, he incluido diferentes formas de agregar metaetiquetas, pero al igual que usted, tampoco descubrí cómo agregar usando módulos Metatag, creo que a través de ese módulo podemos acceder a lo que sea provisto en la lista de tokens, de ahí a use su metaetiqueta en la lista, creo que hemos creado un token para eso. Esta es mi suposición. Othe se acercó que he probado, y están trabajando.
CodeNext
1
Esto debería marcarse como correcto =) +1
Cyclonecode
1
@ AntonínSlejška, Tanto n-1 como n-3 son prácticamente el mismo método, la diferencia está en n-1 que está agregando código en el archivo .theme mientras que en n-3 está creando un módulo personalizado para eso. Yo diría que vaya por n-1, será limpio y fácil. Y para HOMEPAGE, necesita una línea de código adicional en el código que he proporcionado en n-1. Acabo de agregar una actualización en n-1 para su necesidad, avíseme si copia y pega eso, necesito eliminar eso. Si aún así, hay un problema, hágamelo saber.
CodeNext
@CodeNext lo siento. He olvidado borrar el caché. Funciona perfecto Gracias por la ayuda. He copiado el código.
Antonín Slejška
4

Al agregar contenido a un controlador, bloque, entidad, campo u otros lugares, no necesita crear un enlace.

Usted puede agregar la etiqueta meta directamente a cualquier tema o elemento de render ( #theme, #type, #markup):

$build['username'] = [
  '#theme' => 'username',
  '#account' => \Drupal::currentUser(),
  '#attached' => [
    'html_head' => [
      [
        [
          '#tag' => 'meta',
          '#attributes' => [
            'name' => 'foo',
            'content' => 'bar',
          ],
        ],
        'my_module_foo',
      ],
    ],
  ],
];

Cuando se procesa, la etiqueta sube al nivel de la página y se agrega a la <head>...</head>sección.

En un gancho de preproceso que puede conectar al nivel superior de $variables, consulte /drupal//a/288989/47547

4k4
fuente