[提問交流]求大神告知怎麼在控制器下呼叫外掛

發表於2019-05-11
1、怎麼在控制器下呼叫外掛
2、怎麼在鉤子裡面執行外掛中的方法,我是把外掛當控制器使用的。
求大神告知,線上急等
回覆
R方法可以呼叫外掛的控制器
hook呼叫外掛的鉤子方法
評論
/**呼叫外掛
 * @param $name
 * @param null $params
 * @param string $action
 * @return mixed
 */
function plugin($name,&$params=NULL) {
    $class = "Addons\\{$name}\\{$name}Addon";
    if(class_exists($class)){
        $addon = new $class;
        if(!check_addons($name)){
            return '';
        }
        return $addon->$name($params);
    }else{
        return '';
    }
}

把這個方法加到框架公共函式裡這個預設呼叫外掛的同名方法,如果想呼叫指定方法這個可以
/**呼叫外掛
 * @param $name
 * @param null $params
 * @param string $action
 * @return mixed
 */
function plugin($name,$method,&$params=NULL) {
    $class = "Addons\\{$name}\\{$name}Addon";
    if(class_exists($class)){
        $addon = new $class;
        if(!check_addons($name)){
            return '';
        }
        return $addon->$method($params);
    }else{
        return '';
    }
}

//把這個函式也加進去,檢測外掛是否安裝並且啟用
function check_addons($name){
    static $addons_status = array();
    //檢測外掛是否已經安裝並且啟用
    if(!isset($addons_status['$name'])){
        $result = M('Addons')->where(array('name'=>$name))->find();
        if($result['status'] == 1){
            $addons_status['$name'] = 1;
        }else{
            $addons_status['$name'] = 0;
        }
    }
    if($addons_status['$name'] !== 1 ){
        return false;
    }else{
        return true;
    }
}
評論

相關文章