typecho插件编写教程(一):Hello World


Posted in PHP onMay 28, 2015

最近老高正在编写一个关于typecho的插件,由于typecho不像wordpress,有那么多的文档参考,写一个插件还是遇到了很多的坑,不过随着研究的不断深入,老高也慢慢上手了,于是总结出此篇编写教程分享给大家!

I. 从HelloWorld说起

基本信息

想必想要开发typecho的你一定阅读过官方示例插件HelloWorld的源码吧?

我们先看看usr/plugins/HelloWorld/Plugin.php文件前几行

if (!defined('__TYPECHO_ROOT_DIR__')) exit;

/**

 * Hello World

 * 

 * @package HelloWorld 

 * @author qining

 * @version 1.0.0

 * @link http://typecho.org

 */

 ...

 ...

这几行代码是一个插件的基本信息,我们由代码可以得出以下与插件相关的基本信息

插件说明 ---> Hello World
插件包名 ---> HelloWorld
插件作者 ---> qining
插件版本 ---> 1.0.0
插件链接 ---> http://typecho.org

同时这些信息都会显示在插件页中,如下图

typecho插件编写教程(一):Hello World

插件结构

我们继续向后面的代码看,一个最简单的插件结构如下(为了缩短篇幅,老高移除了具体方法的实现)

每个方法基本都有注释,老高不再赘述。

看起来很简单吧?其实里面还是有不少坑的。

class HelloWorld_Plugin implements Typecho_Plugin_Interface

{

    /**

     * 激活插件方法,如果激活失败,直接抛出异常

     * 

     * @access public

     * @return void

     * @throws Typecho_Plugin_Exception

     */

    public static function activate(){}
    /**

     * 禁用插件方法,如果禁用失败,直接抛出异常

     * 

     * @static

     * @access public

     * @return void

     * @throws Typecho_Plugin_Exception

     */

    public static function deactivate(){}
    /**

     * 获取插件配置面板

     * 

     * @access public

     * @param Typecho_Widget_Helper_Form $form 配置面板

     * @return void

     */

    public static function config(Typecho_Widget_Helper_Form $form){}
    /**

     * 个人用户的配置面板

     * 

     * @access public

     * @param Typecho_Widget_Helper_Form $form

     * @return void

     */

    public static function personalConfig(Typecho_Widget_Helper_Form $form){}
    /**

     * 插件实现方法

     * 

     * @access public

     * @return void

     */

    public static function render(){}

}

插件流程

插件的基本流程是这样的。

1.当我们的插件写好后会出现在后台
2.点击启用按钮后,会执行对应插件类的activate方法
3.插件与目标插件点关联,等待触发
4.当点击停用的时候调用deactivate方法

本节完。

下一节老高会更详细的说明插件类的方法。

PHP 相关文章推荐
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
php去掉字符串的最后一个字符附substr()的用法
Mar 23 PHP
php实现的zip文件内容比较类
Sep 24 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
Netbeans 8.2与PHP相关的新特性介绍
Oct 08 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
php中Ioc(控制反转)和Di(依赖注入)
May 07 PHP
PHP后台备份MySQL数据库的源码实例
Mar 18 PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 PHP
php实现的mongodb操作类
May 28 #PHP
PHP编译安装时常见错误解决办法
May 28 #PHP
PHP安装memcached扩展笔记
May 28 #PHP
PHP实现的增强性mhash函数
May 27 #PHP
PHP验证信用卡卡号是否正确函数
May 27 #PHP
PHP的伪随机数与真随机数详解
May 27 #PHP
php实现window平台的checkdnsrr函数
May 27 #PHP
You might like
php递归列出所有文件和目录的代码
2008/09/10 PHP
用PHP实现递归循环每一个目录
2010/08/08 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
javascript CSS画图之基础篇
2009/07/29 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
深入浅出分析Python装饰器用法
2017/07/28 Python
python生成lmdb格式的文件实例
2018/11/08 Python
Pandas分组与排序的实现
2019/07/23 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
Python调用JavaScript代码的方法
2020/10/27 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
领导干部廉政承诺书
2014/03/27 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
公司联欢会主持词
2015/07/04 职场文书
忘记Grafana不要紧2种Grafana重置admin密码方法详细步骤
2022/04/07 Servers