<head>… </ head> 섹션에서 메타 태그를 어떻게 추가합니까?


19

<head>...</head>Drupal 8 의 섹션 안에 다음 메타 태그를 추가하려면 어떻게 해야합니까?

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

답변:


49

다른 소스에서 Drupal 8에 메타 태그를 추가하는 다른 방법을 찾았으므로 모든 방법을 컴파일했습니다.


1. THEME.theme 파일 사용

같은 질문이 스테이크 오버 플로우에 대해 질문 된 것 같습니다 : 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 메타 태그를 설정 / 제거하는 방법 .

위에서 언급 한 링크에서 질문을 읽으면 Questioner는 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>

출력 이미지 :

여기에 이미지 설명을 입력하십시오

참고 : 이것은 내 자신의 논리이며 이것에 대한 참조를 찾으려고했지만 위의 링크에서 Questioner가 제공 한 줄을 제외하고는 이것에 관한 참조를 찾지 못했지만 다른 것을 추가하기 위해 템플릿 파일을 편집하기 때문에 추가 할 수없는 이유는 무엇입니까? 태그. 의견을 제시하십시오. 이것이 옳은 방법이 아니라면 나에게도 경험이 될 것입니다. 감사합니다.


3. 나만의 커스텀 모듈 만들기

Drupal 8에서 새 HTML 태그 추가 튜토리얼을 참조하면 Drupal 8 에서 헤드에 태그를 추가하는 일반적인 방법을 설명했습니다. 요구 사항에 따라 수정했습니다. Drupal 8 에서 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'];
}

첫 번째 옵션에 설명 된이 방법과 방법은 상당히 동일합니다.


4. Drupal 모듈 사용

잘 모르겠습니다.이 방법을 사용하는 방법을 찾으려고 노력했습니다. 여기에서는 메타 태그를 추가 할 때이 모듈이 항상 팝업되기 때문에 언급하고 있습니다.

나는이 접근법을 사용해야한다고 생각합니다. 허용 된 답변에서 그는 모듈 방식을 설명했으며 메타 태그 모듈을 사용할 수 있습니다 . 이 모듈에는 Token & Ctools 종속 모듈이 있으며 이는 매우 일반적인 것입니다. 그 대답에는 전체 절차가 설명되어 있으므로 여기서 언급하지는 않습니다.


게시물을 작성하기 전에 메타 태그 모듈을 확인했지만 원하는 필드를 출력하기 위해 어떤 필드를 선택해야하는지 모르겠습니다. 그리고 모든 콘텐츠 유형에 대해이 작업을 수행 해야하는 것보다 그렇습니다. 더 편안한 방법이 있습니까?
레슬리 n.

@lesleyn. 내 답변을 업데이트하고 메타 태그를 추가하는 다른 방법을 포함 시켰지만 메타 태그 모듈을 사용하여 추가하는 방법을 알지 못 했으므로 해당 모듈을 통해 토큰 목록에 제공된 모든 것에 액세스 할 수 있습니다. 나열된 메타 태그를 사용하십시오. 토큰을 만들려고 생각했습니다. 이것은 저의 추측입니다. Othe가 테스트를 거쳤으며 작동 중입니다.
CodeNext

1
이것은 올바른 것으로 표시되어야합니다 =) +1
Cyclonecode

1
@ AntonínSlejška, n-1과 n-3은 거의 같은 방법입니다. 차이는 n-1에 있습니다 .n-3에서는 코드를 .theme 파일에 추가하는 반면 n-3에서는 사용자 정의 모듈을 만듭니다. 나는 n-1로 가라고 말하고 깨끗하고 쉬울 것입니다. 그리고 HOMEPAGE의 경우 n-1에서 제공 한 코드에 추가 코드 줄이 필요합니다. 방금 귀하의 필요에 따라 n-1에 업데이트를 추가했습니다. 복사하여 붙여 넣으면 알려주십시오. 삭제해야합니다. 그래도 문제가 있으면 알려주세요.
CodeNext

@CodeNext 죄송합니다. 캐시를 지우는 것을 잊었습니다. 완벽하게 작동합니다. 도와 주셔서 감사합니다. 코드를 복사했습니다.
Antonín Slejška

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.