Como adiciono uma metatag na seção <head>… </head>?

19

Como posso adicionar a seguinte metatag na <head>...</head>seção do Drupal 8?

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

Respostas:

49

De fontes diferentes, encontrei uma maneira diferente de adicionar meta tags no Drupal 8, portanto, compilando todas as formas.


1. Usando o arquivo THEME.theme

Acho que a mesma pergunta foi feita no stakeoverflow: adicione a metatag à cabeça no drupal 8 e, se você vir a resposta de @Danielishko , ele forneceu o seguinte código,

Basta adicionar o seguinte código no seu THEME.themearquivo, limpar o cache e você estará pronto. Nota: function theme_preprocess_html(&$variables) {...}já deve estar lá no seu arquivo .theme, portanto, não crie um novo, caso contrário, ocorrerá um erro.

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

Imagem de saída:

insira a descrição da imagem aqui


2. Através do arquivo de modelo:

Outra pergunta foi feita sobre este tópico: Como configurar / remover as metatags drupal 8 .

Se você ler a pergunta no link acima mencionado, o Questioner mencionou que, usando o html.html.twigarquivo de modelo, você pode adicionar diretamente metatags às<head>....</head>

html.html.twigarquivo que você pode encontrar em core/modules/sytem/templates/html.html.twig, Você pode copiar e colar isso na pasta de modelos do seu tema e o seu tema usará esse.

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

Imagem de saída:

insira a descrição da imagem aqui

NOTA: Esta é minha própria lógica e tentei encontrar referência para isso, não encontrei nenhuma referência a esse respeito, exceto uma linha fornecida pelo Questionador no link acima, mas como editamos o arquivo de modelo para adicionar outras coisas, por que não podemos adicionar Tag. FORNECER COMENTÁRIOS SE ESTA NÃO É A MANEIRA CERTA DE FAZER, Também será uma experiência de aprendizado para mim, obrigado.


3. Crie seu próprio módulo personalizado

Se você se referir a este tutorial: Adicionando novas tags HTML no Drupal 8 , Ele descreveu a maneira geral de adicionar tags à cabeça no Drupal 8. Modifiquei conforme sua exigência. Você pode consultar este tutorial: Drupal 8: Crie um módulo simples para saber como desenvolver um módulo simples no Drupal 8, e o código a seguir aparecerá no seu arquivo module_name.module, é isso.

para module_name.modulearquivo

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

Penso que este método e o método descritos na 1ª opção são iguais.


4. Usando o módulo Drupal

Não tenho certeza, como usar essa abordagem, tentei encontrar. Aqui estou mencionando, porque quando o ponto de adicionar metatags vem esse módulo sempre pop-up.

Eu acho que essa abordagem você deve usar. Na resposta aceita, ele descreve a maneira do módulo e você pode usar o módulo Metatag para isso. Este módulo possui módulos dependentes Token & Ctools , o que é muito comum. Nessa resposta, todo o procedimento foi descrito, portanto, não estou mencionando aqui.

CodeNext
fonte
Verifiquei o módulo de metatag antes de escrever minha postagem, mas não sei qual campo devo escolher para exibir o que quero. E mesmo que seja assim, eu tenho que fazer isso para cada tipo de conteúdo. Talvez haja uma maneira mais confortável?
lesley n.
@lesleyn. Eu atualizei minha resposta, incluí uma maneira diferente de adicionar metatags, mas como você também não descobri como adicionar usando os módulos Metatag, acho que, através desse módulo, podemos acessar o que for fornecido na lista de tokens. use seu metatag listado, acho que precisamos criar um token para isso, esse é apenas meu palpite. Othe se aproximou eu testei, e eles estão trabalhando.
CodeNext
1
Isso deve ser marcado como correto =) +1
Cyclonecode
1
@ AntonínSlejška, Ambos n-1 e n-3 são praticamente o mesmo método, a diferença está em n-1, você está adicionando código no arquivo .theme, enquanto no n-3 você está criando um módulo personalizado para isso. Eu diria que vá para o n-1, será limpo e fácil. E para HOMEPAGE, você precisa de uma linha extra de código no código que forneci no n-1. Acabei de adicionar a atualização no n-1 para sua necessidade, deixe-me saber se você copiar e colar isso, preciso excluir isso. Se ainda houver algum problema, entre em contato.
CodeNext
@CodeNext Sinto muito. Esqueci de limpar o cache. Funciona perfeito. Obrigado pela ajuda. Eu copiei o código.
Antonín Slejška
4

Ao adicionar conteúdo a um controlador, bloco, entidade, campo ou outro local, você não precisa criar um gancho.

Você pode adicionar a meta tag diretamente a qualquer tema ou tornar elemento ( #theme, #type, #markup):

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

Quando renderizada, a tag borbulha até o nível da página e é adicionada à <head>...</head>seção.

Em um gancho de pré-processo, você pode anexar ao nível superior de $variables, consulte /drupal//a/288989/47547

4k4
fonte