Skip to content

Repository files navigation

AyeeshaCheng Tech World

个人技术博客。基于 Jekyll 4.4 + So Simple 主题(jekyll-theme-so-simple gem),部署到 GitHub Pages(ayeeshacheng.github.io)。

本文档记录项目主要文件结构与关键机制,便于后续修改与维护。


本地运行

bundle install            # 首次/依赖变更后
bundle exec jekyll serve  # 本地预览 http://localhost:4000
bundle exec jekyll build  # 构建到 _site/

Windows 下用 PowerShell/Bash 均可;务必用 bundle exec 以确保使用 Gemfile 锁定的 Jekyll 版本。


项目结构

.
├── _config.yml              # ★ 站点主配置(皮肤/导航/首页分区/固定链接)
├── Gemfile / Gemfile.lock   # Ruby 依赖(主题 gem 在此声明)
├── index.md                 # 首页入口(layout: home)
├── categories.md            # 分类页(permalink: /categories/)
├── 404.html                 # 404 页
│
├── _data/                   # 站点数据(YAML,供 Liquid 读取)
│   ├── navigation.yml       #   顶部导航菜单项
│   ├── authors.yml          #   作者信息(头像/简介/社交链接)
│   └── text.yml             #   界面文案(主题 UI 字符串)
│
├── _layouts/                # 布局模板(本地覆盖主题同名文件)
│   ├── default.html         #   全局骨架:导航 → 内容 → 页脚 → 返回顶部
│   ├── home.html            #   首页:英雄区 + 按 home_sections 渲染分区
│   ├── post.html            #   文章页:标题/元信息/正文/分享/上下篇
│   ├── page.html            #   通用页
│   └── categories.html 等   #   分类/标签/搜索等归档页
│
├── _includes/               # 局部模板(本地覆盖主题同名文件 + 新增)
│   ├── navigation.html      #   粘性导航:logo + 菜单 + 移动端汉堡按钮
│   ├── hero.html            #   ★ 英雄区(标题/副标题/CTA 按钮)
│   ├── post-card.html       #   ★ 首页文章卡片
│   ├── footer.html          #   三栏页脚(品牌/快速链接/关注+订阅)
│   ├── back-to-top.html     #   ★ 返回顶部浮钮(含滚动 JS)
│   └── ...                  #   其余为主题自带(文章元信息/分享/分页等)
│
├── _sass/                   # ★ 自定义样式 partial(本次新增,见「样式系统」)
│   ├── _framework.scss      #   聚合入口,@import 以下 7 个组件
│   ├── _framework-nav.scss  #   导航样式
│   ├── _framework-hero.scss #   英雄区样式
│   ├── _framework-page.scss #   页面卡片容器
│   ├── _framework-cards.scss#   首页分区 + 文章卡片
│   ├── _framework-divider.scss # 分隔线
│   ├── _framework-footer.scss  # 页脚样式
│   └── _framework-backtotop.scss # 返回顶部
│
├── assets/css/
│   ├── main.scss            # 主样式入口(@import "so-simple")
│   └── skins/               # ★ 三套配色皮肤(暗色/浅色/默认)
│       ├── dark.scss        #   暗色(当前启用)
│       ├── light.scss
│       └── default.scss
│
├── _posts/                  # 文章(按分类建子目录,见「内容写作」)
│   ├── 2021-04-25-aboutme_tester.markdown  # 「关于我」页内容(帖子形式)
│   ├── web3/                # Web3 分类
│   ├── workflow/            # N8N / workflow 分类
│   └── 测试/                # SoftwareTest 分类
│
├── docs/images/             # 图片资源(logo、头像、文章配图)
├── openspec/                # OpenSpec 变更管理(proposal/design/tasks)
└── samples/                 # 页面框架参考样式(非站点内容)

★ = 本次「页面框架改造」新增或重写的文件。


关键机制 1:主题覆盖(Theme Override)

So Simple 主题以 gem 形式安装,本地同名文件会逐文件覆盖主题 gem 里的对应文件(不是整体替换)。

  • 想改某个主题布局/局部,就从 gem 里拷出对应文件到本地同名路径再编辑。
  • gem 路径(Windows 示例): C:\Users\<用户>\.local\share\gem\ruby\3.2.0\gems\jekyll-theme-so-simple-3.2.0\

已本地覆盖的目录:_layouts/_includes/_data/assets/css/_sass/(新增)。


关键机制 2:皮肤与样式系统(重要)

配色由 assets/css/skins/*.scss 定义,每个皮肤文件先定义颜色变量($background-color$accent-color 等),再 @import "so-simple/skin" 套用主题,最后 @import "framework" 引入本地框架组件。

⚠️ 皮肤 .scss 文件顶部必须保留空 front matter ---\n---\n,否则 Jekyll 会把该文件当作静态文件、根本不编译(症状:改配色/样式不生效,渲染的仍是主题默认色)。三个皮肤文件顶部现在都有:

---
---

@charset "utf-8";
...

新增/修改样式的流程:

  1. _sass/_framework-*.scss 里写样式(颜色一律用 $xxx-color 变量,不要硬编码色值);
  2. 若新增组件,在 _sass/_framework.scss@import 它;
  3. 颜色变量在对应皮肤 .scss 顶部统一维护,三套皮肤各配一套。

关键机制 3:首页分区

首页按 _config.yml 里的 home_sections 列表,按固定顺序渲染各分类的文章卡片:

home_sections:
  - name: Web3
  - name: N8N
  - name: SoftwareTest

hero_cta_text: "开始阅读"   # 英雄区按钮文案
  • name 需对应文章 front-matter 里的 categories(大小写敏感)。
  • 想新增首页分区:在此列表加一项 + 给文章写对应 categories 即可。
  • 无文章的分类会自动跳过、不渲染空分区。

内容写作

新建文章:在 _posts/(或对应分类子目录)下建 YYYY-MM-DD-标题.markdown,front-matter 至少:

---
layout: post
title:  "文章标题"
date:   2026-01-18 12:00:00 +0800
categories: Web3        # 决定它出现在首页哪个分区
---

固定链接_config.ymlpermalink: /:categories/:title/,URL 由分类 + 标题生成。

导航菜单:编辑 _data/navigation.yml(顶部导航)与 _data/footer_links_config.yml 中页脚社交图标)。


已知注意事项

  • Gemfile 里残留 minima gem:是 Jekyll 脚手架默认带入的,未使用(实际主题是 jekyll-theme-so-simple),可删可不删。
  • _data/authors.yml 残留样例作者 Cornelius Fiddlebone:未使用,可清理;当前生效作者为 AyeeshaCheng
  • 构建时的 Sass 弃用警告slash-div / strict-unary / if-function 等):来自主题 gem 自身代码,与本地改动无关,不影响产物,可忽略。
  • samples/ 目录:仅作页面框架设计参考,不属于站点内容。

About

AyeeshaCheng Tech Blog

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages