首頁  >  文章  >  php教程  >  typecho插件编写教程(五):核心代码

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

WBOY
WBOY原創
2016-06-13 09:03:25920瀏覽

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

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

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

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

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

  代码如下:

  class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface

  {

  public static function activate(){

  //挂载发布文章和页面的接口

  Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');

  Typecho_Plugin::factory('Widget_Contents_Page_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');

  return '插件安装成功,请进入设置填写准入密钥';

  }

  public static function deactivate(){

  // do something

  return '插件卸载成功';

  }

  public static function config(Typecho_Widget_Helper_Form $form){

  $element = new Typecho_Widget_Helper_Form_Element_Text('api', null, null, _t('准入秘钥'), '请登录百度站长平台获取');

  $form->addInput($element);

  }

  public static function personalConfig(Typecho_Widget_Helper_Form $form){}

  public static function send($contents, $class){

  //do something

  }

  }

  获取URL

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

  复制代码 代码如下:

  class BaiduSubmitTest_Plugin implements Typecho_Plugin_Interface

  {

  public static function activate(){

  //挂载发布文章和页面的接口

  Typecho_Plugin::factory('Widget_Contents_Post_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');

  Typecho_Plugin::factory('Widget_Contents_Page_Edit')->finishPublish = array('BaiduSubmitTest_Plugin', 'send');

  return '插件安装成功,请进入设置填写准入密钥';

  }

  public static function deactivate(){

  // do something

  return '插件卸载成功';

  }

  public static function config(Typecho_Widget_Helper_Form $form){

  //保存接口调用地址

  $element = new Typecho_Widget_Helper_Form_Element_Text('api', null, null, _t('接口调用地址'), '请登录百度站长平台获取');

  $form->addInput($element);

  }

  public static function personalConfig(Typecho_Widget_Helper_Form $form){}

  /**

  * 准备数据

  * @param $contents 文章内容

  * @param $class 调用接口的类

  * @throws Typecho_Plugin_Exception

  */

  public static function send($contents, $class){

  //如果文章属性为隐藏或滞后发布

  if( 'publish' != $contents['visibility'] || $contents['created'] > time()){

  return;

  }

  //获取系统配置

  $options = Helper::options();

  //判断是否配置好API

  if( is_null($options->plugin('BaiduSubmitTest')->api) ){

  return;

  }

  //获取文章类型

  $type = $contents['type'];

  //获取路由信息

  $routeExists = (NULL != Typecho_Router::get($type));

  //生成永久连接

  $path_info = $routeExists ? Typecho_Router::url($type, $contents) : '#';

  $permalink = Typecho_Common::url($path_info, $options->index);

  }

  }

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

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

  本节完!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn