웹마스터 팁
게시판 메뉴에 새글 알림 표시 띄우기
2009.06.21 16:17
새글 옆에는 new 표시가 뜨는데, 게시판에는 안 뜨셔서 답답하셨던 분 계시죠?
제가 php도 모르고, 자바스크립트도 잘 모르고, 더군다나 데이터베이스도 거의 모릅니다.
더 심각한건 XE를 다룬지는 고작 3~4일 됐습니다.
그래서 하찮게 들릴 수도 있으니 진짜 초보이고 급하신 분들만 참고하세요.
약간 꼼수인데요. 레이아웃 html에서 바로 소스 추가하였습니다.
<?php
//데이터 베이스에서 등록된 글 정보를 가져옵니다.
$result = @mysql_query('SELECT * FROM `xe_documents`');
//time interval을 계산합니다.
$time_interval = 86400;
$time_check = date("YmdHis", time()-$time_interval);
//가져온 글 정보 중에 모듈 번호와 등록시간을 배열에 집어 넣습니다.
while($row = @mysql_fetch_array($result)){
$module_srl[] = $row[module_srl];
$regdate[] = $row[regdate];
}
//가져온 데이터 개수를 셉니다.
$regdate_len = count($regdate);
?>
<script type="text/javascript">
var module_srl = new Array();
var regdate = new Array();
//php에서 가져온 값을 자바스크립트에서 사용하기 위해 자바스크립트 변수에 담습니다.
//최근값을 체크하는 것이므로 실제 받아온 값의 역순으로 넣어야 나중에 비교 회수가 줄어듭니다.
<?php
echo "regdate_len = $regdate_len;";
echo "time_check = $time_check;";
for($i=0;$i<$regdate_len;$i++){
$j = $regdate_len-$i-1;
echo "module_srl[$i] = $module_srl[$j];";
echo "regdate[$i] = $regdate[$j];";
}
?>
//제가 XE의 구조를 잘 모릅니다. 그래서 꼼수를 부렸습니다.
//대충 보니까 아래에서 게시판 정보를 가져오더라구요.
// <!--@foreach($val['list'] as $key1 => $val1)--> <!--@if($val1['text'])-->
// y=y+1; board="{$val1['href']}";
// <!--@if($val1['selected']) -->
// cnt=y;
// <!--@end-->
//"{$val['href']}" 에 /?mid=test_board 와 같은 모듈 이름이 저장되어 있길래 board 변수에 저장했습니다.
//module_srl 번호가 직접 저장돼 있는 곳이 있을지도 모르는데, 아무튼 저는 모릅니다ㅠㅠ
//구조를 정확히 아신다면 그냥 그거 갖다 쓰시면 되겠습니다ㅠㅠ
//새글이 등록된 게시판 체크하는 함수입니다.
function new_icon(board){
var board_id;
//가져온 board 변수의 /?mid=test_board 값에 test_board가 있는지 체크하고
//있으면 그 board의 module_srl 값을 board_id에 넣습니다.
if(board.search("notice_board") != -1) board_id = '100';
if(board.search("humor_board") != -1) board_id = '200';
if(board.search("test_board") != -1) board_id = '300';
//만약 DB에서 가져 온 데이터의 module_srl 값과 board_id와 같다면
//regdate가 time_check보다 큰지 비교하고 크다면 true 값을 리턴합니다.
//만약 아니라면 false값을 리턴합니다.
//보드 값을 찾지 못했다면 false를 리턴합니다.
for(i=0;i<regdate_len;i++){
if(module_srl[i] == board_id) {
if(regdate[i] > time_check) {
return true;
}
else {
return false;
}
}
}
return false;
};
이렇게 새글이 등록된 보드를 골라내었습니다.
예로 제가 사용한 메뉴를 보여드리겠습니다.
//저는 dTree 메뉴를 사용하고 있습니다.
//빨갛게 표시한 부분에 파라미터로 true / false 값을 받도록 해줍니다.
d.add(y,x,new_icon(board),"{$val1['link']}","{$val1['href']}",''<!--@if($val1['open_window']=='Y')-->,true<!--@end-->);
그리고 dTree.js 자바스크립트 파일 내용을 조금 수정하였습니다.
//이 부분처럼 함수 정의 부분에서 파라미터를 하나 더 추가하였습니다.
function Node(id, pid, new_icon, name, url, title, target, icon, iconOpen, open)
//그리고 실제 메뉴를 구성하는 부분에서 new_icon의 true /false 여부에 따라 아이콘 출력 여부를 결정하였습니다.
str += node.name;
if(node.new_icon) str += ' <img src="./뉴아이콘이미지경로>'
실제 적용 스크린샷 첨부합니다.
파란 하트로 표시된 게시판에 새글이 등록된 상태입니다.
저 같은 초보 분만 참고해주시구요.
고수님들은 그냥 넘어가주세요~ 하하~
아예 모듈화 해주실 고수분 계시면 좋겠습니다^^
댓글 13
제목 | 글쓴이 | 날짜 |
---|---|---|
게시판 스킨에서 조회수, 추천수, 최근 수정일 외 항목도 정렬가능하게 하기 | SMaker | 2009.06.11 |
로그인 페이지 만드는 방법 [5] | 산토 | 2009.06.12 |
외부문서에서 mms:// 태그 사용하기 [11] | 아고라 | 2009.06.12 |
에디터 컴포넌트 목록이 안 나올 때 해결법 [2] | SMaker | 2009.06.14 |
layout.html에 접근 못하게막기. [8] | Habile | 2009.06.15 |
업데이트 후 Rewrite mod 사용이 안돼는 경우 [2] | 겨우리851 | 2009.06.18 |
XE용 query xml 방식으로 일반 테이블도 접근 처리 하기 [1] | 라르게덴 | 2009.06.18 |
확장변수 폼 디자인 하기
[14]
![]() | Diver | 2009.06.21 |
게시판 메뉴에 새글 알림 표시 띄우기
[13]
![]() | 보거스내친구 | 2009.06.21 |
개인쪽지발송!~ | noirzo | 2009.06.23 |
로그인 후 그룹별로 다른 페이지로 가기 - 업데이트판 v1.5 [19] | 무대포2 | 2009.06.24 |
쪽지 답글 보내기 원본 내용 삭제 | 절망린 | 2009.06.24 |
보낸 쪽지함에서 쪽지 내용 안에 회원 아이콘이 제대로 표시 되지 않을때.. | 절망린 | 2009.06.24 |
페이지 제일 위로 바로가는 Top 버튼
[5]
![]() | 개돌 | 2009.06.26 |
로그인 & 파일 첨부 문제 [3] | peter99 | 2009.06.29 |
이미지 리사이즈 적용이 안되는 경우 [4] | 아고라 | 2009.06.30 |
확장변수에 회원정보를 넣어보자
[10]
![]() | 개돌 | 2009.06.30 |
지오피아 게임 제로보드 XE 연동
[5]
![]() | 다른사람 | 2009.06.30 |
달력형 리스트 입니다.
[5]
![]() | 착한악마 | 2009.07.01 |
제로보드 매뉴얼 version 0.63 입니다.
[16]
![]() | 윈매니아 | 2009.07.03 |