我的Drupal 9实例中的一个内容类型使用Metatag模块。我希望提取“description”元值,并将其包含在一个小枝模板中(用于节点)。
但是,当我查看可用的变量时,它看起来像是field_metatag包含了serialize()-ed代码。
我想做这样的事
{{ node.field_metatag.description|e('html') }}发布于 2022-01-12 14:50:09
您可以通过node.field_metatag.value获得序列化数据。
但似乎没有现成的非序列化过滤器用于Twig。标记被隐藏在节点上,因为它们应该在页面级别上使用。因此,您可以自己编写一个非序列化过滤器,或者将描述预处理到模板中。
我发现下面的预处理是有效的。
/**
* Implements template_preprocess_node().
*/
function MYTHEME_preprocess_node(&$variables) {
$node = $variables['node'];
$tags = \Drupal::service('metatag.manager')
->tagsFromEntityWithDefaults($node);
if (!empty($tags['description'])) {
$description = \Drupal::service('metatag.token')
->replace($tags['description'], ['node' => $node]);
$variables['my_description'] = strip_tags($description);
}
}{% if my_description %}
{{ my_description }}
{% endif %}https://drupal.stackexchange.com/questions/309138
复制相似问题