You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jekyll分类页侧边栏:按需加载自定义热门帖子列表求助

问题解决:分类页侧边栏加载对应热门帖子文件

需求说明

在博客侧边栏实现:针对每个分类页,若_includes/blog/feat-posts/目录下存在与分类名同名的热门帖子文件(如分类名为Java则对应Java.html),则加载该文件展示内容;若不存在,则显示默认的热门帖子链接。

原代码问题分析

原代码无法正常运行的核心问题有三点:

  • 错误遍历范围:site.static_files仅包含静态资源文件,_includes下的模板文件不在此范围内,因此遍历无法找到目标文件。
  • 变量解析失效:条件判断中直接将{{page.autopages.display_name}}写入固定字符串,Liquid不会解析该变量,导致路径始终无法匹配实际文件。
  • Include语法错误:嵌套的{{}}写法不符合Liquid模板规则,会引发解析失败。

修正后的代码

<h3>POPULAR POSTS</h3>
{% capture feat_post_path %}blog/feat-posts/{{ page.autopages.display_name }}.html{% endcapture %}
{% if feat_post_path | file_exists %}
  {% include {{ feat_post_path }} %}
{% else %}
  <p><a href="{{ site.baseurl }}/blog/filename1">Filename1 Text</a></p>
  <p><a href="{{ site.baseurl }}/blog/filename2">Filename2 Text</a></p>
{% endif %}

代码说明

  1. 路径拼接:通过{% capture %}将分类名与固定目录拼接成目标文件的相对路径(include标签默认从_includes目录查找,因此无需写全路径)。
  2. 存在性判断:使用file_exists过滤器检查拼接后的路径是否存在对应文件(该过滤器支持Jekyll 3.5及以上版本)。
  3. 内容加载逻辑:若文件存在则加载对应模板;否则渲染默认的热门帖子链接。

内容的提问来源于stack exchange,提问作者user973542

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:00:49