差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

plugins:hello-world [2013/12/24 12:05]
ShingChi
plugins:hello-world [2013/12/29 07:14] (当前版本)
ShingChi [1. 文件结构]
行 4: 行 4:
 ===== 一、基本结构 ===== ===== 一、基本结构 =====
  
-==== 1. 注释 ====+==== 1. 文件结构 ==== 
 + 
 +<code text> 
 +HelloWorld ​ 插件文件夹 
 +     | 
 +     ​|——Plugin.php ​  ​插件核心文件 
 +</​code>​ 
 + 
 +插件文件夹命名与插件名、插件类名保持一致,插件主体代码编写在 **Plugin.php** 中。其中,类名要加上后缀 **_Plugin**,如下: 
 + 
 +<code php>​class HelloWorld_Plugin implements Typecho_Plugin_Interface 
 +{</​code>​ 
 + 
 +关于命名规范、编码风格等,可以查看 **[[http://​docs.typecho.org/​phpcoding]]** 
 + 
 +==== 2. 注释 ====
  
 <code php>/** <code php>/**
行 21: 行 36:
   * @link: 插件作者链接   * @link: 插件作者链接
  
-==== 2. 插件主体 ====+==== 3. 插件主体 ====
  
 <code php>/* 激活插件方法 */ <code php>/* 激活插件方法 */
行 48: 行 63:
 ==== 1. 插件分析 ==== ==== 1. 插件分析 ====
  
-插件功能,是为了实现用户登录后,在后台菜单导航栏输出欢迎话语,所以我们要做的,就是找找后台菜单文件,是否有提供到此类功能的插件接口。一般来说,用哪个接口来实现功能,是要看我们要写的插件,用到哪一方面的功能,或者实现哪些效果来判断,再到对应的文件去寻找。很幸运,我们在 **/​admin/​menu.php** 中找到了以下接口,大概在第7行左右:+插件功能,是为了实现用户登录后,在后台菜单导航栏输出欢迎话语,所以我们要做的,就是找找后台菜单文件,是否有提供到此类功能的插件接口。一般来说,用哪个接口来实现功能,是要看我们要写的插件,用到哪一方面的功能,或者实现哪些效果来判断,再到对应的文件去寻找。很幸运,我们在 **[[https://​github.com/​typecho/​typecho/​blob/​master/​admin/​menu.php|/​admin/​menu.php]]** 中找到了以下接口,大概在第7行左右:
  
 <code php><?​php Typecho_Plugin::​factory('​admin/​menu.php'​)->​navBar();​ ?></​code>​ <code php><?​php Typecho_Plugin::​factory('​admin/​menu.php'​)->​navBar();​ ?></​code>​
行 61: 行 76:
 ==== 2. 编写代码 ==== ==== 2. 编写代码 ====
  
-平常些接口,编写代码的顺序,基本按照默认办法出现的顺序来编写。所以,我们先开始写**激活接口**代码:+平常编写代码的顺序,基本按照默认办法出现的顺序来编写。所以,我们先开始写**激活接口**代码:
  
 <code php>​public static function activate() <code php>​public static function activate()
行 72: 行 87:
 <code php>​array('​HelloWorld_Plugin',​ '​render'​);​ <code php>​array('​HelloWorld_Plugin',​ '​render'​);​
 // 赋值以数组形式出现 // 赋值以数组形式出现
-// HelloWorld_Plugin 插件的类名,一般是名加上“_Plugin”,其中类名还可以用__CLASS__,不过经常是直接把插件类名写上+// HelloWorld_Plugin 插件的类名,一般是件名加上“_Plugin”,其中类名还可以用__CLASS__,不过经常是直接把插件类名写上
 // render 插件实现的方法名,后面插件实现方法的命名要与此一致</​code>​ // render 插件实现的方法名,后面插件实现方法的命名要与此一致</​code>​
  
-该插件注销时没有什么资源需要释放,所以禁用方法就不需要编写了。接下来是编写**配置方法**。登录后台后,欢迎话语因用户自己不同,所以我们需要给个配置表单给用户,由他们自己定制。因此,我们在配置表单里,可以写上一个配置欢迎话语的表单:+该插件注销时没有什么资源需要释放,所以禁用方法就不需要编写了。接下来是编写**配置方法**。登录后台后,欢迎话语因,所以我们需要给个配置表单给用户,由他们自己定制。因此,我们在配置方法里,可以写上一个配置欢迎话语的表单:
  
-<code php>​$name = new Typecho_Widget_Helper_Form_Element_Text('​word',​ NULL, 'Hello World',​ _t('​说点什么'​));​ +<code php>public static function config(Typecho_Widget_Helper_Form $form) 
-$form->​addInput($name);</​code>​+
 +    /** 配置欢迎话语 */ 
 +    ​$name = new Typecho_Widget_Helper_Form_Element_Text('​word',​ NULL, 'Hello World',​ _t('​说点什么'​));​ 
 +    $form->​addInput($name);​ 
 +}</​code>​
  
 表单助手类参数说明: 表单助手类参数说明:
  
-  - word:变量命名+  - word:配置项命名
   - NULL:选项,因为这是个文本输入框,所以是NULL   - NULL:选项,因为这是个文本输入框,所以是NULL
   - Hello World:默认值   - Hello World:默认值
-  - _t('​说点什么'​):表单的 label 标题,它后面还有一个参数是提示语+  - _t('​说点什么'​):表单的 label 标题,它后面还有一个参数是描述
  
-要想了解更多使用,可以查阅 **/​var/​Typecho/​Widget/​Helper/​Form/​Element.php**+要想了解更多使用,可以查阅 **[[https://​github.com/​typecho/​typecho/​blob/​master/​var/​Typecho/​Widget/​Helper/​Form/​Element.php|/​var/​Typecho/​Widget/​Helper/​Form/​Element.php]]**
  
 <code php>​$form->​addInput($name);</​code>​ <code php>​$form->​addInput($name);</​code>​
行 100: 行 119:
 }</​code>​ }</​code>​
  
-接下来,我们要显示已经自定义好的欢迎语,所以逻辑代码里,我们可以这么写:+接下来,我们要显示已经自定义好的欢迎语,所以逻辑代码里,我们可以这么写:
  
 <code php>echo '<​span class="​message success">'​ . Typecho_Widget::​widget('​Widget_Options'​)->​plugin('​HelloWorld'​)->​word . '</​span>';</​code>​ <code php>echo '<​span class="​message success">'​ . Typecho_Widget::​widget('​Widget_Options'​)->​plugin('​HelloWorld'​)->​word . '</​span>';</​code>​
打印/导出