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


Posted in PHP onMay 28, 2015

之前??铝撕芏啵?衷诳?夹春诵拇?搿?/p>

分析一下,发布文章的时候,我们需要的信息就是当前文章的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);

    }

}

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

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

本节完!

PHP 相关文章推荐
聊天室php&mysql(六)
Oct 09 PHP
PHP JSON格式数据交互实例代码详解
Jan 13 PHP
php设计模式 FlyWeight (享元模式)
Jun 26 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
php加密解密实用类分享
Jan 07 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
Symfony的安装和配置方法
Mar 17 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
PHP常量define和const的区别详解
May 18 PHP
因str_replace导致的注入问题总结
Aug 08 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 PHP
php实现paypal 授权登录
May 28 #PHP
typecho插件编写教程(四):插件挂载
May 28 #PHP
PHP Opcache安装和配置方法介绍
May 28 #PHP
typecho插件编写教程(三):保存配置
May 28 #PHP
PHP通过API获取手机号码归属地
May 28 #PHP
typecho插件编写教程(二):写一个新插件
May 28 #PHP
typecho插件编写教程(一):Hello World
May 28 #PHP
You might like
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
js自定义事件代码说明
2011/01/31 Javascript
javascript动画浅析
2012/08/30 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
js中的this关键字详解
2013/09/25 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
jQuery实现的form转json经典示例
2017/10/10 jQuery
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
Python实现的检测网站挂马程序
2014/11/30 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
python文本数据相似度的度量
2018/03/12 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
香港万宁官方海外旗舰店:香港健与美连锁店
2018/09/27 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
大学生的应聘自我评价
2013/12/13 职场文书
初三新学期计划书
2014/05/03 职场文书
员工表扬信怎么写
2015/05/05 职场文书
当你焦虑迷茫时,请读读这6句话
2019/07/24 职场文书