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 相关文章推荐
Wordpress php 分页代码
Oct 21 PHP
Zend Studio (eclipse)使用速度优化方法
Mar 23 PHP
php学习笔记 数组遍历实现代码
Jun 09 PHP
php URL验证正则表达式
Jul 19 PHP
基于php split()函数的用法详解
Jun 05 PHP
php实现的zip文件内容比较类
Sep 24 PHP
PHP获取当前所在目录位置的方法
Nov 26 PHP
浅谈json_encode用法
Mar 05 PHP
php中smarty区域循环的方法
Jun 11 PHP
php开发时容易忘记的一些技术细节
Feb 03 PHP
学习PHP session的传递方式
Jun 15 PHP
PHP7 新特性详细介绍
Sep 06 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读取XML值的代码(推荐)
2011/01/01 PHP
解析php二分法查找数组是否包含某一元素
2013/05/23 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
简单实现PHP留言板功能
2016/12/21 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
全面了解Python环境配置及项目建立
2016/06/30 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
python正则表达式之对号入座篇
2018/07/24 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
深入了解python列表(LIST)
2020/06/08 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
python list的index()和find()的实现
2020/11/16 Python
Python读写锁实现实现代码解析
2020/11/28 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
物业保安主管岗位职责
2013/12/25 职场文书
药剂专业学生求职信范文
2013/12/28 职场文书
运动会方队口号
2014/06/07 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python
JS代码编译器Monaco使用方法
2021/06/11 Javascript
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript