drupal截取正文作为摘要的方法

zhangzhijun 50次浏览 0个评论

在drupal主题开发中,通常会用到卡片式的布局,一般只显示标题,摘要和其他一些元数据。但大部分情况下,我们很少针对文章主动写摘要,因此就需要自动截取正文的内容作为摘要来使用。下面是几种简单的方法来截取正文摘要

方案1:使用twig过滤器

# 直接处理正文内容生成摘要 #}
{% set body_text = content.body|render|striptags|trim %}
{% set summary = body_text|length > 150 ? body_text|slice(0, 150) ~ '...' : body_text %}
<div class="summary">
 {{ summary }}
</div>

方案2:创建预处理函数

1、在themename.theme中创建预处理函数

function themename_preprocess_node(&$variables) {
 $node = $variables['node'];
 
 if ($node->hasField('body') && isset($variables['content']['body'])) {
   // 使用我们在 hook 中设置的摘要
   if (isset($variables['content']['body'][0]['#summary'])) {
     $variables['custom_summary'] = $variables['content']['body'][0]['#summary'];
   }
   // 或者直接在这里生成摘要
   elseif (!empty($node->body->value)) {
     $text = strip_tags($node->body->value);
     $variables['custom_summary'] = mb_substr($text, 0, 150) . (mb_strlen($text) > 150 ? '...' : '');
   }
 }
}

2、twig模板中通过预处理变量进行调用

{# node.html.twig #}
{% if custom_summary %}
 <div class="summary">
   {{ custom_summary }}
 </div>
{% endif %}

版权申明:

本博客所有文章除特别声明外均采用 BY-NC-SA 4.0 许可协议。依据 BY-NC-SA 4.0 许可协议,转载请附上原文出处链接及本声明。

原文链接: https://zhangzhijun.life/drupaljiequzhengwenzuoweizhaiyaodefangfa.html

Default Avatar

客官,说点什么吧!

此字段内容将保密,不会被其他人看见。