TIP게시판

제목 view를 이용한 테마기능 구현
글쓴이 한대승(불의회상) 작성시각 2014/07/23 16:30:24
댓글 : 1 추천 : 1 스크랩 : 1 조회수 : 13120   RSS
한대승(불의회상)
CI 프레임워크를 도입하여 MVC를 이용하여 사이트를 개발했는데, 봄,여름,가을,겨울 별로 사이트 디자인이 바껴야 한다고 요청이 들어 온다면 어떻게 하시겠습니까?

개발 초기에 템플릿, 레이아웃, HMVC 등을 이용하여 대비해 놓지 않았다면 참 난감 할 것입니다.

여러가지 방법이 있겠지만 간단하게 CI의 views 폴더를 확장 하여 테마를 구현하는 방법이 있습니다.
테마를 확장 했다고 하여도 기존코드(controller, views)는 수정 할 필요 없이 말이죠.

* 기존 CI 애플리케이션 구조
+ controllers
+ models
+ views
    - welcome.php
* 확장된 CI 애플리케이션 구조
+ controllers
+ models
+ views
    + spring
        - welcome.php
    + summer
        - welcome.php

이를 위해서는 일단 index.php를 수정해야 합니다.
/*
 *---------------------------------------------------------------
 * APPLICATION View Theme
 *---------------------------------------------------------------
 */
	define('APP_THEME', 'spring');
테마명을 index.php에 define 해놓는것이죠.
이제 views의 위치만 바꾸면 됩니다.
코어를 직접 건드는 방법도 있지만 코어 버그 패치나 업데이트를 위해서 건들지 않는게 좋습니다.
대신 application/core 폴더에 MY_Loader.php 를 추가 합니다.

* MY_Loader.php
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Loader extends CI_Loader {
    public function __construct()
    {
                parent::__construct();
		
                // 여기서 views 폴더의 위치를 바꿉니다.
		$this->_ci_view_paths = array(APPPATH.'views/'.APP_THEME.'/' => TRUE);
		log_message('debug', "My Loader Class Initialized");
    }
}
어때요?

참 쉽죠!! ^o^



 
 다음글 뭐..팁이라고 하긴 좀 그렇구요.. (5)
 이전글 sqlite3_driver.php에 list_field... (2)

댓글

토리 / 2014/07/23 17:45:21 / 추천 0
오!.. 감사합니다.^^