onethinkプラグインテンプレートの位置決め

3125 ワード

<?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>