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 https://www.typechodev.com
*/
将插件上传到你网站的plugins目录下,然后登陆管理后台,去到插件管理页面,即可看到如下信息:
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,起显示效果如下:
完整代码如下:
<?php
/**
* TypechoDev的第一个插件HelloWorld
*
* @package Hello World
* @author 雷鬼
* @version 1.0.0
* @link https://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 哈哈');
}
}
版权声明:未经书面授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。
评论已关闭