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技术开发技巧分享
Mar 23 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
PHP设计模式之代理模式的深入解析
Jun 13 PHP
Linux下php5.4启动脚本
Aug 03 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
PHP的AES加密算法完整实例
Jul 20 PHP
PHP微信红包生成代码分享
Oct 06 PHP
PHP实现链表的定义与反转功能示例
Jun 09 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
php和asp语法上的区别总结
May 12 PHP
laravel 时间格式转时间戳的例子
Oct 11 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发送post请求函数分享
2014/03/06 PHP
php二分查找二种实现示例
2014/03/12 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
js中eval详解
2012/03/30 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
vue 动态绑定背景图片的方法
2018/08/10 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
Python 文件和输入输出小结
2013/10/09 Python
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
详解如何在css3打包后自动追加前缀插件:autoprefixer
2018/12/18 HTML / CSS
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
日本著名的服饰鞋帽综合类购物网站:MAGASEEK
2019/01/09 全球购物
公司市场专员岗位职责
2014/06/29 职场文书
2014年服务员工作总结
2014/11/18 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
《狼王梦》读后感:可怜天下父母心
2019/11/01 职场文书