说这个插件前,先要提下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.md里可以看到这样的声明,即:TF将成为所谓“社区维护版”的作品目录,建议作者存入有特色但不再更新的插件或主题,授权给所有社区成员自由修改。换言之这里将更像一个“旧物翻新”仓库,其中作品可能会产生与原作同名但有所改良的衍生版。其实这些年TF的更新趋势也正是如此,虽然参与成员还不多,但1.0-1.1版本后确实有不少被原作者抛弃的老作品在此又换发了新生。“社区维护版”的可用指数会更高,这或许对插件数量不多的typecho是个好现象。

testore.md_head.png

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

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

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

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

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

attachment TeStore_v1.1.2.zip (161.3 KB, 下载次数: 538, 最后修改: 2018-08-21 10:42)

特别鸣谢——

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

帮忙为初版测试的康康YinHeng89

Changlog

1.1.2 新增curl下载方式选项与验证; curl方式下支持ssl证书识别; 使用转码hack改善中文兼容性; 修正解析http源主页链接问题; 修正作者链接为空时报错问题。

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

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

(Last modified: 2018-10-15 11:29)