hugo博客

2018/03/20 web 共 3339 字,约 10 分钟

安装

主题

个人主题

-

商业主题

  • 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

日常更新

可以使用SVN进行管理,在gitee上创建一个仓库,例如web-xxxqqq,更新到本地文件夹,例如:F:\osopen\web-xxxqqq。然后把hugo的创建的博客文件组织在这个文件夹里面,文件结构大致如下:

README.md
.codesandbox
.devcontainer
.svn
.vscode
assets
config
content
layouts
node_modules
public
resources
static
.gitpod.yml
.hugo_build.lock
.npmignore
.npmrc
.prettierignore
.prettierrc.yaml
hugo_stats.json
LICENSE
netlify.toml
package.json
package-lock.json

然后把如下的文件或文件夹添加到SVN上:

README.md
assets
config
content
layouts
resources
static
.gitpod.yml
.hugo_build.lock
.npmignore
.npmrc
.prettierignore
.prettierrc.yaml
LICENSE
package.json
package-lock.json

平时更新文章就到content目录下,有三种形式的文章:

  1. 产品。content根目录下创建的md文件(例如test.md)最终渲染的网页路径是这样的:https://xxxqqq.com/test
  2. 文档。子文件夹docs下面创建的md文件。
  3. 博客。子文件夹blog下面创建的md文件。

发布:

  1. 启动hugo server -D看效果;技巧:如果有文章一直没有生效的情况,多半是因为标头有误,可以用其他文章的先替换掉逐步修改。一般来说,在该模式下,即时保存就能立即渲染出文章结果了。
  2. 使用hugo -D生成部署文件;
  3. 将上一步生成的部署文件上传到ftp server

自动发布

每次写完新的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