hugo博客

2018/03/20 web 共 2533 字,约 8 分钟

安装

主题

个人主题

商业主题

  • Saasify 风格不错,安装太复杂!!!
  • Agnes,安装太复杂!!!
  • Universal 专业,安装太复杂!!!

基础功能

  • 文档大纲层次顺序,参考: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发布变成了一件很麻烦的事,需要这么几步:

  1. 通过markdown格式很写blog
  2. 启动hugo server -D看效果
  3. 使用hugo -D生成部署文件
  4. 将上一步生成的部署文件上传到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_serveryour_useryour_password 替换为实际的 FTP 服务器地址、用户名和密码。

这样,每次编译后运行脚本,就只会将有变更的文件上传到 FTP 服务器上。

参考

文档信息

Search

    Table of Contents

    目录