时间过得还真快,一眨眼又到年底了。似乎,今年的事情也一下子多了起来。
Typecho在熬了很长的一段时间后,终于升1.0了。而今天,Hanny也终于抽出了将友情链接插件也升级了。
其实,从前一段日子起,Hanny已经关闭了这个插件。不过发现仍在继续使用这款插件的朋友还很多,这次升级,也主要是为了感谢大家的支持,至少不会辜负大家选择的信任吧。
详细的使用就不多说了,相信用过的朋友们都知道。
另外,听取了一些朋友的建议,这次打包同时打了ZIP的包,大家根据需要来选择下载吧
Links.rar (提取码: rhzq, 9.1 KB, 下载次数: 14490, 最后修改: 2014-12-14 11:18) Links.zip (提取码: rhzq, 9.4 KB, 下载次数: 9340, 最后修改: 2014-12-14 11:18)
在上一篇中,主要介绍了Typecho插件的基本结构,这一篇,将以HelloWorld为例,来介绍一下插件的基本实现。
在看这个例子之前,我们还需要稍微了解一下几个小规则。
一个就是Typecho类的命名规规。Typecho类的命名是直接与类的存放位置相挂钩的,存放在var的目录下。比如说,Typecho_Plugin_Interface,就是存放在var/Typecho/Plugin目录下的Interface.php文件。再比如说:Typecho_Widget_Helper_Form_Element_Text 就是存放在var/Typecho/Widget/Helper/Form/Element/Text.php 中。明白了这一点,我们就可以通过参考其它插件,直接找到对应的源文件,来弄清里面的接口。
第二个需要弄明白的就是,明白Typecho哪里可以插,需要怎么插。Typecho的程序中预留了很多可以被插的接口。在Widget中,我们可以看到很多pluginHandle这样的地方;在admin下,我们可以看到Typecho_Plugin::factory这样的地方。这些,都是可以被插的。对这些函数指针重新赋值,则会在对应的位置被调用。
回到我们的HelloWorld插件,
Typecho_Plugin::factory('admin/menu.php')->navBar = array('HelloWorld_Plugin', 'render');
这句话告诉我们,在admin/menu.php目录下,有一个叫navBar的函数指针,将被定位到HelloWord_Plugin类的render函数下。而render函数又做了什么呢?我们接着看:
public static function render()<br />
{<br />
echo '<span class="message success">' . Typecho_Widget::widget('Widget_Options')->plugin('HelloWorld')->word . '</span>';<br />
}
Typecho_Widget::widget('Widget_Options')->plugin('HelloWorld')->word 是配置里填写的字段的内容。
先不理会这个Option的作用,我们可以看到,大概是输出了一段HTML,其实就是输出了在配置里真写的字段的内容。
我们再打开admin/menu.php这个文件
<p class="operate"><?php Typecho_Plugin::factory('admin/menu.php')->navBar(); _e('欢迎'); ?>, <a href="<?php $options->adminUrl('profile.php'); ?>" class="author important"><?php $user->screenName(); ?></a>
其实,就是管理页面右上角内容的输出。
如果这里的navBar被指到了render,也就是说,在输出欢迎之前,通过调用render输出了配置里填写的字段。
讲到这里,差不多也明白这个插件的用途了。
写了有几个Typecho插件了吧,准确地说,这并不是什么很标准、规范的教程,只是个人在插件开发过程的一些总结。写在这里,只是为了和大家分享、交流一下心得。如果有什么错误的地方,也欢迎大家来指正。(附:Hanny的Typecho插件)
我们先来了解一下Typecho插件的基本结构吧。
首先就是头部的信息注释部份。
最上面的注释是插件的功能描述,将显示在插件列表中。
@package 后跟的是插件的名称。如本插件名称为HelloWorld。
@author 后跟的是插件的作者。如本插件的作者为qining
@link 后跟的是插件作者的主页。在插件列表中,点击作者名字,将跳转到该页面。
@dependence 后跟的是插件的版本依赖。要注意的是:这个不是Typecho的发行版本,而是构建版本。如:9.9.2-*则表示插件运行在构建版本为9.9.2以后的版本。Typecho的构建版本号可以在后台的最下方方便地看到。
@version 插件的版本号。将作为插件的版本号显示在插件列表。
接着往下,开始插件的类的定义。
插件的类名和插件的文件名及存放路径有关。
Typecho的插件一般采用两种方式来存放。简单的单文件插件,可以直接以“插件名.php”的形式存放在plugins目录下。此时,类名直接与文件名同名。当然,对于复杂一点的插件,一般建议第二种方法:以“Plugin.php”的文件名,存放在plugins的“插件名”子目录下,此时,类的名字就必须为“路径名_Plugin”了。
定义后类后,接下来就是插件的函数接口了。Typecho的插件主要有四个函数接口:
public static function activate()
这个是插件的激活接口,主要填写一些插件的初始化程序。
public static function deactivate()
这个是插件的禁用接口,主要就是插件在禁用时对一些资源的释放。
public static function config(Typecho_Widget_Helper_Form $form)
插件的配置面板,用于制作插件的标准配置菜单。
public static function personalConfig(Typecho_Widget_Helper_Form $form)
插件的个性化配置面板。用法暂时还不明,有待Hanny进一步研究。
先说这么多吧,下一篇,将以HelloWorld为例子,介绍一下一些基本用法。
下一篇:Typecho插件教程二 —— HelloWorld
又发两个插件。
本来这两个插件是想等0.8正式版出来再发出来的。一个是计数用的,另一个是附件管理器。
因为在0.7下还有一些细节没处理好,主要是Simtags编辑器不能直接方便地插入需要的标签。不过之前也答应羽中在周末发出来了。那么,就先发出来吧。
简单说说这两个插件的用法吧。
首先是计数器,主要用于统计文章的浏览次数。直接启用,即可进行统计了。至于在前台显示,现在是在数据库多加了一个字段,还没有更好的方法从数据库中读取、显示出来,也只能用比较笨的方法来进行处理了。这个,等有了更好的方法再说吧。
然后就是附件管理器了,启用后,在文章中插入
<attach>id</attach>
就可以出现像本站typecho插件页面一样的附件下载链接了。
Typecho的后台用了一个叫做mootools的库。这几天看了一下这个库的教程,然后就尝试着自己弄了一个编辑器插件。
其实这个编辑器插件是参考了一下MagikeEditor的。原来将MagikeEditor移植到Typecho上时,有一个地方很不爽,就是要带一个JQuery的库,而Typecho带的却是Mootools的库。
当然,咱的水平也不能和70大大比,所以呢,就做简化了些。那些华丽的对话框之类的,也就没有了。当然,也有一点小小的优点吧,就是能够比较方便地在后台添加一些自定义标签了,而不用去修改程序。
另外,也把自己原来做的附件管理器的插入功能也给整到一起了。嗯,不过呢,由于0.7正式版有个别地方对附件管理器插件支持不是太好,所以这个暂时就不放出下载了,等0.8正式版再说吧。
目前,该编辑器已放入插件页下载。