Drupal 10.2.2搜索结果中如何在标题旁显示日期?
在Drupal 10.2.2的Search模块结果中添加日期(Twig实现)
完全可以通过Twig模板+主题预处理实现,步骤如下:
1. 准备搜索结果模板文件
Drupal默认的搜索结果模板是search-result.html.twig,你需要:
- 从
core/modules/search/templates/目录复制该文件到你的主题目录下的templates/search/文件夹(若没有search子文件夹,手动新建)。 - 主题会优先加载自身目录下的模板文件,确保文件路径和命名正确。
2. 通过主题预处理传递日期变量
在你的主题.theme文件(比如mytheme.theme)中添加以下代码,将节点的创建/修改时间传递给Twig模板:
function mytheme_preprocess_search_result(&$variables) { $result = $variables['result']; // 仅处理节点类型的搜索结果 if (isset($result['node']) && $result['node'] instanceof \Drupal\node\Entity\Node) { $node = $result['node']; // 格式化创建时间,可替换'medium'为站点已有的日期格式机器名(如'long')或自定义格式 $variables['node_created'] = \Drupal::service('date.formatter')->format( $node->getCreatedTime(), 'medium' ); // 若需显示修改时间,替换为以下代码: // $variables['node_changed'] = \Drupal::service('date.formatter')->format( // $node->getChangedTime(), // 'medium' // ); } }
3. 修改Twig模板添加日期显示
打开复制到主题目录的search-result.html.twig,找到标题所在的<h3>标签块,添加日期显示逻辑:
<h3{{ title_attributes }}> <a href="{{ url }}" rel="bookmark">{{ title }}</a> {% if node_created %} <span class="search-result-date">{{ node_created }}</span> {% endif %} </h3>
如果用修改时间,将node_created替换为node_changed即可。
4. 美化日期样式(可选)
在主题的CSS文件中添加样式,调整日期的显示效果:
.search-result-date { font-size: 0.85em; color: #777; margin-left: 12px; font-weight: normal; }
5. 清除站点缓存
完成操作后,进入Drupal后台配置 > 性能页面,点击"清除所有缓存",使新的模板和预处理代码生效。
内容的提问来源于stack exchange,提问作者ufoPilotu
相关产品推荐
相关产品推荐

