zoukankan      html  css  js  c++  java
  • onethink 插件模板定位

    <?php
    // +----------------------------------------------------------------------
    // | OneThink [ WE CAN DO IT JUST THINK IT ]
    // +----------------------------------------------------------------------
    // | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
    // +----------------------------------------------------------------------
    // | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
    // +----------------------------------------------------------------------
    
    namespace HomeController;
    use ThinkController;
    
    /**
     * 扩展控制器
     * 用于调度各个扩展的URL访问需求
     */
    class AddonsController extends Controller{
    
    	protected $addons = null;
    
    	public function execute($_addons = null, $_controller = null, $_action = null){
    		if(C('URL_CASE_INSENSITIVE')){
    			$_addons = ucfirst(parse_name($_addons, 1));
    			$_controller = parse_name($_controller,1);
    		}
    
    		if(!empty($_addons) && !empty($_controller) && !empty($_action)){
    			$Addons = A("Addons://{$_addons}/{$_controller}")->$_action();
    		} else {
    			$this->error('没有指定插件名称,控制器或操作!');
    		}
    	}
    
    	protected function display($templateFile = '', $charset = '', $contentType = '', $content = '', $prefix = '') {
    		$templateFile = $this->getAddonTemplate ( $templateFile );
    		$this->view->display ( $templateFile, $charset, $contentType, $content, $prefix );
    	}
    	function getAddonTemplate($templateFile = '') {
    		if (file_exists ( $templateFile )) {
    			return $templateFile;
    		}
    		//dump ( $templateFile );
    		$oldFile = $templateFile;
    		if (empty ( $templateFile )) {
    			$templateFile = T ( 'Addons://' . _ADDONS . '@' . _CONTROLLER . '/' . _ACTION );
    		} elseif (stripos ( $templateFile, '/Addons/' ) === false && stripos ( $templateFile, THINK_PATH ) === false) {
    			if (stripos ( $templateFile, '/' ) === false) { // 如index
    				$templateFile = T ( 'Addons://' . _ADDONS . '@' . _CONTROLLER . '/' . $templateFile );
    			} elseif (stripos ( $templateFile, '@' ) === false) { // // 如 UserCenter/index
    				$templateFile = T ( 'Addons://' . _ADDONS . '@' . $templateFile );
    			}
    		}
    		
    		if (stripos ( $templateFile, '/Addons/' ) !== false && ! file_exists ( $templateFile )) {
    			$templateFile = ! empty ( $oldFile ) && stripos ( $oldFile, '/' ) === false ? $oldFile : _ACTION;
    		}
    		// dump ( $templateFile );//exit;
    		return $templateFile;
    	}
    
    }
    

    上面是定位源码,重写了display方法

    下面是使用方法

    <?php
    
    namespace AddonsHelloController;
    use HomeControllerAddonsController;
    
    class HelloController extends AddonsController{
        public function replyText(){
            $this->display('replyText');
        }
    }
    

    通过链接访问插件

    <a class="item" href="{:addons_url('Hello://Hello/replyText')}">自定义菜单</a>
    

      

      

      

  • 相关阅读:
    HTML、DIV+CSS网页制作中排版混乱的几种常见的情况
    ---------------------------------Javascript零基础到入门
    Bootstrap 框架、插件
    陌陌和请吃饭之类的应用,你要是能玩转,那就厉害了
    冬天去理短发脑门心冷,这时候你需要一顶暖和的棉绒帽子
    我感觉我右手食指要废了,不能双击的赶脚,太伤
    小李子你注定拿不了奥斯卡,谁他么让你长那么帅的
    3月16号的《人生元编程》读者见面会,有人去吗?
    新年要有新气象,额头上留一条杠!
    每日学习笔记12.29.2013
  • 原文地址:https://www.cnblogs.com/bushe/p/4618885.html
Copyright © 2011-2022 走看看