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 相关文章推荐
经典的PHPer为什么被认为是草根?
Apr 02 PHP
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
PHP实现货币换算的方法
Nov 29 PHP
PHP中的事务使用实例
May 26 PHP
CodeIgniter配置之database.php用法实例分析
Jan 20 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 26 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 18 PHP
php实现文件上传基本验证
Mar 04 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实现文件下载功能的几个代码分享
2014/05/10 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
javascript:void(0)的作用示例介绍
2013/10/28 Javascript
js使用心得分享
2015/01/13 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
17个Python小技巧分享
2015/01/23 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
python实现excel读写数据
2021/03/02 Python
python tkinter窗口最大化的实现
2019/07/15 Python
详解pandas中iloc, loc和ix的区别和联系
2020/03/09 Python
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
营销总监岗位职责范本
2014/02/26 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
初中生毕业评语
2014/12/29 职场文书
贪污检举信范文
2015/03/02 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
收入证明怎么写
2015/06/12 职场文书
物业公司管理制度
2015/08/05 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
详解NodeJS模块化
2021/06/15 NodeJs