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

Jekyll按主题分类存放文章并生成对应站点目录的方法

解决Jekyll按主题分类生成独立目录并适配导航的方案

一、用自定义集合(Collections)实现分类目录

Jekyll的自定义集合可以让你按主题管理文章,并生成对应独立目录,具体操作:

  1. 修改_config.yml添加集合配置
    在配置文件末尾添加以下内容,开启travel和work两个集合,并设置生成输出:
collections:
  travel:
    output: true
    permalink: /:collection/:title/ # 自定义文章路径格式,可选
  work:
    output: true
    permalink: /:collection/:title/
  • output: true 是核心设置,确保Jekyll为该集合生成独立的静态文件目录
  • permalink 定义文章URL结构,这里设置为/分类名/文章标题/,对应_site/travel/和_site/work/目录
  1. 创建对应集合文件夹
    在项目根目录下新建_travel和_work文件夹,将对应主题的文章放入其中。文章命名可沿用_posts的YYYY-MM-DD-标题.md格式,也可直接使用标题.md,按需选择。

  2. 文章Front Matter设置
    集合内的文章保留基础Front Matter即可,示例:

---
layout: post # 使用你现有文章的布局模板
title: "我的旅行日记"
date: 2024-05-20
---

二、适配你的路径导航代码

现在文章URL会变成/travel/我的旅行日记/或/work/工作总结/,拆分后的paths数组会包含travel或work,只需做两处调整:

  1. 在语言配置文件中添加分类名翻译
    找到site.data.locales[site.lang].tabs对应的配置文件(如_data/locales/zh.yml),添加分类对应的文本:
tabs:
  home: 首页
  travel: 旅行
  work: 工作
  # 保留原有tab项
  1. 修复导航代码的语法问题并优化
    原代码中{% elsif %}缺少判断条件,改为{% else %},同时过滤URL拆分后可能出现的空字符串:
{% assign paths = page.url | split: '/' %}

{% for item in paths %}
  {% if forloop.first %}
    <span>
      <a href="{{ '/' | relative_url }}">
        {{ site.data.locales[site.lang].tabs.home | capitalize }}
      </a>
    </span>
  {% elsif forloop.last %}
    {% if page.collection == 'tabs' %}
      <span>{{ site.data.locales[site.lang].tabs[item] | default: page.title }}</span>
    {% else %}
      <span>{{ page.title }}</span>
    {% endif %}
  {% else %}
    {% if item != "" %} <!-- 过滤URL开头的空字符串 -->
      <span>
        <a href="{{ '/' | append: item | relative_url }}">
          {{ site.data.locales[site.lang].tabs[item] | default: item }}
        </a>
      </span>
    {% endif %}
  {% endif %}
{% endfor %}

三、验证效果

运行bundle exec jekyll serve,访问旅行文章时导航会显示首页 > 旅行 > 我的旅行日记,工作文章则显示首页 > 工作 > 工作总结,对应静态文件会分别生成在_site/travel/和_site/work/目录下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:10:30