Come faccio ad aggiungere un meta tag nella sezione <head> ... </head>?


19

Come posso aggiungere il seguente meta tag all'interno della <head>...</head>sezione in Drupal 8?

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

Risposte:


49

Da fonti diverse ho trovato un modo diverso di aggiungere meta tag in Drupal 8, quindi compilando tutti i modi.


1. Utilizzo del file THEME.theme

Penso che la stessa domanda sia stata posta su stakeoverflow: aggiungi meta tag a testa in drupal 8 e se vedi la risposta di @Danielishko , ha fornito il seguente codice,

Aggiungi il seguente codice nel tuo THEME.themefile, svuota la cache e sarai a posto. Nota: function theme_preprocess_html(&$variables) {...}dovrebbe essere già presente nel tuo file .theme, quindi non crearne uno nuovo, altrimenti genererà un errore.

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

Immagine di uscita:

inserisci qui la descrizione dell'immagine


2. Tramite il file modello:

È stata posta un'altra domanda su questo argomento: come impostare / rimuovere i meta tag drupal 8 .

Se leggi la domanda nel link sopra menzionato, Questioner ha menzionato che usando il html.html.twigfile modello puoi aggiungere direttamente i meta tag<head>....</head>

html.html.twigfile che puoi trovare in core/modules/sytem/templates/html.html.twig, puoi copiarlo e incollarlo nella cartella del modello del tuo tema e il tuo tema lo userà.

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

Immagine di uscita:

inserisci qui la descrizione dell'immagine

NOTA: questa è la mia logica e ho cercato di trovare un riferimento per questo, non ho trovato alcun riferimento a riguardo tranne una riga fornita da Interrogatore nel link sopra, ma poiché modifichiamo il file modello per aggiungere altre cose perché non possiamo usare per aggiungere tag. PER FAVORE, COMMENTI SE QUESTO NON È UN MODO GIUSTO DA FARE, sarà anche un'esperienza di apprendimento per me, grazie.


3. Crea il tuo modulo personalizzato

Se fai riferimento a questo tutorial di: Aggiunta di nuovi tag HTML in Drupal 8 , Ha descritto il modo generale di aggiungere tag per andare a capo in Drupal 8. Ho modificato secondo le tue esigenze. Puoi fare riferimento a questo tutorial: Drupal 8: Crea un modulo semplice per come sviluppare un modulo semplice in Drupal 8, e il codice seguente andrà nel tuo file module_name.module, tutto qui.

per module_name.modulefile,

<?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 che questo metodo e il metodo descritti nella prima opzione siano abbastanza uguali.


4. Utilizzo del modulo Drupal

Non sono sicuro di come utilizzare questo approccio, ho cercato di trovare. Qui sto citando perché quando arriva il punto di aggiungere meta tag questo modulo appare sempre pop-up.

Penso che questo approccio che dovresti usare. Nella risposta accettata ha descritto il modo del modulo e puoi usare il modulo Metatag per questo. Questo modulo ha moduli dipendenti Token & Ctools , cosa molto comune. In quella risposta è stata descritta l'intera procedura, quindi non sto citando qui.


Ho controllato il modulo metatag prima di scrivere il mio post, ma non so quale campo devo scegliere per produrre ciò che voglio. E anche se così fosse, devo farlo per ogni tipo di contenuto. Forse c'è un modo più comodo?
lesley n.

@lesleyn. Ho aggiornato la mia risposta, ho incluso un modo diverso di aggiungere metatag, ma come te non ho anche capito come aggiungere usando i moduli Metatag, penso che attraverso quel modulo possiamo accedere a tutto ciò che viene fornito nell'elenco dei token, quindi usa il tuo metatag elencato, penso che non abbiamo creato token per questo, questa è solo la mia supposizione. Si è avvicinato e ho provato e stanno funzionando.
CodeNext

1
Questo dovrebbe essere contrassegnato come corretto =) +1
ciclico

1
@ AntonínSlejška, Sia n-1 che n-3 sono praticamente lo stesso metodo, la differenza è in n-1 che stai aggiungendo codice nel file .theme mentre in n-3 stai creando un modulo personalizzato per quello. Direi di andare per n-1, sarà pulito e facile. E per HOMEPAGE, è necessario aggiungere una riga di codice nel codice che ho fornito in n-1. Ho appena aggiunto l'aggiornamento in n-1 per le tue necessità, fammi sapere se lo incolli, devo eliminarlo. Se il problema persiste, per favore fatemi sapere.
CodeNext

@CodeNext Mi dispiace. Ho dimenticato di cancellare la cache. Funziona perfettamente Grazie per l'aiuto. Ho copiato il codice.
Antonín Slejška,

4

Quando si aggiunge contenuto a un controller, blocco, entità, campo o altri luoghi non è necessario creare un hook.

È possibile aggiungere il meta tag direttamente a qualsiasi tema o rendere 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 viene eseguito il rendering, il tag passa a livello di pagina e viene aggiunto alla <head>...</head>sezione.

In un hook di preelaborazione è possibile collegare al livello superiore di $variables, consultare /drupal//a/288989/47547


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.