답변:
다른 소스에서 Drupal 8에 메타 태그를 추가하는 다른 방법을 찾았으므로 모든 방법을 컴파일했습니다.
같은 질문이 스테이크 오버 플로우에 대해 질문 된 것 같습니다 : 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'];
}
출력 이미지 :
이 주제에 대한 또 다른 질문이 제기되었습니다 : 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가 제공 한 줄을 제외하고는 이것에 관한 참조를 찾지 못했지만 다른 것을 추가하기 위해 템플릿 파일을 편집하기 때문에 추가 할 수없는 이유는 무엇입니까? 태그. 의견을 제시하십시오. 이것이 옳은 방법이 아니라면 나에게도 경험이 될 것입니다. 감사합니다.
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'];
}
첫 번째 옵션에 설명 된이 방법과 방법은 상당히 동일합니다.
잘 모르겠습니다.이 방법을 사용하는 방법을 찾으려고 노력했습니다. 여기에서는 메타 태그를 추가 할 때이 모듈이 항상 팝업되기 때문에 언급하고 있습니다.
나는이 접근법을 사용해야한다고 생각합니다. 허용 된 답변에서 그는 모듈 방식을 설명했으며 메타 태그 모듈을 사용할 수 있습니다 . 이 모듈에는 Token & Ctools 종속 모듈이 있으며 이는 매우 일반적인 것입니다. 그 대답에는 전체 절차가 설명되어 있으므로 여기서 언급하지는 않습니다.
컨트롤러, 블록, 엔티티, 필드 또는 기타 장소에 컨텐츠를 추가 할 때 후크를 만들 필요가 없습니다.
당신은 어떤 테마에 직접 메타 태그를 추가하거나 요소를 렌더링 할 수있다 ( #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을
테마의 페이지 첨부에 변경 후크를 사용할 수 있으며 사용해야합니다.
function THEME_page_attachments_alter(array &$page) {
$page['#attached']['library'][] = 'theme_name/main';
}