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学习之php4与php5之间会穿梭一点点感悟
May 03 PHP
PHP中的extract的作用分析
Apr 09 PHP
php中配置文件操作 如config.php文件的读取修改等操作
Jul 07 PHP
jQuery+php实现ajax文件即时上传的详解
Jun 17 PHP
php学习笔记之面向对象
Nov 08 PHP
利用PHP将部分内容用星号替换
Apr 21 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
php通过会话控制实现身份验证实例
Oct 18 PHP
php中的抽象方法和抽象类
Feb 14 PHP
浅谈php://filter的妙用
Mar 05 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 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开发过程中关于继承的使用方法分享
2011/06/17 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
写一个Vue Popup组件
2019/02/25 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
python的re正则表达式实例代码
2018/01/24 Python
解读python logging模块的使用方法
2018/04/17 Python
pip命令无法使用的解决方法
2018/06/12 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
在加拿大在线租赁和购买电子游戏:Game Access
2019/09/02 全球购物
机械专业应届生求职信
2013/12/12 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
介绍信范文大全
2015/05/07 职场文书
iPhone13再次曝光
2021/04/15 数码科技
python3读取文件指定行的三种方法
2021/05/24 Python
MySQL索引是啥?不懂就问
2021/07/21 MySQL
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python