lang/php

CodeIgniter Stright layout lib - view, js, css 한번에 사용

C/H 2016. 3. 24. 12:30


/**
 * @author	: uncaose@gmail.com
 * @url 	: https://github.com/uncaose/straight-ci-layout
 */
class MY_Loader extends CI_Loader
{
	public $_ci_view_path = '';
	public $_views = Array();		// view lists
	public $_skin = '_skin';		// skin
	public $_layout = '_layout';	// layout
	public function __construct()
	{
		parent::__construct();
	}
	// Extend
	public function view( $view, $vars = array(), $return = FALSE )
	{
		$this->_views[] = substr($view, strpos($view, '/')===0?1:0); // 뷰 로드 저장
		return parent::view($view, $vars, $return);
	}
	
	public function getView( $unique=FALSE )
	{
		if( $unique === TRUE )
		{
			return array_unique( $this->_views );
		}
		return $this->_views;
	}
	public function skin( $name='' )
	{
		$this->_skin = $name;
		return $this;
	}
	
	public function getSkin()
	{
		return $this->_skin;
	}
	public function layout( $name='' )
	{
		$this->_layout = $name;
		return $this;
	}
	
	public function getLayout()
	{
		return $this->_layout;
	}
}
/**
 * End Of File application/core/MY_Loader.php
 */
/**
 * @author	: uncaose@gmail.com
 * @url 	: https://github.com/uncaose/straight-ci-layout
 */
class MY_Controller extends CI_Controller
{
	public function __construct()
	{
		parent::__construct();
		if( ! defined('EXT') ) define('EXT', '.php');	// ci2 EXT redefine
		if( ! defined('VIEWPATH')  ) define('VIEWPATH', $this->load->_ci_view_path); // ci3 style
		$this->load->skin('_skin')->layout('_layout');	// default skin, layout
	}
	/**
	 * CI _output
	 */
	public function _output( $output )
	{
		$output = $this->_straight_skin( $output );
		$output = $this->_straight_layout( $output );
		$output = $this->_straight_view( $output );
		
		echo $output;
	}
	
	// skin
	private function _straight_skin( $output='' )
	{
		if( ! empty($this->load->_skin) && file_exists(VIEWPATH.$this->load->_skin.EXT) )
		{
			$output = $this->load->view($this->load->_skin, Array('skin'=>$output), TRUE);
		}
		return $output;
	}
	
	// layout
	private function _straight_layout( $output='' )
	{
		if( ! empty($this->load->_layout) && file_exists(VIEWPATH.$this->load->_layout.EXT) )
		{
			$output = $this->load->view($this->load->_layout, Array('layout'=>$output), TRUE);
		}
		else
		{
			$output = ''.$output.'';
		}
		return $output;
	}
	
	// view
	private function _straight_view( $output='' )
	{
		if( isset($this->load->_views) && sizeof($this->load->getView(TRUE)) )
		{
			foreach( $this->load->getView(TRUE) AS $_view)
			{
				$js = VIEWPATH.$_view.'.js';
				$css = VIEWPATH.$_view.'.css';
				// view js
				if( file_exists( $js ) )
				{
					$js = str_replace(VIEWPATH, 'asset/', $js).'?_='.hash('md5', $js );
					$output = str_replace('', "\n", $output );
				}
				// view css
				if( file_exists( $css ) )
				{
					$css = str_replace(VIEWPATH, 'asset/', $css).'?_='.hash('md5', $css );
					$output = str_replace('', "\n", $output );
				}
			}
		}
		return $output;
	}
}
/**
 * End of File application/library/MY_Controller.php
 */
반응형

'lang > php' 카테고리의 다른 글

composer 프로젝트 셋업  (0) 2016.04.04
Composer Install  (0) 2016.03.30
PHP SocketIOClient.php On socket.io 1.3.7 Error  (1) 2015.12.02
동영상 업로드  (0) 2015.08.21
PHP 웹 사이트 IDE 개발툴  (0) 2015.06.01