说这个插件前,先要提下Typecho-Fans(以下简称TF):博友蚂蚱(ShingChi)13年底创建的Github组织目录,主要用于存放他和其他肥皂群40412938大大们的插件主题作品。我刚加入时为群设计了个logo和主题页面就匿了,后来随着几位元老管理都不再活跃TF也陷入了沉寂。

typecho_fans.png

去年起我又重新整理和修正了其中的部分作品,发现车坤的AppStore在几经调整后也最终关停了源站。其实能坚持这么久已经很不易,主要TF和官方目录的“冷度”与服务端所需精力实在不搭,其他商店类插件如TeStore等也都曾止步于此。
但在翻看后者的代码时,其中一段正则匹配表格的部分偶然间启发了我——TF下的README文档就是用表格归纳作品信息的,虽然要手写但以Markdown语法也很简单,如果能直接抓取其内容做商店列表,那稳定的Github不就能做永久“服务端”了?而且对这种不甚活跃的开放目录人工维护也很合情理,作者自己一定会记得更新,其他成员也能随时收集添加,有点wiki接力的意思~

testore_logo.png

于是一不做二不休,我决定动手重新修改TeStore。先是在原作基础上大幅改进了安装机制,可以适应不同打包情况做到准确解压文件到目标路径,然后ajax交互方面让用户能持续看到安装中状态,期间静默其他安装按钮避免临时目录冲突,卸载也加上了确认框避免误操作并直接调用内置函数自动禁用插件。在配合修改TF的README表格为5栏信息后,我又通过releases里的发布标签实现了各插件单独zip包在线寄存。不过Github毕竟在国外访问速度常有波动,TeStore原配的缓存机制要频繁增删json,我便改成了更快捷的单文件判断,然后让列表面板异步加载,同时支持分页和简介文字筛选。一番折腾后又加上图标标记效果,版本号提示升级,已安装自动提前等……至此TeStore终于满血复活——一个免服务端的商店方案可以实行了!

testore_v1.1.1_thumb.png

因为是基于Github社区维护的,有关规则说明还是要先回到我们的TF组织目录上来。其实之前我就对它的作用存有一些疑虑,说白了如果插件作者已经在自己的Github账户中建了作品repo,其他人也可以下载fork或请求合并修改,那再拷一份代码到这个公共目录里干嘛?这样每次更新两头都要改不说,TF里有人动你的代码还不用通知许可。现在有新版TeStore后这个问题更加突出了,在表格里添加一行自己的repo信息就能聚合使用,还有必要再复制到TF内吗?

因此经过考虑,我觉得是时候重新定位TF的收录功用了。现在大家在README里可以看到这样的声明,即:TF将成为所谓“社区维护版”作品目录,建议作者放入有特色但不再更新的插件或主题,授权给所有社区成员自由修改。换言之这里会更像一个“旧物翻新”仓库,录入作品可能会产生与原作同名但有所改良的衍生版。其实这些年TF里的更新趋势也正是如此,虽然参与成员还不多,但1.0/1.1版本后确实已有不少被原作者抛弃的老作品在此又换发新生。社区维护版的可用指数更高,这或许对插件数量不多的typecho是个好现象。

testore.md_head.png

当然能保持活跃的新作者就不必在此录入作品了,我在TF下特别添加了TESTORE.md用来登记和读取外部插件信息,只要写上一个稳定的zip包下载地址(用作者自己Github目录的打包链接或另外上传的均可)就能保证用户在TeStore里一键安装使用到你的作品。未来外部插件数量应该会超出社区版,这还需要大家多从官方论坛或其他渠道发掘作品进行添加。

目前除TF,插件作品的集中地还有官方Github的plugins目录、wiki的插件列表和小夜的插件专题站等。

对可能出现的同名问题,TeStore主要通过作者再区分。不用简介是因为很多插件内的description写得比较随意,强制要求表格信息一致可能用户看不明白,过长过短还会影响排版效果。故大家看到的README.md和TESTORE.md中的简介也都是我重新拟定的,为了方便用户筛选关键字时能准确查找到所需插件。对社区版和原版同时登记的情况,如果两个版本确有不同且都可用,社区版必须用多人作者署名作区别。一般为避免用户困扰已有社区版的插件不建议再添加原版。

当然以上情况,包括登记的插件信息是否属实,下载地址是否可用和准确等都需要大家共同去监督维护。希望这个方案与新版TeStore能长期造福于TE用户吧!后续视需求可能会增加主题仓库部分,但正如TF这么多年的themes目录所示……用户对聚合主题的兴趣可能不及插件,而且作者出于保护个性化设计考虑“社区维护版”会较少。

Anyway~此插件也将秉承Github社区的开源精神不做什么购买功能扩展了(这方面交给官方商店去考虑吧),所以与其叫商店不如叫“仓库”。以后大家有什么问题或建议可以根据文档中的说明去提issues,我会在有余力的情况下继续跟进TF目录的维护工作。:)

attachment TeStore_v1.1.1.zip (43.1 KB, 下载次数: 69, 最后修改: 2018-08-13 09:58)

特别鸣谢——

神龙见首不见尾的原作者zhulin3141

帮忙为初版测试的康康YinHeng89

Changlog

1.1.1 修正PHP7兼容和DOM编码问题; 修正多人作者的链接解析问题; 修正文件夹判断和单文件问题; 优化报错反馈和缺省筛选效果。

1.1.0 用PHP DOM解析HTML表格作源; 异步加载列表并更新缓存逻辑; 按字母排序且已安装自动提前; 支持列表的分页和按简介筛选; 支持附加图标和提醒版本升级; 安装可递归扫描智能判断路径; 优化ajax效果增加action校验。

(Last modified: 2018-08-13 18:24)