웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
XE코어 수정없이 원하는 기능 넣기
2014.03.22 15:26
php를 이용한다면 XE의 addon, module trigger 기능을 사용하면 되지만
javascript의 경우는 마땅치 않아서 jquery를 사용할 수 있는 사용자에게 유용한 팁이지 않을까해서 올려봅니다.
묻고 답하기에 이와 유사한 질의들이 있고해서 답변겸 올려봅니다.
예제로 닉네임 클릭시 나오는 팝업창을 XE코어 수정없이 변경해 보도록 하겠습니다.
(function($) { var displayPopupMenuByCore = window.XE.displayPopupMenu; window.XE.displayPopupMenu = function( ret_obj, response_tags, params ) { // Log the fact that we are calling our override. // console.log( ret_obj ); // Execute the original method. // displayPopupMenuByCore.apply( this, arguments ); var target_srl = params.target_srl; var menu_id = params.menu_id; var menus = ret_obj.menus; var html = ""; if(this.loaded_popup_menus[menu_id]) { html = this.loaded_popup_menus[menu_id]; } else { if(menus) { var item = menus.item; if(typeof(item.length)=='undefined' || item.length<1) item = new Array(item); if(item.length) { for(var i=0;i<item.length;i++) { var url = item[i].url; var str = item[i].str; var icon = item[i].icon; var target = item[i].target; var styleText = ""; var click_str = ""; /* if(icon) styleText = " style=\"background-image:url('"+icon+"')\" "; */ switch(target) { case "popup" : click_str = 'onclick="popopen(this.href, \''+target+'\'); return false;"'; break; case "javascript" : click_str = 'onclick="'+url+'; return false; "'; url='#'; break; default : click_str = 'target="_self"'; break; } html += '<li '+styleText+'><a href="'+url+'" '+click_str+'>'+str+'</a></li> '; } } } this.loaded_popup_menus[menu_id] = html; } /* 레이어 출력 */ if(html) { var area = $('#popup_menu_area').html('<ul>'+html+'</ul>'); var areaOffset = {top:params.page_y, left:params.page_x}; if(area.outerHeight()+areaOffset.top > $(window).height()+$(window).scrollTop()) areaOffset.top = $(window).height() - area.outerHeight() + $(window).scrollTop(); if(area.outerWidth()+areaOffset.left > $(window).width()+$(window).scrollLeft()) areaOffset.left = $(window).width() - area.outerWidth() + $(window).scrollLeft(); area.css({ top:areaOffset.top, left:areaOffset.left }).show().focus(); } } }) (jQuery);
위의 코드중에
var displayPopupMenuByCore = window.XE.displayPopupMenu;
기존 XE코어 ./common/js/common.js에 있는 window.XE.displayPopupMenu 원래 함수를 displayPopupMenuByCore 에 저장시키는 것입니다.
이것은 추후 원래함수를 호출할 경우가 있을때 사용하기 위한 것입니다.
그다음에 코어와 똑같은 함수를 만들어서 원하는 기능을 함수내에 넣으시면 됩니다.
window.XE.displayPopupMenu = function( ret_obj, response_tags, params ) {
.
.
내용
.
.
}
예제에 포함된 내용은 단순히 링크 클릭시 target="_blank" 를 target="_self" 로 바꾸어주는 기능 입니다.
사용은 레이아웃 제일 하단에 아래코드를 넣어주면 됩니다.(이유는 코어의 script들이 먼저 로딩된후에 불러와야 하기 때문입니다.)
<load target="./member_control.js" type="body" />
팝업메뉴가 안뜨게 하고 싶다면
window.XE.displayPopupMenu = function( ret_obj, response_tags, params ) {
return;
}
jquery를 공부하시면서 XE코어의 jquery기능을 원하시는 기능으로 코어수정 없이 대체해 보시는것도 좋을것 같습니다. ^^
댓글 3
-
GG
2014.03.22 15:46
-
키스투엑스이
2014.03.22 18:00
55... -
boy2
2014.03.23 11:10
자바 잘 몰라서 그런지 이해는 잘 안 가네요 흑흑 ㅠ
제목 | 글쓴이 | 날짜 |
---|---|---|
XE 업데이트후 갑자기 CSS/JS등이 403 오류가 날때 | YJSoft | 2014.04.16 |
VB.NET에서 XE로그인 연동하기.[내용추가] [3] | AppSeedKorea | 2014.03.26 |
최신 제로보드 XE 동영상 강의 [25] | 하얀마법 | 2013.08.09 |
XE코어 수정없이 원하는 기능 넣기 [3] | 마이웹 | 2014.03.22 |
XE 앱 개발시 키보드 포커스 관리 | StyleRoot | 2014.03.19 |
XE 업로드 먹통시 1.7.8 버전 - 추가로 질문포함. [1] | artsmi.myid.net | 2014.03.12 |
XE 어플 개발시 키보드위에 입력창 올리기 [4] | 웹빌드 | 2014.03.11 |
XE 어플로 만들때 PUSH 기능처리 방법 | 웹빌드 | 2014.03.06 |
xe 홈페이지 폰갭으로 묶을때 | 웹빌드 | 2014.03.03 |
XE 1.7.4 "이메일 주소로 계정 찾기" 오류 해결 방법 | 꿈돌리 | 2014.02.20 |
XE 첨부파일 문제로 게시판이 백지화 될때... [1] | 똑디 | 2011.05.20 |
[XE] 1.4.5.x 업데이트 후 레이아웃 오류 수정법 [7] | SeklutZ | 2011.04.07 |
XE 1.7.4 새로운 우편번호 체계에서 나머지주소 관련 사용실수 방지방법입니다 [1] | sejin7940 | 2014.02.07 |
[XE 1.7] 스팸필터 설정이 안되는 경우 해결 방법 [3] | 퍼니엑스이 | 2014.02.03 |
XE 루트로 접속하기 (이동 필요없음) [12] | 모앱 | 2013.03.03 |
인사말 랜덤추출 스크립트 [xe적용방법] [12] | 라싸 | 2008.02.18 |
XE 1,7 에서 확장변수 기준으로 정렬 기능이 작동 안 하는 버그 수정법 [1] | sejin7940 | 2013.12.04 |
xe_2009 게시판 스킨 사용시 브라우저 타이틀 지우기 | 착한악마 | 2014.01.23 |
XE 전체 타이틀(title) 수정하기 [3] | pezex | 2014.01.16 |
하나의 호스팅 공간에서 여러개의 xe 사용하기 | 고마워XE | 2013.12.19 |
오~ 이런 방법도 있군요.