Typecho插件开发入门教程之HelloWorld

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

## 基本结构 ##
**1.文件结构**
首先是插件的文件构成。

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

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

class HelloWorld_Plugin implements Typecho_Plugin_Interface
>如需了解更多Typecho的命名规范,请参看[官方文档][1]

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

/**
* TypechoDev的第一个插件HelloWorld
*
* @package Hello World
* @author 雷鬼
* @version 1.0.0
* @link http://www.typechodev.com
*/
将插件上传到你网站的plugins目录下,然后登陆管理后台,去到插件管理页面,即可看到如下信息:
![插件管理.jpg][2]

**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官方的《[插件接口和功能列表][3]》,可以看到有很多接口可用于插件功能。我们选取`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,起显示效果如下:

![hellworld.jpg][4]

完整代码如下:

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 哈哈’);
}
}

[1]: http://docs.typecho.org/phpcoding
[2]: https://www.typechodev.com/usr/uploads/2015/03/344230385.jpg
[3]: http://docs.typecho.org/plugins/hooks
[4]: https://www.typechodev.com/usr/uploads/2015/03/941358042.jpg

上一篇 2015-02-16 上午6:38
下一篇 2015-02-28 下午12:16