Answers:
从不同的来源,我发现了在Drupal 8中添加元标记的不同方法,因此可以进行各种编译。
我认为在stockoverflow上也有人问过同样的问题:在drupal 8的头部添加meta标签 ,如果您看到@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 meta标签。
如果您在上述链接中阅读了问题,那么Questioner提到使用html.html.twig
模板文件可以直接将meta标签添加到<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>
输出图像:
注意: 这是我自己的逻辑,并试图为此找到参考,除了上面链接中Quester提供的一行内容外,我没有找到与此有关的任何参考,但是由于我们编辑模板文件以添加其他内容,所以我们不能使用添加标签。如果这不是正确的方法,请提供意见,这对我来说也是学习的经验,谢谢。
如果您参考本教程:在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'];
}
我认为,此方法与第一个选项中描述的方法完全相同。
我不确定如何尝试使用这种方法。我在这里提及的原因是,当添加元标记时,该模块始终会弹出。
我认为您应该使用这种方法。在接受的答案中,他描述了模块方式,您可以使用Metatag模块。该模块具有依赖模块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
您可以并且应该对主题中的页面附件使用alter钩子。
function THEME_page_attachments_alter(array &$page) {
$page['#attached']['library'][] = 'theme_name/main';
}