웹마스터 팁

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기능을 원하시는 기능으로 코어수정 없이 대체해 보시는것도 좋을것 같습니다. ^^

제목 글쓴이 날짜
한 페이지(화면)에 두개(2개)의 모듈(게시판 등)을 넣는 법 [6] 황건순 2008.08.25
음악넣는 BGM코드 70종류 입니다 [1] 푸른커튼 2008.08.25
댓글(코멘트) 입력창에 이미지 넣기 [19] file skyatc 2008.08.29
밑에 페이지 네비게이션 수정 (다음10개, 이전10개등으로) [6] file Clanss 2008.08.29
메인화면에 플래시 쉽게 삽입하는 방법.. [12] 청개구리00 2008.08.30
문서 카테고리를 메뉴에 적용하기 위한 레이아웃 수정 팁과 개념토론 [7] 제베 2008.08.31
원하는 위치에 구글 (맞춤)검색창 달기 [2] 다케루 2008.09.02
각 리스트형 위젯에 페이지 기능을 달자. [10] 라르게덴 2008.09.02
[우클릭 및 드레그 방지법] 및 [방지된 홈페이지 해재법] >0< [7] 이홍석295 2008.09.03
카멜레온 최근글 위젯 클릭시 새창 팁 가랑바람 2008.09.04
회원 포인트 선물 하기 등 포인트 변경시 바로 적용 방법 한꼬마 2008.09.06
동일서버내 페이지에서 로그인정보 활용하기... [4] 수로 2008.09.06
다음카페에 끊김없이 음악나오게 하기 푸른커튼 2008.09.06
등록하시겠습니까? 등록할까요? 안 나오고 바로 글 등록되게 하는 법 [6] 황건순 2008.09.08
블로그, 홈페이지 가입시 자동 입력되는 http:// 없애기 [2] 류영무 2008.09.09
IP 주소 4자리수 모두 공개하는 방법 [1] 블루파티 2008.09.11
에디터 9pt 추가 및 에디터에도 웹폰트 보이게 하기. [13] file 욜리 2008.09.11
사진 한꺼번에 일괄적으로 올리기 [4] 안정수650 2008.09.12
게시판 에디터 폰트 글자(글씨)크기 변경하는 법 씨에씨에 2008.09.12
주소록 구현 (외부 페이지) [17] CSLab 2008.09.15