Home > php教程 > php手册 > 基于thinksns2.5插件开发

基于thinksns2.5插件开发

WBOY
Release: 2016-06-06 20:08:28
Original
1469 people have browsed it

一: 什么是插件 ? 插件位于/addons/plugins/目录下 ? 插件是在不修改任何应用-核心心代码的情况下扩展某些功能,具备可启动可关闭的特性. ? thinksns的插件机制是基于Hook的,所以每个插件实现的hook必然会在制定位置执行一次.多个插件同时实现同一个钩子时也

一: 什么是插件
? 插件位于/addons/plugins/目录下
? 插件是在不修改任何应用-核心心代码的情况下扩展某些功能,具备可启动可关闭的特性.
? thinksns的插件机制是基于Hook的,所以每个插件实现的hook必然会在制定位置执行一次.多个插件同时实现同一个钩子时也会有顺序执行.

二:开发流程
???? 1: 实现插件Addons抽象类的描述对象
???? SimpleAddons:简单插件
???? NormalAddons:复杂的插件
?
??? 在插件/addons/plugins/ 下创建想做的插件文件名(下方我采用HttpReq).
??? HttpReq目录结构如下:
??????????????-hook??????????? 使用hooks集合类(可多个)
??????????? ?-lib???????????? 插件类包
??????????? -html?? 插件页面
?????????? -HttpReqAddons.class.php
????
??? 在HttpReq目录下创建一个描述文件: HttpReqAddons.class.php
??? 注:此名字须是 插件名字+Addons+class.php这样的标准格式.
??? 代码如下:?

<?php class HttpReqAddons extends NormalAddons{
	protected $version = "1.0";
	protected $author  = "tangw";
	protected $site    = "http://www.tangwen.com";
	protected $info    = "织梦端请求接口插件";
        protected $pluginName = "织梦http请求接口插件V1";
        protected $tsVersion = '2.5';
    /**
     * 获得此插件使用了哪些钩子聚合类
     * @return string
     */
    public function getHooksInfo()
    {
        $hooks['list']=array('HttpReqHooks');//钩子聚合类(多个)
        return $hooks;
    }
    /**
     * 该插件的管理界面的处理逻辑。
     * 如果return false,则该插件没有管理界面。
     * 这个接口的主要作用是,该插件在管理界面时的初始化处理
     * @param string $page
    */
    public function adminMenu()
    {
	    return false;
    } 
    /**
     * 在后台启动该插件时的初始化动作(包括停用后再启动)
     * @return type
     */
    public function start()
    {
        return true;
    }
    //后台第一次启动时的初始化动作
    public function install()
    {
        return true;
    }
    /**
     * 在后台卸载插件操作
     * @return type
     */
    public function uninstall()
    {
        return true;
    }
}
Copy after login

?
???? 2:定义hooks集合类
?在/addons/plugins/HttpReq/hook/下创建HttpReqAddons.class.php类getHooksInfo中

HttpReqHooks类.
???? 代码如下:

<?php /**
 *  织梦端->sns端请求获取数据接口
 * 请求地址如:http://whtest.com/index.php?app=home&mod=Widget&act=addonsRequest&addon=HttpReq&hook=get_user_face
 * @author tangw 2013-03-11
 *
 */
class HttpReqHooks extends Hooks{
    /**
     * 根据用户id获取用户信息
     *@author tangw 2013-03-11
     *@return  josn对象
     */
    public function get_user_info(){
      $uid = $_REQUEST['uid'];
      if(empty($uid)){
          $this->_reJson(array("isflag"=>0,"msg"=>"请求参数错误"));
      }
      $userData = M('user')->field("email,uname")->where("uid=$uid")->find();
      if($userData){
           $this->_reJson(array("isflag"=>1,"data"=>$userData));
      }else{
           $this->_reJson(array("isflag"=>2,"msg"=>"此用户不存在"));
      }
    }
    /**
     * 根据用户名获取用户图像
     *
     * @author tangw 2013-03-11
     * @param array("uname"=>"用户名","size"=>"图像大小")
     * @return json对象
     */
    public function get_user_face(){
        $username = trim($_REQUEST['uname']);//用户名
        $size = trim($_REQUEST['size']);//图像大小 s=small,m=middle,b=big
        $size = empty($size)?'m':$size;
        if(empty($username)){
            $this->_reJson(array("isflag"=>0,"msg"=>"请求参数错误"));
        }
         $userData = M('user')->field("uid")->where("uname='{$username}'")->find();
         if($userData){
             $uid = $userData['uid'];//用户id
             $uface = getUserFace($uid,$size);//图片
             $wb_url = SITE_URL."/index.php?app=home&mod=Space&act=index&uid=".$uid;//微博地址
             $data = array("uid"=>$uid,"face"=>$uface,"wb_url"=>$wb_url);
             $this->_reJson(array("isflag"=>1,"data"=>$data));
         }else{
             $this->_reJson(array("isflag"=>2,"msg"=>"此用户不存在"));
         }
    }
    /**
     * *@desc:返回json数据
     * *param $data  = array('title'=>'ok','flag'=>1);
     * */
    private function _reJson($data) {
        //header("Content-type: text/html; charset=utf-8");
        $str_json = json_encode($data);
        exit("$str_json");
    }
}
?>
Copy after login

插件调用方法:

Addons::createAddonShow("HttpReq", "get_user_info", array());
Addons::addonsHook("HttpReq", "get_user_info", array());
Addons::createAddonUrl("HttpReq", "get_user_info", array());
Copy after login

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template