因为Ghost只提供文章的 HTML 代码,不提供 Markdown 的问题导致我曾经一度想更换CMS系统。但是将近800篇文章的转移工作十分麻烦,而且之前也尝试过用一些工具处理,无一都失败了,问题多是因为古早之前的很多文章存在格式问题,无法通过一些 HTML to Markdown 工具的转换规则,所以这个事也就一直没下定决定弄。
不过不影响我寻找下一位有动力让我这么做的CMS继任者。
最近发现了两款CMS工具,分别是:
基于Github的CMS系统有很多,我所知道的就不下四五款,比如有: statamic/cms 、keystonejs/keystone 等。
在周报里我也提到过,我是在Astro的CMS推荐列表中看到了KeyStatic,并在昨天花了一点时间体验了一下,整体体验还是不错的,总结如下。
现在的CMS系统都设计都好强悍呀!昨天刷到蜗牛大佬Star了一个叫 pocketbase 的开源内容管理系统,程序是用Go写的,基于SQLite数据。
管理全在网页上进行,虽然结构简单,但是API、权限、功能拓展什么的都一应俱全,相当哇撒了。
因为官方没有自带slug生成的功能,所以我跟着官方文档写了个转换脚本,很有意思。
onRecordBeforeUpdateRequest((e) => {
const pinyin = require(`pinyin`);
const title = e.record.get("title");
const titleToSlug = (title) => {
const pinyinTitle = pinyin(title, {
style: pinyin.STYLE_NORMAL, // 普通风格
heteronym: false, // 不使用多音字
})
.flat()
.join("-"); // 将拼音数组转换为字符串并用短横线连接
return pinyinTitle
.trim() // 去除首尾空格
.replace(/[\s]+/g, "-") // 将空格替换为短横线
.replace(/[^\w\-]+/g, "") // 删除非字母数字和非短横线字符
.replace(/--+/g, "-") // 替换多个短横线为一个短横线
.replace(/^-+|-+$/g, ""); // 去除首尾的短横线
};
// 示例用法
const slug = titleToSlug(title);
e.record.set("slug", slug);
}, "posts");
官方提供的event hook也相当多,能玩出非常多的花样。
目前唯一的疑惑是为啥不提供markdown格式的fields呀?
至于换不换CMS,还是准备再蹲蹲。
加入评论