苏南大叔,这几天根据自己的需求,也写了typecho插件了。总结了几点。有了这几点。貌似也许不用官方的wiki,你也能自己写插件了。

苏南大叔:如何制作typecho插件?typecho插件制作的几个要点 - typecho-plugins
如何制作typecho插件?typecho插件制作的几个要点(图1-1)

查看范例

在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/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。