Monster 1.0.6开启的新功能

多人博客

经过几个版本的更新,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