아고라 스타일 댓글 알리미입니다. > 그누4 스킨

그누4 스킨

스킨의 저작권은 해당 스킨 제작자님께 있으며, 그누보드의 저작권과 다를 수 있습니다.
스킨 다운로드시 좋아요와 감사의 코멘트를 남기시면 제작자에게 큰 힘이됩니다. ^^y
그누보드와 관련이 있지만 스킨과 빌더가 아니면 플러그인 게시판에 올려주세요.

아고라 스타일 댓글 알리미입니다. 정보

최신글 아고라 스타일 댓글 알리미입니다.

첨부파일

zs.alimi.zip (5.8K) 279회 다운로드 2011-11-05 00:28:02

본문

현재는 utf-8버전입니다.


아고라 스타일 댓글, 답글, 답댓글 알리미입니다.


1. 게시판 관리에서 새 게시판을 생성합니다. 이름은 zs_alimi로 꼭 하지 않으셔도 됩니다. (회원의 정보를 기록하기 위해 파일 대신 사용하는 게시판(table)입니다.)
2. 접근권한은 모두 10으로 해 주세요. 그누보드 엔진이 접근 할 일은 없지만 기분상 10으로 설정합니다.
3. bo_1은 적용할 게시판 목록입니다. 콤마(,)로 구분하고 갯수는 제한이 없습니다. 좋은 서버와 회선이라면 여러 개 하셔도 되지만 성능에 따라서 갯수를 정하시면 될거 같습니다. 게시판 이름 앞뒤로 공백은 무시하니 띄어쓰기 하셔도 무관 합니다.
4. 첨부된 스킨 파일 압축을 풀어 skin/latest에 업로드 합니다. (설치 편의를 위해 latest를 활용 했습니다.)

5. 원하는 위치에 <?=latest("zs.alimi", "zs_alimi", 0, 1)?>를 넣습니다.
zs.alimi : lastest의 스킨 이름입니다.
zs_alimi : 게시판 이름입니다.
0 : 반드시 0으로 하셔야 불필요한 list 레코드를 읽지 않습니다. 무조건 0으로 해주세요.
1 : 새 반응글을 읽어 올 시간입니다. 예를 들어 1이면 1분 마다 새 반응글을 검사합니다. 숫자가 클수록 DB 부하가 줄어 듭니다. 소규모 사이트에서는 2 ~ 3 정도를 추천 합니다. 동접자가 많으면 5분정도 어떨가 싶네요. bo_1에 설정한 게시판 갯수와 상관이 있으니 적절하게 설정하시기 바랍니다.

동접자가 많을 때는 DB 서버의 부하가 생길 수 있으니 접속자가 많은 포털, 커뮤니티 사이트에서는 다음 아고라에서처럼 서브 페이지에 넣기를 추천 합니다.
저는 outlogin.skin.2.php에 넣었습니다.
비회원이 접근하면 오류가 생길 수 있으니 꼭 회원만 접근 할 수 있도록 해 주세요.

답글 : 내가 쓴 게시글에 달린 답글
댓글 : 내가 쓴 게시글에 달린 최상위 댓글
답댓글 : 내가 쓴 댓글에 달린 다른 회원의 댓글

최신 반응글 갯수는 10개로 제한 했습니다.

* 스킨
lastest.skin.php : 22번 라인에서 "알리미"라고 된 텍스트와 icon 이미지를 바꿀 수 있습니다.
바꾸실 때 id는 수정 시 오류가 생길 수 있습니다.
new.reply.skin.php : 반응글 정보를 볼 수 있는 실제 스킨 페이지 입니다. 디자인 수정은 이 파일에서 하실 수 있습니다.

new.reply.load.php : 반응글을 체크하는 루틴인데 지저분 할 수 있지만 주석은 모두 남겨 두었습니다. 더 나은 의견과 방법은 서로 공유하면 좋겠습니다.

테스트를 했지만 오류가 있을 것으로 생각합니다.
오류 신고 하시면 수정하겠습니다.



- 2012. 02. 07
댓글의 답댓글 체크가 가능한지 연습삼아 만들어 본 프로그램인데 찾으시는 분이 생각보다 많아 책임감을 느끼게 됩니다.
이번에 만드는 빌더에 플러그인으로 추가 할 생각으로 다시 기획하고 있습니다.
기한은 기약할 수 없으나 실무 적용에는 차후 버전이 더 나으리라 여겨집니다.
추천
18

댓글 전체

ajax는 데이터통신 할 때 기본적으로 utf-8만 지원이 되서 new.reply.skin.php에서 한글이 출력 되는 부분은 iconv()로 컨버팅을 해줘야 하는 번거로움이 있습니다. ㅠㅠ
해보지는 않고 책만 본건데 latest.skin.php에서 25번 라인을 <script language="javascript">에서 <script language="javascript" charset="euc-kr">로 바꿔 보시면 어떨까요?
제가 euc-kr은 고려를 못했네요.
자바스크립트의 콤포넌트는 기본적으로 유니코드인데 캐릭터셋을 지정 할 수 있다고 풍문을 들었습니다.
혹시라도 버전업을 하게 되면 꼭 이부분 해결 하도록 하겠습니다. ^^;
소스 보시면 아시겠지만 new.reply.skin.php는 latest.skin.php에서 include하는게 아니고 ajax에서 변수 data로 결과를 받아 오는 형식이라 utf만 지원되는 ajax라 한글이 깨집니다.
latest.skin.php에서 data를 euc로 컨버팅하면 될것도 같습니다.
자바스크립트에 디코딩 함수가 있는지 모르겠네요.
저도 찾아 보겠습니다. ^^
네... DB 부하를 줄이기 위해 마지막 확인 시간 이전의 게시글을 체크하지 않아서 그렇습니다. 반응글을 히스토리로 기록한다는 의미 보다는 반응글을 알려주는 개념으로 보시면 될거 같습니다. 아고라도 그렇게 하고 있어서 저도 따라 했습니다. ㅋ
아..euc 사용하시는 분은 euc로 변환하고 new.reply.skin.php 상단에
<? 다음에 @header('Content-Type: text/html; charset=euc-kr'); 이렇게 넣어주시면 안 깨지고  잘~ 나옵니다.
iconv 써봤더니 변수만 변환되서 깨져요. 실력이 없는 관계로 ㅎㅎ
제가 euc-kr을 테스트할 서버가 없어서 작업을 못했습니다.
euc-kr 협찬을 받을 수 있음 좋겠네요. ^^;
js에서 디코딩 함수가 있는 걸로 아는데 euck-kr 서버가 생기는데로 보완 작업을 해보겠습니다.
소스코드를 넣으면  해당글을 눌렀을때 화면이 안뜨는 경우는 왜 그런가요?

또 메인화면의 최신게시글을 눌러도 화면이 안떠버립니다.

링크는 이동되는데 게시판자체가 뜨지 않습니다.
버그 있습니다.
제목이나 댓글 내용에 /가 있는 경우 /가 구분자로 사용되어 아래와 같이 표기됩니다.
ex) 그누보드/만세 라고 입력시
그누보드
XXX님이 만세

/와 같이 종종 쓰일만한 문자열로 구분자를 사용하신게 원인 같습니다.
저의 경우 이런식으로 구분자를 바꾸어보았습니다만, 이런식으로 하면 위와 같은 버그가 발생할 확률이 희박하죠.

new.reply.load.php파일에서 41~59 라인

//-- 같은 레벨 중 답글이면서 바로 윗 단계의 글이 내 글이면 $repData[wr_id]는 내 글에 대한 반응 글
$recRes = sql_fetch("select wr_id, mb_id, wr_name, wr_subject, wr_datetime from $aboardname[$i] where wr_num='$repData[wr_num]' and wr_is_comment='0' and wr_reply='$upRecA' and mb_id='$member[mb_id]'");
if($recRes[wr_id]) $my_new_reply_list .= $repData[wr_datetime] . "|nazuna|" . str_replace("g4_write_", "", $aboardname[$i]) . "|nazuna|".$repData[wr_id] . "|nazuna|".$repData[wr_name] . "|nazuna|" . cut_str($recRes[wr_subject], 60) . "|nazuna|답글@";
}

//-- 댓글일 때 상위 댓글과 게시글 번호 체크
if(($repData[wr_is_comment] == "1") && ($repData[wr_comment_reply])) {
//-- 댓글이면서 바로 윗 단계의 레코드를 구한다.
$upRecA = substr($repData[wr_comment_reply], 0, strlen($repData[wr_comment_reply])-1);
//-- 같은 단계의 댓글 중 상위 글이 있으면 내 댓글의 댓글
$recRes = sql_fetch("select wr_id, mb_id, wr_content from $aboardname[$i] where wr_num='$repData[wr_num]' and wr_comment='$repData[wr_comment]' and wr_comment_reply='$upRecA' and mb_id='$member[mb_id]'");
if($recRes[wr_id]) $my_new_reply_list .= $repData[wr_datetime] . "|nazuna|" . str_replace("g4_write_", "", $aboardname[$i]) . "|nazuna|".$recRes[wr_id] . "#c_".$repData[wr_id] . "|nazuna|".$repData[wr_name] . "|nazuna|" . cut_str($recRes[wr_content], 60) . "|nazuna|답댓글@";
}

//-- 최상위 댓글인 경우 어떤 등록 글에 대한 반응글인지
if(($repData[wr_is_comment] == "1") && (!$repData[wr_comment_reply])) {
$recRes = sql_fetch("select wr_id, mb_id, wr_subject from $aboardname[$i] where wr_num='$repData[wr_num]' and wr_id='$repData[wr_parent]' and mb_id='$member[mb_id]'");
if($recRes[wr_id]) $my_new_reply_list .= $repData[wr_datetime] . "|nazuna|" . str_replace("g4_write_", "", $aboardname[$i]) . "|nazuna|" . $recRes[wr_id] . "#c_" . $repData[wr_id] . "|nazuna|" . $repData[wr_name] . "|nazuna|" . cut_str($recRes[wr_subject], 60) . "|nazuna|댓글@";
}


93 라인에
$temp_reply = explode("|nazuna|", $a_new_reply_list[$i]);

|nazuna|를 구분자로 변경해보았습니다.
먼저 좋은 스킨 감사합니
그런데 설치를 해보니
Fatal error: Call to undefined function latest() in /web/home/adam8014/html/skin/mw.builder/mw.basic.2/index.main.skin.php on line 19
이렇게 에러가 나옵니다 제가 설명대로 이해를 못한건지 요렇게 나오네요;;
그럼 좋은 하루되시길 바랍니다
배추빌더신가봐요.
lib/latest.lib.php 이 파일이 참조 되어야 하고 참조 되었더라도 latest() 함수가 있어야 합니다.
latest()는 그누보드에서 최신글을 갖어오는 기본 함수입니다.
배추빌더는 캐시를 위해 자체 함수를 쓰고 있기 때문에 latest.lib.php를 head.php에 참조 되었는지 확인을 먼저 해 주세요. ^^
앗 바보천사님 감사합니다
해당 파일 상단에 latest.lib.php을 인클루드 해줬더니 잘 돌아갑니다
좋은 스킨 잘쓰겠습니다^^
전체 5,853 |RSS
그누4 스킨 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT