Typecho Dev Channel – Telegram
Typecho Dev Channel
1.18K subscribers
2 photos
27 links
News about Typecho
Download Telegram
Channel created
Channel photo updated
这个频道一般会发布的消息:
1. 一些重要的更新及计划
2. 提交的 commits 里值得讲的东西
3. 小知识分享
正在研究 WordPress 导入导出的 wxr 文件格式,不出意外的话 Typecho 的备份功能也会使用这种格式。这样可以方便大家在各个平台间迁移。
我在 SegmentFault 上开了个讲座,有空来听听吧
https://segmentfault.com/l/1500000010496163
备份的工作比想象中麻烦,最开始我想做在命令行,不过这样对用户来说体验并不好。但做到Web端会涉及到数据量过多,处理超时的情况(WordPress其实就有这个风险)。目前想到的做法是使用前后端交互的方式,由前端控制进度并不断请求后端,但这个工作量会比较大。I'm trying ...
新增了一个大的插件钩子,可以对所有widget的默认魔术方法进行替换或者扩展。使用方法举例:

Typecho_Plugin::factory('Widget_Archive')->callSlug = array('Example_Plugin', 'slug');

当这样写的时候,你在模版里调用 $this->slug() 语句的时候,就不会执行系统的默认输出,而是使用你自定义的方法了。注意,这种替换仅限于替换系统的默认输出,对于一些系统已经实现的方法,比如文章的 $this->noscript() 方法并无效果,不过这类方法往往内部带有插件钩子,你去单个实现就好了。

这个钩子的作用不仅局限于替换现有的输出函数,还可以用来扩展没有实现的字段输出,比如我想检测用户评论时UA字段里的操作系统,在输出评论时让显示一个相应的操作系统 Logo ,以往的做法往往是单独实现一个函数,让用户在模版里调用 echo my_plugin_function($comments->agent); 这样的代码。

这样的方式显得非常不原生,而且对代码基础不好的用户来说也不好理解。现在你可以用上述的钩子来扩展一个不存在的方法,比如显示logo的这个需求

Typecho_Plugin::factory('Widget_Comments_Archive')->callFlag = array('Example_Plugin', 'flag');

用户在模版里调用 $comments->flag() 就可以了。这个接口有两个参数

1. 第一个参数是当前 widget 的实例
2. 第二个参数是调用这个方法是的参数数组,比如模版里调用 $comments->flag(1, 2, 3), 你的第二个参数就会收到 [1, 2, 3] 这个数组
👏1
数据备份功能已经推送至了最新的开发版中,由于还在测试期间,建议你不要在正式环境使用(或者在测试之前已经完整地备份了你的数据库),稍后我会详细解释备份功能的实现