当前位置:首页 > CMS教程 > 其它CMS > 列表

typecho插件编写教程(五):核心代码

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-27 13:46:27 浏览: 评论:0 

这篇文章主要介绍了typecho插件编写教程(五):核心代码,本文讲解了完整的插件核心代码的示例,需要的朋友可以参考下

之前啰嗦了很多,现在开始写核心代码。

分析一下,发布文章的时候,我们需要的信息就是当前文章的URL,我们需要想办法从$contents、 $class中拿到他。

目前我们的插件类代码如下(请注意render被我改成了send)代码如下:

  1. class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface 
  2.     public static function activate(){ 
  3.         //挂载发布文章和页面的接口 
  4.         Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('BaiduSubmitTest_Plugin''send'); 
  5.         Typecho_Plugin::factory('Widget_Contents_Page_Edit')->finishPublish = array('BaiduSubmitTest_Plugin''send'); 
  6.         return '插件安装成功,请进入设置填写准入密钥'
  7.     } 
  8.  
  9.     public static function deactivate(){ 
  10.         // do something 
  11.         return '插件卸载成功'
  12.     } 
  13.  
  14.     public static function config(Typecho_Widget_Helper_Form $form){ 
  15.         $element = new Typecho_Widget_Helper_Form_Element_Text('api', null, null, _t('准入秘钥'), '请登录百度站长平台获取'); 
  16.         $form->addInput($element); 
  17.     } 
  18.  
  19.     public static function personalConfig(Typecho_Widget_Helper_Form $form){} 
  20.  
  21.     public static function send($contents$class){ 
  22.         //do something 
  23.     } 

获取URL

获取永久链接需要通过路由规则 + Typecho_Common::url 联合生成!代码如下:

  1. class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface 
  2.     public static function activate(){ 
  3.         //挂载发布文章和页面的接口 
  4.         Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('BaiduSubmitTest_Plugin''send'); 
  5.         Typecho_Plugin::factory('Widget_Contents_Page_Edit')->finishPublish = array('BaiduSubmitTest_Plugin''send'); 
  6.         return '插件安装成功,请进入设置填写准入密钥'
  7.     } 
  8.  
  9.     public static function deactivate(){ 
  10.         // do something 
  11.         return '插件卸载成功'
  12.     } 
  13.  
  14.     public static function config(Typecho_Widget_Helper_Form $form){ 
  15.         //保存接口调用地址 
  16.         $element = new Typecho_Widget_Helper_Form_Element_Text('api', null, null, _t('接口调用地址'), '请登录百度站长平台获取'); 
  17.         $form->addInput($element); 
  18.     } 
  19.  
  20.     public static function personalConfig(Typecho_Widget_Helper_Form $form){} 
  21.  
  22.     /** 
  23.      * 准备数据 
  24.      * @param $contents 文章内容 
  25.      * @param $class 调用接口的类 
  26.      * @throws Typecho_Plugin_Exception 
  27.      */ 
  28.     public static function send($contents$class){ 
  29.  
  30.         //如果文章属性为隐藏或滞后发布 
  31.         if'publish' != $contents['visibility'] || $contents['created'] > time()){ 
  32.             return
  33.         } 
  34.  
  35.         //获取系统配置 
  36.         $options = Helper::options(); 
  37.  
  38.         //判断是否配置好API 
  39.         ifis_null($options->plugin('BaiduSubmitTest')->api) ){ 
  40.             return
  41.         } 
  42.  
  43.         //获取文章类型 
  44.         $type = $contents['type']; 
  45.  
  46.         //获取路由信息 
  47.         $routeExists = (NULL != Typecho_Router::get($type)); 
  48.  
  49.         //生成永久连接 
  50.         $path_info = $routeExists ? Typecho_Router::url($type$contents) : '#'
  51.         $permalink = Typecho_Common::url($path_info$options->index); 
  52.     } 

代码中有注释,老高就不在赘述了。

至此我们已经拿到了文章的永久链接,下一步就是给百度服务器发送数据了!

本节完!

Tags: typecho插件编写 typecho核心代码

分享到: