제목 | 위젯 라이브러리(?) 입니다. | ||
---|---|---|---|
글쓴이 | 천재작곡가 | 작성시각 | 2016/06/03 11:19:08 |
|
|||
최근에 XE 로 만들어진 사이트를 유지보수할 기회가 있어서 보다보니 위젯시스템이 잘활용하면 괜찮겠다 싶어서 만들었습니다만... 사실 쓸일이 별루 없기는 할것같아요 그래도 일단 만든거니깐 공유해봅니다.
@ application/config/config.php $config['enable_hooks'] = TRUE; 후킹 사용으로 설정을 바꿔야 합니다.
@application/config/hooks.php $hook['display_override'][] = array( 'class' => 'Widgets', 'function' => 'widget_replace', 'filename' => 'Widget.php', 'filepath' => 'hooks' ); hooks 파일에 위젯 후킹 파일을 집어넣습니다. 디스플레이로 뿌려주기 직전으로 잡았습니다.
@application/hooks/Widget.php <?php defined('BASEPATH') OR exit('No direct script access allowed'); /** * Widget Class * ======================================================================================== * Widget Class for Codeigniter */ class Widgets { protected $CI; /** * do_replace widget tag to widget element */ function widget_replace() { $this->CI =& get_instance(); // get display content; $buffer = $this->CI->output->get_output(); // searching widget tags; $buffer = preg_replace_callback('!<widget([^\>]*)\>!is', array($this,'trans'), $buffer); // output replacing data; $this->CI->output->set_output($buffer); $this->CI->output->_display(); } function trans($matches) { // get extra values; $vars = trim($matches[1]); // replace array && return to query string $vars = preg_replace('/\r\n|\r|\n|\t/',' ',$vars); $vars = str_replace( array('"',' '), array('',' '), $vars ); $vars = trim(str_replace( " ", '&', $vars )); // query string to array parse_str($vars, $vars_array); return $this->get_widget_content($vars_array); } function get_widget_content( $vars_array ) { $return = ""; if(file_exists( VIEWPATH . "/widget/". $vars_array['type'] . ".php")) { $return = $this->CI->load->view( "/widget/".$vars_array['type'] .".php", $vars_array, TRUE ); } return $return; } } 위젯 클래스입니당
사용법~ 먼저 위젯부분이 치환되서 들어가는 부분입니다. @application/views/widget/위젯타입.php (저는 예시로 banner.php로 작업했습니다.) <img src="<?=$url?>" style="width:<?=$width?>;height:<?=$height?>">
다음으로 뷰파일에서 위젯 엘리먼트 정의입니다. @application/views/welcome_message.php <widget type="banner" width="200px" height="200px" url="http://placehold.it/200x200">
음.. 원리로 따지자면 디스플레이로 뿌려지기 직전에 <widget> 태그가 있는지 검색한후 <widget> 태그에서 type 속성과 같은이름을 가진 파일이 views/widget 폴더에 있다면 그 파일 내용으로 치환을 해줍니다. <widget> 태그 내에 들어있는 속성값들은 그대로 변수로 변환해줘서 치환되는 파일에 변수로 넘겨줍니다. 필요한값들을 해서 넘겨줘도 되겟지요. 슬라이드같은경우는 <widget id="slide" images="이미지01.png;이미지02.png;이미지03.png;"> 이런식으로 해서 사용해도 되지않을까 하는 생각에 만들어봤습니다.
응용을 한다면 위젯별로 id 속성을 따로 부여해서 캐시를 준다던가 하면 되지 않을까 싶은데.. 일단 뭐 쓸일이 거의 없지 않을까 싶긴합니다.. XE처럼 각 위젯들이 잘 공유된다면 모를까..
ps.. 참고로 저는 회사에서 랜딩페이지가 일주일에 한번씩 생산되는데 웹디자이너분이 드림위버밖에 못쓰시는지라 요거 만들어서 요런 요런값만 바꾸서 원하는 위치에 넣으면 슬라이드가 자동으로 나온다~ 라고하니깐 좋아하시더라구요 |
|||
태그 | 위젯,hook | ||
다음글 | db 쿠키 헬퍼 (3) | ||
이전글 | 폼 검증 에러메시지 조사 처리하기 (7) | ||
한대승(불의회상)
/
2016/06/03 12:02:33 /
추천
0
|
hook을 이용한 위젯태그 구현 이군요.
좋은 아이디어 같습니다. ^^