웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
다운로드 필요 포인트가 0 인 모듈에서의 비회원 다운로드 권한 부여
2011.02.09 07:47
XE는 제로보드 시절부터 포인트 라는 시스템을 가지고 왔습니다.
이 포인트 시스템은 재미난 것이 포인트가 부족할 경우 게시물을 읽지 못하거나, 첨부파일을 다운로드 하지 못하게 할 수 있다는 특징을 가지고 있습니다.
단지 한가지 아쉬운 점이 있다면, 첨부파일을 받을 경우 "포인트가 부족할 경우 다운로드 금지"에 관련된 사항을 체크하면,
별도의 게시판에서 다운로드시 차감되는 포인트가 없고, 비회원에게 개방되어있는 게시판이라고해도
비회원이기 때문에 다운로드가 불가능하게 처리되버립니다.
비회원도 접근이 가능하고 다운로드시 필요한 포인트가 없음에도 불구하고 권한이 없다는 메세지가 뜨게 된다는 것이지요.
다소 아쉬운 부분이 아닐 수 없습니다.
개인적으로 이러한 부분에 대해 다소 수정을 해야할 필요가 있다보니, 불가피하게 엔진의 작은 부위를 건드리게 되었는데요.
필요하신 분들이 있다면 참고하여 사용하시라고 글 남겨드립니다.
포인트에 따른 처리 부분은 xe core/modules/point 모듈부분에서 처리를 하기 때문에 이쪽에 위치한 파일중 일부를 손봐야합니다.
위에 말한 부분만을 처리하기 위해서는 point.controller.php 파일에 몇글자만 추가를 해주면 되는데요
해당 파일의 372번 라인쯤 오면 다음과 같은 부분을 보실 수 있습니다.
여기서 375번 라인을 다음과 같이 변경해 주시면 됩니다.
라는 부분의 마지막 ) 전에
를 추가해주시면 됩니다.
와 같은 형태로 만들어지면 됩니다. 기본적인 권한 없음 조건은 동일하나, 다운로드에 필요로하는 포인트가 0 이 아닌경우에 처리되도록 조건을 추가한 형태로, 비회원도 다운로드가 가능하게 할 경우에 적용 됩니다.
이 포인트 시스템은 재미난 것이 포인트가 부족할 경우 게시물을 읽지 못하거나, 첨부파일을 다운로드 하지 못하게 할 수 있다는 특징을 가지고 있습니다.
단지 한가지 아쉬운 점이 있다면, 첨부파일을 받을 경우 "포인트가 부족할 경우 다운로드 금지"에 관련된 사항을 체크하면,
별도의 게시판에서 다운로드시 차감되는 포인트가 없고, 비회원에게 개방되어있는 게시판이라고해도
비회원이기 때문에 다운로드가 불가능하게 처리되버립니다.
비회원도 접근이 가능하고 다운로드시 필요한 포인트가 없음에도 불구하고 권한이 없다는 메세지가 뜨게 된다는 것이지요.
다소 아쉬운 부분이 아닐 수 없습니다.
개인적으로 이러한 부분에 대해 다소 수정을 해야할 필요가 있다보니, 불가피하게 엔진의 작은 부위를 건드리게 되었는데요.
필요하신 분들이 있다면 참고하여 사용하시라고 글 남겨드립니다.
포인트에 따른 처리 부분은 xe core/modules/point 모듈부분에서 처리를 하기 때문에 이쪽에 위치한 파일중 일부를 손봐야합니다.
위에 말한 부분만을 처리하기 위해서는 point.controller.php 파일에 몇글자만 추가를 해주면 되는데요
해당 파일의 372번 라인쯤 오면 다음과 같은 부분을 보실 수 있습니다.
// 포인트가 없으면 다운로드가 안되도록 하였으면 비로그인 회원일 경우 중지 if(!Context::get('is_logged')) { if($config->disable_download == 'Y') return new Object(-1,'msg_not_permitted_download'); else return new Object(); }
여기서 375번 라인을 다음과 같이 변경해 주시면 됩니다.
if($config->disable_download == 'Y' && $module_config['download_file'] < 0) return new Object(-1,'msg_not_permitted_download');
이렇게 바꾸면 비회원이면서 다운로드로 인한 포인트 차감이 이루어질 경우 권한이 없음으로 뜨게 됨으로,
접근이 가능하며 다운로드 필요 포인트가 0 인 게시판에서 비회원도 다운로드가 가능하게 바꿀 수 있습니다.
애드온이 아닌 임의로 하는 임시 방편이므로 필요하신 분들만 사용하시기 바랍니다.
※ xe core에 익숙하지 않은 분들은 xe core 자체를 편집하는 것은 별로 추천하는 방안이 아니란 것을 밝혀둡니다
- 추가. 2011.12.07
그간 귀찮아서 미루고 잇다가 다시 필요가 생겨서 약간 수정을 했습니다.
XE코어 1.5.x 이후 소스에서는 325번째 줄. function triggerBeforeDownloadFile() 함수 부분의
if($config->disable_download == 'Y'+ ' && isset($module_config['download_file']))
라는 부분의 마지막 ) 전에
&& $module_config['download_file'] != 0
를 추가해주시면 됩니다.
최종적인 형태는
if($config->disable_download == 'Y' && isset($module_config['download_file']) && $module_config['download_file'] != 0) return new Object(-1,'msg_not_permitted_download');
와 같은 형태로 만들어지면 됩니다. 기본적인 권한 없음 조건은 동일하나, 다운로드에 필요로하는 포인트가 0 이 아닌경우에 처리되도록 조건을 추가한 형태로, 비회원도 다운로드가 가능하게 할 경우에 적용 됩니다.
댓글 2
-
스유군
2011.02.09 09:06
-
키네시스
2011.02.09 16:10
해당 부분도 포인트 부분을 편집하여 메세지 출력과 로그인 페이지로 넘어가는 부분을 넣어주면 가능하긴 합니다만,
사실상 가장 간편한 방법은 Core를 손보는 것이면서도, 위험한것도 Core를 손보는 것이지요.
자칫 코어 업데이트시 초기화 되는 위험부담도있고, 수작업이 필요할수도 있으니까요.
가장 이상적인것은 모듈이나 애드온같은 프로그램으로 만들어서 연동시키는 것입니다만,
실상 말씀하신것이 불가능한건 아닙니다 :)
비회원이면 로그인을 먼저 하라는 문구가 뜨게 하는건 안되나요?