Skip to main content

Command Palette

Search for a command to run...

两款CMS系统体验

Published
•1 min read•View as Markdown
两款CMS系统体验

两款CMS系统体验

2024-09-14

#编码 , #分享 , #工具箱

因为Ghost只提供文章的 HTML 代码,不提供 Markdown 的问题导致我曾经一度想更换CMS系统。但是将近800篇文章的转移工作十分麻烦,而且之前也尝试过用一些工具处理,无一都失败了,问题多是因为古早之前的很多文章存在格式问题,无法通过一些 HTML to Markdown 工具的转换规则,所以这个事也就一直没下定决定弄。

不过不影响我寻找下一位有动力让我这么做的CMS继任者。

最近发现了两款CMS工具,分别是:

  • KeyStatic: 之前有在周报 🤣JUSTFUN 周刊:第13期 中推荐过,一款基于Github的CMS系统。
  • PocketBase:一款用Go写的非常轻量、高速的CMS工具,使用简单,扩展性强。

KeyStatic

基于Github的CMS系统有很多,我所知道的就不下四五款,比如有: statamic/cms 、keystonejs/keystone 等。

在周报里我也提到过,我是在Astro的CMS推荐列表中看到了KeyStatic,并在昨天花了一点时间体验了一下,整体体验还是不错的,总结如下。

  • 字段:可以进行丰富的字段配置和自定义,但是字段配置需要通过配置文件进行,而且可选项有点多,初上手会比较麻烦,好在官方提供了一些模板库,可以直接超。
  • 同步:可以基于本地也可以基于Github,基于Github模式的话每次增加文件文章后需要手动提交pull request,在页面上有个按钮,点击能跳转到Github,然后再进行后续操作,其实还是比较麻烦的。
  • 部署:官方提供了一些Astro、Next.js等集成,可以将网站、管理面板都部署在Vercel、Netlify、Clouflare上,对白嫖党来说是还是比较友好的。而且因为集成了SSG工具,网站也能同一时间进行更新发布。
  • 文件:
    • 文章:撰写的文章会在项目里生成对应的markdown文件
    • 图片:也会传到Github的内,官方目前提供了一个云服务,后续应该也是会支持S3、R2等服务的。
  • 定制化:后台的定制性非常强,你甚至可以在字段设置里使用你写的Astro组件,不过需要一定的开发知识。
  • API:很丰富,还提供了Nodejs的api库,操作非常方便。

💡

昨天在部署到Vercel后提示链接不安全,在文档里找了半天没发现有相关的说明,后来想起在初始化链接到GitHub时提示了需要设置一个发布网址,当时留空了,所以重新去Github中的App Setting里增加了Vercel链接的Rule后解决。

Poketbase

现在的CMS系统都设计都好强悍呀!昨天刷到蜗牛大佬Star了一个叫 pocketbase 的开源内容管理系统,程序是用Go写的,基于SQLite数据。

管理全在网页上进行,虽然结构简单,但是API、权限、功能拓展什么的都一应俱全,相当哇撒了。

  • 字段:官方提供的字段略少,而且Content内容目前只能保存解析好后的HTML字符串,而且没有自动生成slug。
  • 同步:因为是通过二进制程序直接运行,也有其他开发者提供了Docker版本,就是一个在线服务,所以没有数据同步问题,所以这部分会比较简单,好管理一些。
  • 部署:同上,直接起个Docker就行了,但是并没有集成前端框架,不过有完善的API、权限管理,在SSG中实现一下就好。
  • 文件: 文件可以存在本地,也支持上传到R2等服务上。
  • 定制化:这部分可能会比KeyStatic弱很多,目前文档里没怎么有这方面的介绍
  • 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,还是准备再蹲蹲。

More from this blog

我的miniFlux主题

我的miniFlux主题 2024-10-06 #主题 , #分享 , #编码 最近Follow大火,虽然也在使用,不过我还是更喜欢miniFlux这种简单的阅读器。 之前从 yarr 切换到 miniflux 是因为 木木 大佬推荐的 miniflux 主题 Miniflux-Theme-Reeder,不过当时用了一段时间后发现各种不适,最后还是切换会默认主题,用了一段时间发现其实默认的miniflux已经非常好用了,不过需要做一点美化,所以简单做了一下调整,这里分享一下我的miniflux...

Oct 6, 20244 min read
我的miniFlux主题

MacType正确注册表全局热替换、渲染尝试

MacType正确注册表全局热替换、渲染尝试 2024-10-06 #Windows11 , #MacType , #折腾 前言 因为Windows系统字体渲染太垃圾,而我又没需求换4k,所以需要用到其他工具对字体进行渲染。而MacType自然是Windows平台的不二选择,我使用的时间估计已经有10年了把? 以前在XP、Win7上都能很完美的渲染,但是Windows10开始陆续出现了一些程序渲染不上的问题, 比如大部分UWP程序 而Chrome也因为安全策略更改也无法正常进行渲染,虽然百分...

Oct 6, 20243 min read
MacType正确注册表全局热替换、渲染尝试

如何快速解析HTML里的WikiLink?

如何快速解析HTML里的WikiLink? 2024-09-12 #编码 前几天在 你好Astro! 中提到想把Obsidian的文章集成在博客中来,并实现CMS和Obsidian之间通过Wikilink的互相引用。 不过因为Ghost的API只提供了文章的HTML字符串,Remark衍生的WikiLink插件肯定都是无法使用的,而且目前Github上能找到的WikiLink相关的案例基本上都是整对于Markdown语法去解析的,对于我来说基本上没什么参考价值。 所以我只能走另外的路子了,不过方...

Sep 12, 20242 min read
如何快速解析HTML里的WikiLink?

🤣JUSTFUN 周刊:第14期

🤣JUSTFUN 周刊:第14期 2024-09-12 #周刊 一图 骑行路上 1. 种的辣椒 2. 骑行路上 流水账 2024年9月2日:忽然对Astro的语法有了新的理解,也许我可以做到? 2024年9月2日:如果地球是个学校,各个国家是上学的孩子,那么老鹰就是校园霸凌的恶霸。 2024年9月2日:自由的含意是:我能自由的干你,你不能还手。 2024年9月2日:我真是个傻逼,之前吐槽说Ghost文章丢失了,刚刚忽然发现特么是我写成Page了,压根不在Posts列表里。 2024...

Sep 12, 20241 min read
🤣JUSTFUN 周刊:第14期

1900's Blog

10 posts