웹마스터 팁
"이 게시물을..." 추천/비추천/신고 메뉴를 버튼으로
2007.11.08 00:31
"이 게시물을..." 추천/비추천/신고 메뉴를 게시판스킨의 버튼으로 구현하기
이것이 팁이 될 수 있을 지 모르겠지만요.
대부분의 스킨 제작자님들께 도움이 될 듯 해서 올립니다.
0.1.9까지 쓰던 스킨은 추가되는 비추천 신고 버튼을 추가해야 합니다.
0.2.5를 들여다보다가 다음과 같이 해 보니 되더군요
스킨파일에서 view_document.html파일의 중간 부분을 수정했습니다.
<a href="#" onclick="doCallModuleAction('document','procDocumentVoteUp','{$document_srl}');return false;" class="button"><span>{$menu_str = Context::getLang('cmd_vote')}</span></a>
<!--비추천-->
<a href="#" onclick="doCallModuleAction('document','procDocumentVoteDown','{$document_srl}');return false;" class="button"><span>{$menu_str = Context::getLang('cmd_vote_down')}</span></a>
<!--신고-->
<a href="#" onclick="doCallModuleAction('document','procDocumentDeclare','{$document_srl}');return false;" class="button"><span>{$menu_str = Context::getLang('cmd_declare')}</span></a>
여기까지 덧붙이시면 됩니다.
아래 소스에 나오는 것을 위에 처럼 버튼으로 변경한 것입니다.
=================================================
/modules/document/ document.model.php 파일의 함수입니다.
=================================================
class documentModel extends document {
~~기타생략~~
/**
* @brief 선택된 게시물의 팝업메뉴 표시
*
* 인쇄, 스크랩, 추천, 비추천, 신고 기능 추가
**/
function getDocumentMenu() {
~~~~
$menu_str = Context::getLang('cmd_vote');
$menu_link = sprintf("doCallModuleAction('document','procDocumentVoteUp','%s')", $document_srl);
$menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link);
<!--비추천 버튼 추가-->
$menu_str = Context::getLang('cmd_vote_down');
$menu_link = sprintf("doCallModuleAction('document','procDocumentVoteDown','%s')", $document_srl);
$menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link);
<!--신고 기능 추가-->
$menu_str = Context::getLang('cmd_declare');
$menu_link = sprintf("doCallModuleAction('document','procDocumentDeclare','%s')", $document_srl);
$menu_list[] = sprintf("\n%s,%s,%s", '', $menu_str, $menu_link);
여기까지 분석해서 적용하는 과정에 질답게시판에서 다음과 같은 과정을 거쳤습니다.
여기까지 오는 동안 우선 비나무님의 친절한 도움이 컸네요.
http://www.zeroboard.com/?mid=zbxe_qna&page=3&document_srl=15975097
링크를 따라가 보면 제로님의 팁을 만날 수 있지만 그리고 추가적으로 여기에 덧붙입니다.
"이 게시물을..." 이라는 팝업 메뉴에 나오는 것들을 버튼으로 구현하였으니 "이 게시물을..." 이라는 것은 제거해야겠죠.
content(false) 로 변경하면 보이지 않는다고 하네요.
스킨파일에서 view_document.html파일의 상단 부분을 수정합니다
그림을 덧붙입니다.
버튼 생성결과
비추천을 누르니
이런 메시지가 뜨네요
여기서 확인 버튼을 누르면 페이지가 갱신되는 군요
이렇게 추천수가 -1 로 됩니다. 당연히 비추천이니깐 감점이죠 ㅋㅋ
이 비추천 점수는 매우 유용해서 제가 만들 사이트에서는 관리자가 글들을 삭제하여 관리하는 것이 아니라 글을 쓰는 유저들이 점수를 매겨서 평가하는 시스템을 적용하려구 합니다. 악풀 같은 거는 유저들이 감점해주면 감점과 신고 수가 일정정도 넘으면 글이나 댓글이 보이지 않게 하면 좋겠죠.
유저들에 의한 쓰레기 글의 자동 분리 수거라고나 할까?
암튼 여러분들이 잘 모르셔서 그렇죠 이거 겁나게 좋은 겁니다.
가령 제로보드도 제로님이 관리하지 않아도 유저들끼리 추천 때리면서 자체적으로 운영할 수 있는 거거든요. 문제는 걸러내는 시스템이 취약했다는 것인데 큰 결단을 내리신 거 같네요.
이거 만들려고 몇달동안 시도를 했었다가 만들어 주셨는데 이런 기능을 포기한다는 것은 홈페이지를 포기한다는 것과 같기때문에 기능을 살려서 스킨에 넣으려고 좀 신경 썼습니다 ㅎ
암튼 제로님께 감솨 드리며 잘쓰겠습니다
아 제로님 그리고 본문 수정을 하면 제목의 값이 지워지는 군요 다시 제목을 적어야 하는 불편함이 있네요
댓글 28
-
미잘
2007.11.08 02:26
-
xe촙5
2007.11.08 03:49
댓글은 아직 안해 봤구요
스샷은 덧붙였습니다 -
미잘
2007.11.08 11:44
오우, 감사합니다. -
hyunwe
2007.11.08 09:03
멋진 팁이네요..-_ -b
소스 업뎃될때 또 바꿔야하는것만 빼면... -
guny
2007.11.08 11:14
멋진팁 .. 추천한방...
-
xe촙5
2007.11.08 11:18
제로보드 기본 스킨을 그대로 쓰면 매번 버젼 업할 때마다 사이트가 바뀌기 때문에 저는 거의 그렇게쓰지 않습니다.
기본스킨을 조금씩 변형해서 쓰더라도 기본스킨 폴더를 복사해서 다른이름으로 스킨을 만든 다음에 그것으로 사용해야 업뎃된 기본스킨을 적용할 것인지 기존의 변형된 것으로 쓸 것인지를 선택할 수 있으니까요
스킨은 어디까지나 스킨이라고 생각합니다.
기능을 넣을 수 있고 뺄 수도 있는 그런 유연성이 스킨으로 가능하다고 봅니다.
레이아웃도 마찬가지인데요
기본레이아웃 스킨은 전혀 쓰지 않습니다. 구조적으로 기본스킨이 마음에 들지 않을 뿐만아니라, 물론 기본레이아웃에서 변형한 것이지만 만들어쓰는 스킨은 서브메뉴의 깊이를 5단계까지 표시가능하게 대단히 많이 수정된 레이아웃이라서 더욱 그렇더군요
어쨋든 변형하려면 복사해서 변형하고 기본 스킨은 건드리지 않는 것이 더 좋다는 의견입니다.
이 팁은 반드시 스킨을 따로 복사해서 변형해 쓰시는 분들께 권하는 팁입니다. -
가장아름다운사랑
2007.11.08 12:57
서브메뉴 깊이를 5단계까지 표시가능하게 하는 팁은 공개해주시면 안될까요???
-
xe촙5
2007.11.08 13:20
서브메뉴 깊이를 4단계 이상 5단계 까지 꼭 필요하십니까? 나는 이거 꼭 필요해서 홈페이지 만들기 공부 처음 시작하자마자 도전했던 것인데 매우 조잡한 것이걸랑요....
베타테스트 처음 시작할때 어떤 분이 팁(이 게시판 목록의 앞부분 게시글)에 올리셨는데 약간 미완된 면이 있긴 했지만 그팁을 기반으로 완성했긴 했습니다
내 홈페이지 작업장(아직도 오픈 못하는)에서는 문제없이 돌아갑니다만 문제는 공개할 만큼 완성도가 있는 것이 아니고요 소스의 몇가지 팁이라면 따로 정리는 해보겠습니다.
기존에 올려 주신 팁을 보완한 정도이구요
일단 예전에 올라온 팁을 찾으시길 권합니다.
여담이지만
하위메뉴를 보기 위해 클릭할때마다 페이지가 갱신되는 구조인데 자바스크립트 메뉴는 그렇지 않더군요.
지금은 자바스크립트를 어떻게 배워서라도 새로 만들어 보고 싶거든요.
자바스크립트를 아직 몰라서 공부를 해야 하는 입장입니다.
그래서 그다지 권장하지는 안는데... -
tester
2007.11.08 12:17
스킨파일에서 view_document.html파일의 중간 부분을 수정했습니다.라고 말씀하셨는데
정확히 중간 부분의 어느부분을 수정하라는 말씀이신지요?
한동안 테스트하느라 해메고 있네요
수고스럽지만 수정파일을 올려주실 수는 없으신지요? -
xe촙5
2007.11.08 12:38
xe_board 기본스킨을 기준으로
view_document.html 소스의 위치를 보면
143번째 줄에
<!-- 목록, 수정/삭제 버튼 -->
<div class="buttonBox">
<a href="{getUrl('document_srl',''+ '+ ')}" class="button"><span>{$lang->cmd_list}</span></a>
<!--@if($oDocument->isEditable())-->
<a href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_modify}</span></a>
<a href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_delete}</span></a>
<!--@end-->
</div>
이렇게 나와있잖아요?
<!-- 목록, 수정/삭제 버튼 -->
<div class="buttonBox">
<a href="{getUrl('document_srl','')}" class="button"><span>{$lang->cmd_list}</span></a>
<!--@if($oDocument->isEditable())-->
<a href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_modify}</span></a> ☜수정버튼 인거 같고
<a href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl)}" class="button"><span>{$lang->cmd_delete}</span></a> ☜삭제버튼 인거 같고
<!--@end-->
☜요기쯤에 넣으시는 것이 좋을 것 같네요
</div>
그리고 95번째 줄에서
{$oDocument->getContent()}
이 있는데요.
{$oDocument->getContent(false)}
이렇게 변경하시면 "이게시물을..."이 보이지 않게 된답니다. -
xe촙5
2007.11.08 13:07
앗 그러고 보니 인쇄 스크랩도 넣어야 되나?
대단한 것이 아니니 덧붙여 드릴께요
이거는 0.1.9에 다 나와 있으니 그대로 붙이시면 됩니다.
0.2.5 기본스킨을 복사해서 변형하시는 분은
윗 댓글의 "☜요기쯤에" 부분에 같이 넣으시면 될 것 같네요
아래 소스는 0.1.9 에서 나오는 view_document.html의 소스를 퍼온 것입니다.
<!--프린트-->
<a href="{getUrl('','act','dispDocumentPrint','document_srl',$oDocument->document_srl)}" onclick="winopen(this.href);return false;" class="button"><span>{$lang->cmd_print}</span></a><!--스크렙-->
<!--@if($is_logged)-->
<a href="#" onclick="doScrap({$oDocument->document_srl}); return false;" class="button"><span>{$lang->cmd_scrap}</span></a>
<!--@end-->스크랩은 유저가 로그인 되어있으면 활성화 되는 버튼입니다.
0.1.9이전에서 따로 스킨을 만들어쓰시는 분들은 이 부분은 필요없을 겁니다.
오직 0.2.5 기본 스킨 변형유저들만 참고하십시요~ -
xe촙5
2007.11.08 13:11
윽--; 그리고 팝업 메뉴에 엮인글 발송이 또 있는 거 같네요.
저건 없는 줄 알고 안해봤는데 공부를 따로 해야 할 듯 싶습니다. -
꼬리
2007.11.08 14:29
엮인글 발송은...
<a href="#" onclick="popopen('{getUrl()}?module=trackback&act=dispTrackbackSend&document_srl={$oDocument->document_srl}','SendTrackback');return false;" class="button"><span>{$lang->cmd_send_trackback}</span></a>
참고로 엮인글 발송은 글 작성자에게만 해당사항이 있으므로 수정/삭제 버튼 바로 앞이나 뒤에, 즉 if ~ end 사이에 넣어주세요. -
Elia
2007.11.08 16:17
좋은 팁이네요.. 나중에 파일 업데이트 시 수정해야 하는 압박이..
기본 기능에 포함되어서 관리자가 선택할 수 있도록 하면 정말 좋을 것 같습니다..
일단 추천합니다. -
도토리나무
2007.11.10 10:50
멋진 팁이네요 저도 추천 한방..
^^ -
수평선
2007.11.12 15:43
오늘 겨우 시간이 좀 나서 좀전에 적용해봤는데요, 분위기가 많이 차분해졌네요. 덕분에...
게시물도 그렇고 댓글마다 "이 댓글을.." 이렇게 따라나오면서 공간을 차지해버리니까 보기도 좀 어색하고 그랬거든요.
아무튼 감사...
근데 위에서 {$oDocument->getContent(false)} 식으로 "이 게시물을..."이란 부분을 출력되지 않게 하셨는데 이럴 경우 회원서명 부분도 같이 출력되지 않더군요. 조금 불만스러웠네요.
그래서 서명은 출력되고 "이 게시물을..."이란 부분만 출력되지 않게 해봤습니다. 제 의도대로 됀 것 같아서 옮겨봅니다. 좀 길어져서 방법은 아래에 정리해서 접어뒀습니다. 펼쳐서 보세요.
-------------------------------------------------------------------------------------
... / modules / document / document.item.php (219행~)
-------------------------------------------------------------------------------------
$content = sprintf(
'<!--BeforeDocument(%d,%d)--><div class="document_%d_%d">%s</div><div class="document_popup_menu"><span class="document_popup_menu document_%d">%s</span></div><!--AfterDocument(%d,%d)-->',
$this->document_srl, $this->get('member_srl'),
$this->document_srl, $this->get('member_srl'),
$content,
$this->document_srl, Context::getLang('cmd_document_do'),
$this->document_srl, $this->get('member_srl'),
$this->document_srl, $this->get('member_srl')
);*/
위의 원소스 중에서 적색 부분을 제거하시면 됩니다.
결과는 아래와 같습니다.
$content = sprintf(
'<!--BeforeDocument(%d,%d)--><div class="document_%d_%d">%s</div><!--AfterDocument(%d,%d)-->',
$this->document_srl, $this->get('member_srl'),
$this->document_srl, $this->get('member_srl'),
$content,
$this->document_srl, $this->get('member_srl'),
$this->document_srl, $this->get('member_srl')
);
나머지는 동일하게 처리하시면 되구요, 다만 {$oDocument->getContent()}를 {$oDocument->getContent(false)} 식으로 변경하는 부분은 불필요합니다.
저는 문제없이 됩니다만, 다른 분들은 어떨지 모르겠네요. 참고해주시고 문제사항은 좀 알려주세요.
적용하기 전에 원본은 꼭 백업해놓으시구요...
질문 한가지... zb5에서는 서명에 애니메이션.gif 를 등록하면 그대로 적용이 되었는데 zbxe에서는 적용이 안되는군요. 사이즈도 일정사이즈로 강제변형되어 버리고... 좀전에 그걸 알게 되었는데, 혹시 이미 수정하셨거나 방법 아시는 분 좀 알려주세요. 손댈라니 시간이 여의치 않네요... -
비밀얌
2007.11.22 23:32
미국인들이 많이 접속하는 지역 커뮤니티 웹사이트인 크레그스리스트의 경우도 유저들이 글을 flag해서 어느정도의 flag수가 다으면 글이 스펨으로 간주되어 안보이게되지요.
-
조도명
2008.05.18 00:19
전 신고버튼이
<!--?좉퀬-->
<a href="#" onclick="doCallModuleAction('document','procDocumentDeclare','{$document_srl}');return false;" class="button"><span>{$menu_str = Context::getLang('cmd_declare')}</span></a>
이렇게해야보이는군요 뭐가다른지는모르겠는데 -
최태현913
2008.06.24 14:06
추천하기 어디있나요? -
ㅁㄴㅇ
2008.08.21 15:23
어딜 수정하라는건지. 처음부터 이걸 덧붙이시면 됩니다 이러면 뭘 어쩌라는건지; -
reon
2009.05.29 16:32
추천버튼을 이방식응용해서 게시물리스트에서 적용할순 없나요? -
투데이
2009.06.07 01:01
매우 잘됩니다. 강력하게 추천한방 날립니다. ^^
근데~ 좌측에 추천수/비추천수 숫자는 어떻게 표현하는지요?
-
글쓴이
2009.07.14 12:01
정말 감사드립니다... 포기하고 있었는데.. 거쳐거쳐 이 글을 발견했네요~
앞으로도 많은 정보공유 부탁드려요~
-
글쓴이
2009.07.19 01:02
/modules/document/ document.model.php 이 파일으 본문 내용처럼 수정하면 게시판이 아예 안 뜹니다. ㅠㅠ -
포토올/wow
2009.08.10 15:53
아~!! 늦게 봤습니다만, 매우 중요한 팁이군요~!!
어느 분이 좀 정리해 주셨으면 좋겠습니다.ㅠㅠ.
어느 폴더의 어느 파일을 어떻게 수정해야 하는지를~요.ㅠㅠ.
버전이 .XE.1.2.4를 사용중인데, module/board/skin/에...xe-board도 있고,xe-default도 있고..어느 것을??
또 위 어떤 분은 module/document/document.model.php를 수정하라하시고...ㅠㅠ.(게시판 안 뜬다고도 하시고..ㅠㅠ)
어느 고수님께서..수고를~ 좀~부탁드립니다.
감사합니다.^^
-
p
2010.06.27 22:58
저, 그 파일은 어디 있나요?ㅜㅜ
저런 소스는 어디서 봐야 보이는지 모르겠어요ㅠㅠ
전 인쇄/스크랩 버튼을 꼭 없애야겠는데, getcontents나 저런 소스를 어디로 가면 고칠 수 있나요.
전 그냥 파란웹호스팅으로 쓰고 있어요ㅠㅠ
-
웹 엔진
2011.03.12 11:01
너무 감사드립니다. ㅎㅎ -
웹 엔진
2011.07.17 13:38
관리자만 가능한 작성글 추적 메뉴 등은 어떻게 해야 할까요?
제목 | 글쓴이 | 날짜 |
---|---|---|
[리눅스] 속도향상 팁. nginx를 리버스프록시로 써봅시다. [6] | choco@_@ | 2013.07.11 |
jquery swiper | Ansi™ | 2017.02.16 |
인스타그램 해시태그 회원가입 없이 끌어오기 | 외인 | 2017.02.08 |
CKEditor 글꼴란에 한글 폰트 추가하는 방법 (수정함) [4] | 기븐 | 2015.09.19 |
폰갭과 웹앱 그리고 XE... [6] | onTrust | 2015.04.23 |
jQuery 플러그인 모음 | Ansi™ | 2017.01.25 |
DOS 공격에 대한 방어 프로그램입니다. | 마루디자인 | 2017.01.23 |
관리자 로그인시 원하는걸 보여주자 [5] | 빽짱구 | 2008.04.15 |
SSL의 정석 (아파치 & nginx) [13] | 기진곰 | 2015.06.16 |
방명록 형태 사용시 제목이 길게 저장되게 하려면 | sejin7940 | 2016.12.23 |
로그인풀림방지 - 주소 고정하기 [27] | ezi | 2011.05.28 |
숫자 아이디 허용 방법 | 410contents | 2016.12.13 |
(설문조사) 회원만 설문 조사 하도록 [8] | Simulz | 2007.09.04 |
클라우드플레어 사용시 서버 IP 노출방지 체크리스트 | gnbstory | 2016.12.09 |
간단한 xe 관련 자바스크립트 질문 [1] | 마든남 | 2016.12.01 |
스크롤 맨아래로 내리면 자동으로 글 목록 더보이기 구현(게시판어어느 스킨이든 사용가능) [19] | 장포크 | 2013.08.10 |
메뉴에 새 글 표시 모듈 사용 시 new 아이콘이 보이지 않는 버그 수정 [8] | 퍼니엑스이 | 2014.08.12 |
가상서버 고르실때 참고하시면 좋겠네요. | 로니 | 2016.11.24 |
CloudFlare 사용시 방문자 IP와 SSL 접속여부가 정확하게 파악되지 않는 문제 해결법 [4] | 기진곰 | 2015.07.12 |
네이버 웹마스터도구 최적화검증과 GZIP | 영흥도우럭1 | 2016.11.18 |
댓글에도 비슷한 메뉴가 생겼던데 추천, 비추천을 선택하면 어떻게 되나요?