安装
- Node.js 官网 下载并安装nodejs
- 访问 Hugo 官方下载页面,找到最新版本的
hugo_extended_*.windows-amd64.zip
文件并下载。 - 主题:Themes
主题
个人主题
商业主题
基础功能
文档大纲层次顺序,参考:Navigation — Doks,对于目录级别的层次顺序,修改
config\_default\menus\menus.en.toml
,例如:[[sidebar_docs]] name = "标题123" pageRef = "/docs/guides" weight = 1 [[sidebar_docs]] name = "标题345" pageRef = "/docs/reference" weight = 2 [[sidebar_docs]] name = "标题456" pageRef = "/docs/resources" weight = 3
对于目录内部的文章层次顺序,修改内容开头的
weight
字段,数值越大越靠后。文档大纲默认展开:修改文档目录及子目录下的
_index.md
文件:sidebar: collapsed: false
文章内容大纲层次:
toc: true
,并且markdown的内容的大纲标题要从二级标题开始使用才会有大纲效果,一级标题不会显示!
增强功能
模板
模板的内容,可以自行修改 archetypes/default.md
例如:
---
title: ''
date:
draft: false
lastmod:
tags: ["python"]
categories: ["Programming"]
authors:
- "iswbm"
---
首页导航菜单
How to get the drop down navigation button? · thuliteio/doks · Discussion #1113,参考老文档:https://v0-4-2–getdoks.netlify.app/docs/recipes/menus/#add-to-main-menu
高亮块
简单的:
内容。。。
复杂的:
内容。。。
context的值可以是:
tip
caution
danger
站内搜索
SEO
多语言
参考:Internationalization (i18n) — Doks
自动发布
每次写完新的blog发布变成了一件很麻烦的事,需要这么几步:
- 通过markdown格式很写blog
- 启动
hugo server -D
看效果 - 使用
hugo -D
生成部署文件 - 将上一步生成的部署文件上传到ftp server:由于资源的上传不知道哪些资源有变更,还需要先把已经存在的资源先删除,再重启全部上传一遍。
最后一步最烦,所花的时间也最久。
在网上查了一下hugo自动部署到ftp,还是有办法的。
使用 Hugo 编写博客文章后,配合 SVN 和 FTP 只上传变更文件到 FTP服务器。
配置 SVN
- 首先将 Hugo 项目目录纳入 SVN 版本控制,在项目根目录下执行
svn init
初始化 SVN 仓库,然后使用svn add
命令将项目文件添加到版本库,最后通过svn commit
提交初始版本。
编写博客文章
- 使用 Hugo 的命令
hugo new post/your - post - name.md
来创建新的博客文章,在生成的 Markdown 文件中编写内容。完成后使用hugo
命令编译项目,生成静态网站文件。
利用 SVN 检查变更
- 在项目根目录下执行
svn status
命令,该命令会显示自上次提交以来发生变更的文件列表。新增的文件会显示为?
,修改过的文件会显示为M
。
编写脚本上传变更文件
- 可以编写一个脚本(如 Python 脚本)来处理上传过程。脚本中使用
subprocess
模块调用svn status
命令获取变更文件列表,然后使用 FTP 相关的库(如ftplib
)连接到 FTP 服务器,将变更的文件逐个上传。示例代码如下:
import subprocess
from ftplib import FTP
# 获取SVN变更文件列表
def get_changed_files():
result = subprocess.run(['svn', 'status'], capture_output=True, text=True)
lines = result.stdout.splitlines()
changed_files = [line[8:] for line in lines if line.startswith('M ') or line.startswith('? ')]
return changed_files
# 上传文件到FTP
def upload_files_to_ftp(files, ftp_server, ftp_user, ftp_password):
with FTP(ftp_server) as ftp:
ftp.login(ftp_user, ftp_password)
for file in files:
with open(file, 'rb') as f:
ftp.storbinary(f'STOR {file}', f)
if __name__ == '__main__':
changed_files = get_changed_files()
if changed_files:
ftp_server = 'your_ftp_server'
ftp_user = 'your_user'
ftp_password = 'your_password'
upload_files_to_ftp(changed_files, ftp_server, ftp_user, ftp_password)
print('上传成功')
else:
print('没有变更文件需要上传')
将脚本中的 your_ftp_server
、your_user
、your_password
替换为实际的 FTP 服务器地址、用户名和密码。
这样,每次编译后运行脚本,就只会将有变更的文件上传到 FTP 服务器上。
参考
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/web/hugo.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)