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>
    

      

      

      

  • 相关阅读:
    CodeForces
    CodeForces
    Simple Robot Gym
    Gym
    Java课程03总结
    Java课程03总结
    判断字符串是否回文
    Java课程02总结
    有关二进制原码、反码、补码
    Java课程01总结
  • 原文地址:https://www.cnblogs.com/bushe/p/4618885.html
Copyright © 2011-2022 走看看