如何制作typecho插件?typecho插件制作的几个要点
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
苏南大叔,这几天根据自己的需求,也写了typecho插件了。总结了几点。有了这几点。貌似也许不用官方的wiki,你也能自己写插件了。
查看范例
在typecho的source代码里面查找关键词“pluginHandle()”,然后你就可以看到,所有的可以在插件里面进行控制的地方啦。是不是非常清晰明了。比如:
varWidgetArchive.php 里面有个
$allows = $this->pluginHandle()->headerOptions($allows, $this);
在插件里面就是这么写的:
public static function activate() {
Typecho_Plugin::factory('Widget_Archive')->headerOptions = array(__CLASS__, 'headerOptions');
}
public static function headerOptions($allows, $that) {
//去除默认输出的顶部恶心的js
$myallows = [
"description" => mb_substr($allows["description"], 0, 80),
"commentReply" => "",
"antiSpam" => ""
];
return array_merge($allows, $myallows);
}
查看范例2
当然了在theme里面也可以主动调用插件里面的函数。比如:
theme里面这么写的:
SNSEO_Plugin::randomArticles();
plugin里面是这么写的:
public static function randomArticles() {}
数据库读写
涉及到数据库读写的时候,是这么写的:
$db = Typecho_Db::get();
$sql = $db->select()->from('table.contents')
->where('status = ?', 'publish')
->where('type = ?', 'post')
->where('created <= unix_timestamp(now())', 'post') //添加这一句避免未达到时间的文章提前曝光
->limit($defaults['number'])
->order('RAND()');
$result = $db->fetchAll($sql);
除了一个db对象写法不一样外,其它的写法和我们常见的各种库的写法高度一致。所以也不会有啥陌生的。
相关链接
最后贴上几个百度到的貌似还不错的资源站。以后可以过去翻翻看的。
http://t.160.me/
https://www.typechodev.com/
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。