说这个插件前,先要提下Typecho-Fans(以下简称TF):即博友蚂蚱(ShingChi)于13年底创建的github组织目录,主要用于存放自己和其他肥皂群40412938大大们的插件主题作品。我刚加入时为群设计了个logo与主页就匿了,后来随着几位元老管理都不再活跃TF也陷入了沉寂。
去年起我又重新整理修正了其中的部分作品,发现车坤的AppStore在几经调整后也最终关停了源站。其实能坚持这么久已经很不易,主要TF及官方目录的“冷度”与维持服务端所需精力实在不搭,其他商店类插件如TeStore等也都曾止步于此。
但在翻看后者代码时,其中一段正则匹配表格的部分偶然间启发了我——TF中的README文档就是用表格归纳作品信息的,虽然要手写但以Markdown语法也很简单,如果能直接抓取其内容做商店列表,那稳定的github不就能做永久“服务端”了?而且对这种不甚活跃的开放目录人工维护也很合情理,作者自己一定会记得去更新,其他成员也可随时收集添加,有点wiki接力的意思~
于是一不做二不休,我决定动手重新修改TeStore。先是在原作基础上大幅改进安装机制,可适应不同打包情况做到准确解压文件到目标路径,然后ajax交互方面让用户能持续看到安装中状态,期间静默其他安装按钮避免临时目录冲突,卸载也加上了确认框避免误操作并直接调用内置函数自动禁用插件。在配合更新TF的README表格为5栏信息后,我又通过releases的发布标签实现了各插件单独zip包的在线寄存。不过github毕竟在国外访问速度常有波动,TeStore原配的缓存机制要频繁增删json,我也改成了更快捷的单文件判断,最后让列表面板异步加载,同时支持分页和简介文字筛选。一番折腾后再加上图标标记效果,版本号升级提示,已安装自动提前等——至此TeStore终于满血复活,一个免服务端的商店方案便可以实行了!
因为是基于github文件维护的,有关规则说明还是要先回到我们的TF目录上来。其实之前我对它的作用是存有一些疑虑的。说白了如果插件作者已经用自己的github账户建过作品repo,其他人也可以下载fork或请求合并修改,那再拷贝一份代码到这个公共目录干嘛?因为每次更新两头都要改不说,TF里有人动你的代码还不用通知许可……有了新版TeStore后这个问题更为突出:在表格添加一行自己的repo信息就能调取使用,还有必要再复制作品到TF吗?
因此经过考虑我觉得是时候要重新定位下TF的目录功用。现在大家在README.md里可以看到这样的声明,即:TF将成为所谓“社区维护版”的作品目录,建议作者存入有特色但不再更新的插件或主题,授权给所有社区成员自由修改。换言之这里将更像一个“旧物翻新”仓库,其中作品可能会产生与原作同名但有所改良的衍生版。其实这些年TF的更新趋势也正是如此,虽然参与成员还不多,但1.0-1.1版本后确实有不少被原作者抛弃的老作品在此又换发了新生。“社区维护版”的可用指数会更高,这或许对插件数量不多的typecho是个好现象。
当然能保持活跃的新作者可以不必在TF里放置作品了,新添加的TESTORE.md就是用来登记和读取外部插件信息的。即只要按格式在其中写入稳定的zip包下载地址(作者自己repo的打包链接或其他上传处的均可)就能保证用户在TeStore里一键安装到你的作品。未来这个外部列表的作品数量应该会超出社区版,还需要大家多从官方论坛或其他渠道发掘新作。
目前除TF外插件作品的集中地还有官方github的plugins目录、wiki的插件列表和小夜的插件专题站等。
对可能出现的同名问题,TeStore主要通过作者区分,不用简介是因为很多插件的description写得比较随意,强制表格信息一致可能用户会看不明白,过长过短还影响排版效果。故大家看到的README.md和TESTORE.md中的简介也是我重新拟定过的,为方便用户筛选关键字时能准确查找到所需作品。另外对于社区版和原版同时登记的情况,如果两个版本确有不同且都可用,社区版必须用多人作者署名作区别。一般为避免用户困扰,已有社区版的插件不建议再添加原版。
以上所有,包括登记的插件信息是否属实,下载地址是否可用准确等都还需要大家共同去监督维护。希望这个方案与新版TeStore能长期造福于TE用户吧!(后续视需求可能会增加主题仓库部分,不过正如TF这么多年的themes目录所示……用户对聚合主题的兴趣不及插件,而且作者出于保护个性化设计考虑“社区维护版”也会比较少。)
此插件也将秉承github的开源精神不做什么购买功能扩展了(这方面交给官方商店去考虑吧),所以与其叫商店不如叫“仓库”。以后大家有什么问题或建议可以根据文档中的说明去提issues,我会在有余力的情况下继续跟进TF目录的维护工作。:)
特别鸣谢——
神龙见首不见尾的原作者zhulin3141;
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)

回头教大伙写插件吧,出一个教程
其实我也是个半吊子。。不知道能教点啥 = =
我的腾讯云上有三个te博客,其中一个正常安装了testore,其他两个安装插件时提示.tmp目录没有写入的权限,求大佬解答。
那可能就是权限问题吧,手动修改下看?
惭愧,因为工作的原因,没有给 Typecho 做更多贡献
我也没做多少。。有过贡献就很棒,力所能及便好:P
1.1.2没有找到任何插件,请检查插件源设置是否正确。
如果换curl也不行可能是主机限制ssl抓取,这样是无法使用插件的:(
哦哦,了解了
求教个问题,羽中:
我想本地通过其他php程序发布typecho文章,目前能实现链接数据库发布(只能发布标题,作者,内容这些在content表里我能看到的项),但是分类,标签,自定义字段这些不知怎么处理。
还望指点一下。
我也没研究过相关源码,大概是通过cid交叉查询relationships和fields表吧,你找下有没类似功能插件可以参考的
专门来朝拜大牛

拉倒吧
你可比我牛 
羽中这才叫满血复活!让开发团队收了你得了
我这水平也就能鼓捣点插件而已
出现错误啦 Call to a member function getAttribute() on null

已修正,顺便更新了版本
下载下来版本号还是1.1.1
疏忽哈哈,已经修正了~
七牛插件已经有很多了啊
请问,可以加个 “有新版本就有个更新按钮” 的功能吗?
现在就有更新提示,但最好还是你手动卸载后重新安装这样升级,否则直接覆盖文件可能会出错的