Typecho插件开发入门教程之HelloWorld

任何语言的学习,都是从Hello World开始的,本文也不脱俗,我们也从Hello World来开始我们的学习之旅。

基本结构

1.文件结构
首先是插件的文件构成。

HelloWorld  插件文件夹
     |
     |——Plugin.php   插件核心文件

插件文件夹命名与插件名、插件类名保持一致,插件主体代码编写在 Plugin.php 中。其中,类名要加上后缀 _Plugin,如下:

class HelloWorld_Plugin implements Typecho_Plugin_Interface

如需了解更多Typecho的命名规范,请参看官方文档

2.注释
在Plugin.php开头,可以适当增加注释,方便Typecho框架获取你的插件信息。

/**
 * TypechoDev的第一个插件HelloWorld
 * 
 * @package Hello World
 * @author 雷鬼
 * @version 1.0.0
 * @link http://www.typechodev.com
 */

插件上传到你网站的plugins目录下,然后登陆管理后台,去到插件管理页面,即可看到如下信息:
Typecho插件开发入门教程之HelloWorld

3.函数接口

class HelloWorld_Plugin implements Typecho_Plugin_Interface {

    public static function activate() {}

    public static function deactivate(){}

    public static function config(Typecho_Widget_Helper_Form $form) {}

    public static function personalConfig(Typecho_Widget_Helper_Form $form){}

    public static function render() {}
}

各接口函数解析:

  • activate: 插件的激活接口,主要填写一些插件的初始化程序。
  • deactivate: 这个是插件的禁用接口,主要就是插件在禁用时对一些资源的释放。
  • config: 插件配置面板,用于制作插件的标准配置菜单。
  • personalConfig: 个人用户的配置面板,基本用不到。
  • render: 自己定义的方法,用来实现插件要完成的功能。

功能实现

通过查找Typecho官方的《插件接口和功能列表》,可以看到有很多接口可用于插件功能。我们选取error404Handle进行插件功能演练。

首先,在activate函数中注册钩子

public static function activate() {
    Typecho_Plugin::factory('Widget_Archive')->error404Handle = array('HelloWorld_Plugin', 'say_hello');
}

然后,实现钩子指定的函数say_hello

public function say_hello($archive,$select){
    $archive->setArchiveTitle('Hello world 哈哈');
}

登陆后台重新计划插件,观察效果
访问一个不存在的页面,触发上述接口,譬如 http://your.site.com/index.php/sfsasafsfsdfsdf.html,起显示效果如下:

Typecho插件开发入门教程之HelloWorld

完整代码如下:

<?php
/**
 * TypechoDev的第一个插件HelloWorld
 * 
 * @package Hello World
 * @author 雷鬼
 * @version 1.0.0
 * @link http://www.typechodev.com
 */
class HelloWorld_Plugin implements Typecho_Plugin_Interface {

    public static function activate() {
        Typecho_Plugin::factory('Widget_Archive')->error404Handle = array('HelloWorld_Plugin', 'say_hello');
    }

    public static function deactivate(){}

    public static function config(Typecho_Widget_Helper_Form $form) {}

    public static function personalConfig(Typecho_Widget_Helper_Form $form){}

    public static function render() {}

    public function say_hello($archive,$select){
        $archive->setArchiveTitle('Hello world 哈哈');
    }
}

版权声明:未经书面授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。