如何调整Drupal核心模块搜索页面的摘要长度?
调整Drupal核心搜索页面的摘要长度
以下是几种实用的实现方法,根据你的Drupal版本和开发习惯选择:
方法1:修改核心搜索配置(最简单)
Drupal核心搜索自带摘要长度配置项,直接调整即可:
- 用Drush命令快速修改(替换300为你需要的字符数):
drush config-set search.settings snippet_length 300 - 或者手动编辑配置文件:找到
sites/default/config/search.settings.yml,修改snippet_length的值为目标长度,保存后执行drush config-import生效。 - 操作完成后清空缓存,搜索结果的摘要长度就会更新。
方法2:通过主题/模块钩子自定义
如果需要更灵活的控制(比如针对特定内容类型调整),可以在自定义主题或模块中添加预处理钩子:
在你的主题.theme文件或自定义模块.module文件中添加以下代码,替换YOUR_THEME_OR_MODULE为实际名称:
function YOUR_THEME_OR_MODULE_preprocess_search_result(&$variables) { // 仅针对节点类型的搜索结果 $node = $variables['result']['node'] ?? NULL; if ($node && $node instanceof \Drupal\node\NodeInterface) { // 设置目标摘要长度,这里以300字符为例 $target_length = 300; // 提取并处理正文内容,过滤HTML标签后截取长度 $raw_content = strip_tags($node->body->value); $variables['snippet'] = \Drupal\Component\Utility\Xss::filterAdmin( substr($raw_content, 0, $target_length) . '...' ); } }
添加后清空缓存即可生效,这种方式可以针对不同内容类型、角色等设置不同的摘要长度。
方法3:使用Twig模板自定义
复制核心的搜索结果模板到你的主题,手动修改输出逻辑:
- 复制
core/modules/search/templates/search-result.html.twig到你的主题templates目录下; - 修改模板内容,替换原有
snippet输出部分,比如:
{# 替换原有的snippet输出代码 #} {% set longer_snippet = content.snippet|striptags|slice(0, 300) ~ '...' %} <div class="search-snippet">{{ longer_snippet|raw }}</div>
- 清空缓存,主题会自动加载自定义模板,实现更长的摘要输出。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

