#自定义与扩展

Lichtung 支持多种方式扩展和自定义主题外观。

##自定义 CSS / SCSS

主题会自动加载 css/custom/ 目录下的所有 CSS 和 SCSS 文件:

TEXT
assets/
└── css/
    └── custom/
        ├── override.scss   # 覆盖主题变量
        └── extra.css       # 额外样式

文件按名称排序后追加到主题默认样式表末尾,可覆盖任何主题样式。

###常用覆盖示例

scss
// assets/css/custom/override.scss

// 修改主题色
:root {
  --accent: #2d7d46;
}

// 修改字体
body {
  font-family: "Noto Serif SC", serif;
}

###CSS pipeline

主题将所有 SCSS 文件编译、合并、压缩为一个指纹化的 stylesheet.css,自定义文件自动纳入此流程,无需手动引入 <link> 标签。

##图标系统

主题内置 100+ SVG 图标,定义在 data/icons.yaml,基于 Heroicons v1 + 自定义图标。

###使用图标

社交链接和侧边栏链接通过 icon 字段引用图标名:

toml
[[params.social]]
name = 'github'
url = 'https://github.com/username'
icon = 'github'
toml
[[params.links]]
name = '文档'
url = 'https://docs.example.com'
description = '技术文档'
icon = 'book-open'

###可用图标

常用图标名(完整列表见主题 data/icons.yaml):

图标名用途
githubGitHub
gitlabGitLab
codebergCodeberg
bitbucketBitbucket
rssRSS 订阅
mail邮件
bilibiliB 站
link通用链接
book-open文档
globe网站
star置顶标记

其余图标名对应 Heroicons v1 的 outlined 系列,如 homedocumentpenciltag 等。

###添加自定义图标

在站点的 data/icons.yaml 中追加 SVG 内容即可:

yaml
# data/icons.yaml
myicon: >
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
    <path d="..." />
  </svg>

之后在任何 icon 字段中使用 "myicon" 即可。模板中通过 partials/icon.html 渲染,找不到指定图标时回退为 link 图标。

##页脚自定义

###自定义文本

toml
[params]
footer = '© 2024 我的站点'

设置后页脚左侧显示自定义文本,否则显示默认的版权信息。

###版权协议

页脚右侧显示 Creative Commons 协议,全局默认:

toml
[params]
copyright = 'nc-sa'

单篇文章可覆盖:

yaml
---
title: 原创文章
copyright: by-nc-nd
---

常见值:

协议
byCC BY 4.0
by-saCC BY-SA 4.0
by-ncCC BY-NC 4.0
nc-saCC BY-NC-SA 4.0(默认)
by-ndCC BY-ND 4.0
by-nc-ndCC BY-NC-ND 4.0

###页脚结构

页脚固定显示以下信息:

##暗色模式

主题支持暗色模式,通过顶栏的对比度图标切换:

暗色模式为 CSS 变量切换实现,无需重新加载页面。

##Giscus 跟随暗色模式

Giscus 评论系统自动使用 preferred_color_scheme 主题,随暗色模式切换而变化。

##自定义 JS

主题的 JS 通过 Hugo pipeline 构建(assets/main.js),生产环境下自动压缩并添加 SRI integrity 属性。

如需注入额外的 JavaScript,可在 layouts/partials/ 下创建覆盖模板。