基本结构
1.文件结构
首先是插件的文件构成。
1 2 3 |
HelloWorld 插件文件夹 | |——Plugin.php 插件核心文件 |
插件文件夹命名与插件名、插件类名保持一致,插件主体代码编写在 Plugin.php 中。其中,类名要加上后缀 _Plugin,如下:
1 |
class HelloWorld_Plugin implements Typecho_Plugin_Interface |
如需了解更多Typecho的命名规范,请参看官方文档
2.注释
在Plugin.php开头,可以适当增加注释,方便Typecho框架获取你的插件信息。
1 2 3 4 5 6 7 8 |
/** * TypechoDev的第一个插件HelloWorld * * @package Hello World * @author 雷鬼 * @version 1.0.0 * @link https://www.typechodev.com */ |
将插件上传到你网站的plugins目录下,然后登陆管理后台,去到插件管理页面,即可看到如下信息:
3.函数接口
1 2 3 4 5 6 7 8 9 10 11 12 |
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函数中注册钩子
1 2 3 |
public static function activate() { Typecho_Plugin::factory('Widget_Archive')->error404Handle = array('HelloWorld_Plugin', 'say_hello'); } |
然后,实现钩子指定的函数say_hello
1 2 3 |
public function say_hello($archive,$select){ $archive->setArchiveTitle('Hello world 哈哈'); } |
登陆后台重新计划插件,观察效果
访问一个不存在的页面,触发上述接口,譬如 http://your.site.com/index.php/sfsasafsfsdfsdf.html,起显示效果如下:
完整代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?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 哈哈'); } } |
本文最后更新于2021年4月7日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!