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 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
PHP分页显示制作详细讲解
Dec 05 PHP
php GeoIP的使用教程
Mar 09 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
PHP的简易冒泡法代码分享
Aug 28 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
php利用事务处理转账问题
Apr 22 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
CI框架数据库查询之join用法分析
May 18 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
PHP长连接实现与使用方法详解
Feb 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
浅谈PHP与C#的值类型指向区别的详解
2013/05/21 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
PHP实现微信申请退款功能
2018/10/01 PHP
JObj预览一个JS的框架
2008/03/13 Javascript
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
python实现bitmap数据结构详解
2014/02/17 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
Python实现的桶排序算法示例
2017/11/29 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
Django跨域请求原理及实现代码
2020/11/14 Python
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
公司委托书格式
2014/08/01 职场文书
2014年采购工作总结
2014/11/20 职场文书
房产公证书格式
2015/01/26 职场文书
金榜题名主持词
2015/07/02 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP
MySQL自定义函数及触发器
2022/08/05 MySQL