onethink 插件模板定位

<?php

// +----------------------------------------------------------------------

// | OneThink [ WE CAN DO IT JUST THINK IT ]

// +----------------------------------------------------------------------

// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.

// +----------------------------------------------------------------------

// | Author: 麦当苗儿 <[email protected]> <http://www.zjzit.cn>

// +----------------------------------------------------------------------



namespace Home\Controller;

use Think\Controller;



/**

 * 扩展控制器

 * 用于调度各个扩展的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 Addons\Hello\Controller;

use Home\Controller\AddonsController;



class HelloController extends AddonsController{

    public function replyText(){

        $this->display('replyText');

    }

}

 

通过链接访问插件

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

  

  

  

你可能感兴趣的:(net)