多人博客
经过几个版本的更新,Monster已经开始有了丰富的功能,这其中就包括对Ghost多人博客的支持。
Monster主要是在updatesite.sh
模式中支持多人博客,也就是说这个功能在update
模式下可用。当在.monster
配置文件的EMAIL
参数中使用一个列表,例如:
EMAIL=("aiming@gmail.com" "qomo@gmail.com")
那么多人博客的模式就自动开启,并在--sync-removed
命令中有效。
注:如果你只是删除post,或更新theme中post的风格,那么由于
update
模式无法从数据库感知到你的更新,所以就需要使用--sync-removed
来强制更新指定用户/多个用户的博客内容。一旦使用该命令,那么也将导致整个的索引页会强制更新(因为上面的操作事实上也意味着全站的posts index pages页发生了变化)
可定制强制更新的pages列表
当使用update
模式时,如果一个置为static page
的页面是使用动态生成方式来生成的——例如archive页,那么仍然是由于数据库不可感知的缘故,就需要使用--force
参数来强制生成。你可以通过一个名为FORCEPAGE_LIST
的参数来指定这些页面的列表,该参数也在.monster
配置文件中。例如:
FORCEPAGE_LIST=("archives-post-second-user/")
在这个例子中,由于/archives-post/
页总是动态生成的网站归档页,所以它缺省是被Monster内部处理的。但如果是使用多人博客(或者其它原因),那么可能就需要生成多个这样的归档。这“动态生成”就意味着从sqlite数据库中感知不到,所以就需要象上面这样强制定义列表。
与此类似的,由于update
模式总是尝试使用short_path,因此缺省情况下会将类似/about/index.html
这样的页面处理成/about.html
。这在大多数情况下是适用的,但Ghost却默认会将导航栏上的链接转换成/.../
这样的格式,也就是说它必须使用/about/index.html
。这一类的问题在update
模式时必须手工指定,你可以使用类似下面的配置:
FORCEINDEX_LIST=("about-second-user")
在使用Monster的generate
模式时也会有这个问题,这是通过IGNORE_LIST
来处理的。事实上makesite.sh
模块会将这个列表与FORCEINDEX_LIST
列表合在一起,来跳过所有不需要处理——亦即是将会保留index.html文件——的目录。
搜索功能
Monster提供一种快速搜索的功能,这可以通过monster search ...
来实现。
在Ghost 0.9x版本与1.x版本中的数据库结构并不相同,而Monster会自动识别并处理不同的查询条件。因此,现在开始,你可以简单的了解一下你的Posts中都有些什么了(Monster只搜索Posts的内文,而在Ghost Admin后台上搜索只处理标题):
> monster search "关键字"
id slug created_at title
-------- ---------- ------------------- --------------------------------------
59dafc1a 1-44 2006-04-16 21:03:00 Qomo OpenProject beta1 精彩图集~
59dafc1a 1-50 2006-10-09 14:23:00 【原创】搞了个NetGear的路由?
...
短路径(Short Path)的规则
在使用Ghost 0.9x时,数据库中的Post ID是从1开始的自增序的,因此Monster采用的short-path规则是authorId-postId
。但从Ghost 1.x开始,数据库中的authrId和postId都不再是自增序的整数了,而是一个长的字符串(从旧数据库中导入的一些数据存在例外)。因此,即使使用Monster的--short-path
参数,也无法按旧规则来生成这个名字。
因此从Monster 1.06开始,update
模式下的--sync-slug
会根据数据库版本来选择如下两种格式之一:
- 在Ghost 1.x中采用
postId
作为post slug; - 在Ghost 0.9x中采用
authorId-postId
作为post slug。
考虑到从0.9x迁移到1.x的情况,--sync-slug
不对已经采用了short-path格式的slug再做sync操作——了就是说0.9x已经使用了short-path的post会被忽略。但在识别这种情况时,只处理authorId<9的情况,这在一般情况下是够用的。
快速命令(Fast commands)
Monster为一些常用命令建立了快速命令风格,例如上面的monster search ...
。在这种风格中,search
并不是一个模式——Monster目前只支持generate/update/preview
三种模式。
事实上,monster search ...
是等效于monster update --search ...
的,从Monster v1.0.5开始就提供了这样的一种快速命令风格,用于简单地执行一些命令开关。虽然目前只有search/list
两个,但将来会扩充它。
支持无限数量的Posts
在早前的Monster脚本中只能处理有限数据的Posts,因为过多的Posts生成特别大的正则表达式,从而导致sed调用失效。在Monster v1.0.6中修正了这个Bug,使得Post会根据标题长度自动计算批次,分批处理,从而实现了对“无限数量”的Posts的支持。
其它
Monster从v1.0.5开始就不再需要预先安装Buster了,所以它也不再依赖Python环境——如果你不使用preview
功能的话。
你可以使用brew来快速安装Monster:brew install aimingoo/repo/monster
。
也可以从Github下载Monster:https://github.com/aimingoo/monster。