<head>…</ head>セクションにメタタグを追加するにはどうすればよいですか?


19

<head>...</head>Drupal 8のセクション内に次のメタタグを追加するにはどうすればよいですか?

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

回答:


49

さまざまなソースから、Drupal 8でメタタグを追加するさまざまな方法を見つけたため、すべての方法をコンパイルしました。


1. THEME.themeファイルの使用

stakeoverflowでも同じ質問が行われたと思います。メタタグをdrupal 8の先頭に追加し@ Danielishkoの答えが表示された場合、彼は次のコードを提供しました。

THEME.themeファイルに次のコードを追加し、キャッシュをクリアするだけで準備完了です。注:function theme_preprocess_html(&$variables) {...}.themeファイルに既に存在している必要があるため、新しいファイルを作成しないでください。作成しないとエラーが発生します。

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

出力画像:

ここに画像の説明を入力してください


2.テンプレートファイルを使用:

このトピックに関して別の質問がありました:drupal 8メタタグを設定/削除する方法

上記のリンクの質問を読んだ場合、質問者は、html.html.twigテンプレートファイルを使用すると、メタタグを直接追加できると述べています。<head>....</head>

html.html.twigにあるファイルをcore/modules/sytem/templates/html.html.twigテーマのテンプレートフォルダにコピーして貼り付けると、テーマでそのテンプレートが使用されます。

から 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>

出力画像:

ここに画像の説明を入力してください

注: これは私自身のロジックであり、この参照を見つけようとしましたが、上記のリンクの質問者が提供する1行を除き、これに関する参照は見つかりませんでしたが、追加に使用できないテンプレートファイルを編集するため、タグ。これが正しい方法ではない場合は、コメントを提供してください、それは私にとっても学習経験になるでしょう、ありがとう。


3.独自のカスタムモジュールを作成する

このチュートリアルを参照する場合、Drupal 8で新しいHTMLタグを追加する、Drupal 8で頭にタグを追加する一般的な方法を説明しました。要件に応じて変更しました。このチュートリアルを参照できます。Drupal8:Drupal 8で単純なモジュールを開発する方法について、単純なモジュール作成します。次のコードがmodule_name.moduleファイルに追加されます。

以下のための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'];
}

この方法と1番目のオプションで説明した方法はまったく同じだと思います。


4. Drupalモジュールの使用

私は、このアプローチをどのように使用するかはわかりませんが、見つけようとしました。ここで言及しているのは、メタタグを追加する時点でこのモジュールが常にポップアップするためです。

このアプローチを使用すべきだと思います。受け入れられた回答では、彼はモジュールの方法を説明しており、そのためのMetatagモジュールを使用できます。このモジュールには、非常に一般的な依存モジュールTokenCtoolsがあります。その回答では、手順全体が説明されているため、ここでは言及しません。


投稿を書く前にメタタグモジュールをチェックしましたが、必要なものを出力するためにどのフィールドを選択する必要があるかわかりません。たとえそうであっても、すべてのコンテンツタイプに対してこれを行う必要があります。おそらくもっと快適な方法がありますか?
レスリーn。

@lesleyn。私は答えを更新し、メタタグを追加する別の方法を含めましたが、あなたのようにメタタグモジュールを使用して追加する方法を理解していませんでした、そのモジュールを通してトークンのリストに提供されたものにアクセスできますリストされたメタタグを使用して、そのためのトークンを作成することを決めたと思います。これは私の推測です。私がテストした他のアプローチは、彼らは働いています。
CodeNext

1
これは正しい=)+1としてマークする必要があります
Cyclonecode

1
@AntonínSlejška、n-1とn-3はほぼ同じ方法です。違いは、n-1では.themeファイルにコードを追加するのに対して、n-3ではそのためのカスタムモジュールを作成することです。私はn-1に行くと言うでしょう、それはきれいで簡単になります。また、HOMEPAGEの場合、n-1で提供したコードに追加のコード行が必要です。必要に応じてn-1にアップデートを追加しました。コピーアンドペーストする場合はお知らせください。削除する必要があります。それでもまだ問題がある場合は、お知らせください。
CodeNext

@CodeNextすみません。キャッシュをクリアするのを忘れました。それは完璧に動作します。助けてくれてありがとう。コードをコピーしました。
アントニンスレイシュカ

4

コントローラ、ブロック、エンティティ、フィールド、またはフックを作成する必要のない他の場所にコンテンツを追加するとき。

あなたが任意のテーマに直接メタタグを追加したり、要素をレンダリングすることができます(#theme#type#markup):

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

レンダリングされると、タグはページレベルまでバブルし、<head>...</head>セクションに追加されます。

プリプロセスフックでは、の最上位に接続でき$variablesます/drupal//a/288989/47547を参照してください


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.