Hanny的Typecho插件教程二 —— HelloWorld

插件开发及发布

版主: woniou

回复
coldney
帖子: 42
注册时间: 2008年 2月 19日 21:36
联系:

Hanny的Typecho插件教程二 —— HelloWorld

帖子 coldney »

原文地址:http://www.imhan.com/archives/58/

在[url=http://www.imhan.com/archives/57/"]上一篇[/url]中,主要介绍了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()
    {
        echo '<span class="message success">' . Typecho_Widget::widget('Widget_Options')->plugin('HelloWorld')->word . '</span>';
    }

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输出了配置里填写的字段。

讲到这里,差不多也明白这个插件的用途了。
头像
joyqi
帖子: 422
注册时间: 2007年 7月 24日 19:43
联系:

Re: Hanny的Typecho插件教程二 —— HelloWorld

帖子 joyqi »

很赞的插件教程,感谢有心人hanny的无私分享
头像
zyzzc
帖子: 648
注册时间: 2009年 9月 25日 20:11
联系:

Re: Hanny的Typecho插件教程二 —— HelloWorld

帖子 zyzzc »

指针指到哪就插哪,插哪哪就有了……
回复