<head>… </head> bölümüne bir meta etiketi nasıl eklerim?


19

<head>...</head>Drupal 8'deki bölüme aşağıdaki meta etiketi nasıl ekleyebilirim ?

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

Yanıtlar:


49

Farklı kaynaklardan, Drupal 8'de meta etiketler eklemenin farklı bir yolunu buldum, böylece tüm yolları derledim.


1. THEME.theme dosyasını kullanma

Ben aynı soru stakeoverflow üzerinde soruldu düşünüyorum: drupal 8 kafasına meta etiketi ekleyin ve @Danielishko cevabını görürseniz , Aşağıdaki kodu sağladı,

THEME.themeDosyanıza aşağıdaki kodu ekleyin , önbelleği temizleyin ve gitmekte fayda var. Not: function theme_preprocess_html(&$variables) {...}.theme dosyanızda zaten var olmalıdır, bu nedenle yeni bir tane oluşturmayın, aksi takdirde hata verecektir.

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

Çıktı görüntüsü:

resim açıklamasını buraya girin


2. Şablon dosyası aracılığıyla:

Bu konuda başka bir soru soruldu: drupal 8 meta etiketleri nasıl ayarlanır / kaldırılır .

Yukarıda belirtilen bağlantıda soruyu okuduysanız, Soru Sahibi html.html.twigşablon dosyasını kullanarak doğrudan meta etiketler ekleyebileceğinizi belirtmiştir .<head>....</head>

html.html.twigBu dosyayı core/modules/sytem/templates/html.html.twigkopyalayıp yapıştırabilir ve temanızın şablon klasörüne yapıştırabilirsiniz ve temanız bunu kullanır.

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

Çıktı Görüntü:

resim açıklamasını buraya girin

NOT: Bu benim kendi mantığım ve bunun için referans bulmaya çalıştı, yukarıdaki linkte bir satırda Soru Sorucusu tarafından sağlananlar dışında bununla ilgili herhangi bir referans bulamadık, ancak eklemek için kullanamadığımız başka şeyler eklemek için şablon dosyasını düzenlediğimiz için etiketleri. LÜTFEN BU DOĞRU YOL DEĞİLSE YORUMLAR SAĞLAYIN, aynı zamanda benim için öğrenme deneyimi olacak, teşekkürler.


3. Kendi Özel Modülünüzü oluşturun

Bu öğreticiye başvurursanız: Drupal 8'de yeni HTML etiketleri ekleme , Drupal 8'de başa etiket eklemenin genel yolunu açıkladı. Gereksiniminize göre değiştirdim. Bu eğiticiye başvurabilirsiniz: Drupal 8 : Drupal 8'de basit modülün nasıl geliştirileceği için Basit Bir Modül Oluşturun ve module_name.module dosyanızda aşağıdaki kod gidecek, hepsi bu.

için module_name.moduledosyanın,

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

Bence, 1. seçenekte açıklanan bu yöntem ve yöntem oldukça aynı.


4. Drupal modülünü kullanma

Emin değilim, bu yaklaşımı nasıl kullanacağımı bulmaya çalıştım. Burada söz ediyorum çünkü meta etiket ekleme noktası bu modül her zaman açılır.

Bence bu yaklaşımı kullanmalısın. Kabul edilen cevapta modül yolunu tanımladı ve bunun için Metatag modülünü kullanabilirsiniz . Bu modülün çok yaygın olan Token & Ctools modüllerine sahiptir . Bu cevapta tüm prosedür tarif edilmiştir, bu yüzden burada bahsetmiyorum.


Yazımı yazmadan önce meta etiket modülünü kontrol ettim, ancak istediğim alanı çıkarmak için hangi alanı seçmem gerektiğini bilmiyorum. Ve öyle olsa bile, bunu her içerik türü için yapmak zorundayım. Belki daha rahat bir yol var?
lesley

@lesleyn. Cevabımı güncelledim, metatag eklemenin farklı yollarını dahil ettim, ancak sizin gibi Metatag modüllerini nasıl ekleyeceğimi de anlamadım, bir şey, bu modül aracılığıyla token listesinde sağlanan her şeye erişebiliriz, listelenen meta etiketini kullanın, sanırım bunun için jeton oluşturduk, Bu benim vahşi tahminim. Othe test ettiğim yaklaştı ve onlar ÇALIŞIYOR.
CodeNext

1
Bu doğru olarak işaretlenmelidir =) +1
Cyclonecode

1
@ AntonínSlejška, Hem n-1 hem de n-3 hemen hemen aynı yöntemdir, fark n-1'de .theme dosyasına kod eklerken n-3'te bunun için özel modül oluşturursunuz. N-1 için gitmek söyleyebilirim, temiz ve kolay olacak. Ve ANASAYFA için, n-1'de verdiğim kodda ekstra kod satırı eklemeniz gerekiyor. İhtiyacınız için n-1'de güncelleme ekledim, bunu kopyalayıp yapıştırırsanız bana bildirin, silmem gerekiyor. Hâlâ sorun varsa, lütfen bana bildirin.
CodeNext

@CodeNext Üzgünüm. Önbelleği temizlemeyi unuttum. Mükemmel çalışıyor. Yardım için teşekkürler. Kodu kopyaladım.
Antonín Slejška

4

Bir denetleyiciye, engellemeye, varlığa, alana veya başka yerlere içerik eklerken kanca oluşturmanıza gerek yoktur.

Herhangi bir tema doğrudan meta etiketi ekleyebilir veya eleman işleyebilen ( #theme, #type, #markup):

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

Oluşturulduğunda, etiket sayfa düzeyine kadar kabarcıklar oluşturur ve <head>...</head>bölüme eklenir .

Bir üst işlem kancasında en üst seviyeye takabilirsiniz $variables, bkz. Https://drupal.stackexchange.com/a/288989/47547


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.