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 相关文章推荐
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 PHP
php导入导出excel实例
Oct 25 PHP
PHP查询网站的PR值
Oct 30 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
php简单实现MVC
Feb 05 PHP
php实现上传图片文件代码
Jul 19 PHP
PHP语法小结之基础和变量
Nov 22 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 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 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
探讨:如何编写PHP扩展
2013/06/13 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
用 JSON 处理缓存
2007/04/27 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
2016/05/28 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
Python实现全局变量的两个解决方法
2014/07/03 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
简单实现Python爬取网络图片
2018/04/01 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
python SocketServer源码深入解读
2019/09/17 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
Python gevent协程切换实现详解
2020/09/14 Python
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
PHP面试题集
2016/12/18 面试题
简单介绍Object类的功能、常用方法
2013/10/02 面试题
优秀通讯员事迹材料
2014/01/28 职场文书
公司业务员岗位职责
2014/03/18 职场文书
求职信模板
2014/05/23 职场文书
贷款委托书
2014/08/01 职场文书
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript