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 相关文章推荐
Windows PHP5和Apache的安装与配置
Jun 08 PHP
php file_exists 检查文件或目录是否存在的函数
May 10 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
php实现与erlang的二进制通讯实例解析
Jul 23 PHP
php的mssql数据库连接类实例
Nov 28 PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 PHP
php实现概率性随机抽奖代码
Jan 02 PHP
php中二分法查找算法实例分析
Sep 22 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 PHP
Yii框架布局文件的动态切换操作示例
Nov 11 PHP
PHP中类与对象功能、用法实例解读
Mar 27 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
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
在Mac上编译安装PHP7的开发环境
2015/07/28 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
JS 事件绑定函数代码
2010/04/28 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
python异常处理try except过程解析
2020/02/03 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
注塑工厂厂长岗位职责
2013/12/02 职场文书
学生请假条
2014/04/11 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
招商引资工作汇报
2014/10/28 职场文书
继承公证书格式
2015/01/26 职场文书
创业计划书之家教中心
2019/09/25 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
django注册用邮箱发送验证码的实现
2021/04/18 Python
Go标准容器之Ring的使用说明
2021/05/05 Golang
Netty分布式客户端接入流程初始化源码分析
2022/03/25 Java/Android