웹마스터 팁
로그인 정보 폼에 읽지 않은 쪽지 개수 보이기.
2011.07.23 14:53
XE - 읽지 않은 쪽지 개수 보이기.
예전에 이와 비슷한 신규 쪽지 개수 보이기 팁이 올라 왔습니다. 전 신규 쪽지 개수가 아니라 아직 읽지 않은 쪽지 개수를 표시하고 싶어 기능을 구현하고 작으나마 다른 분께 도움이 될까 하여 이렇게 올립니다.
XE는 신규 쪽지가 오면 플래그 파일로 임시 저장하고, 읽을꺼냐?? 물어 본 후 Yes건 No건 선택하면 플래그 파일을 지워 버립니다. 곧, XE는 신규 쪽지에 대해 처음에 딱 한 번 알리고 말 뿐입니다.
DB에는 신규인지 아닌지 저장되지 않죠.
거기다 쪽지를 보내면 DB에는 두 개의 레코드가 생깁니다. 하나는 받은 쪽지고 하나는 보낸 쪽지죠. 이것 때문에 readed 필드가 'N'인지만 비교해서는 정확한 값을 알 수 없습니다.
정확히 알려면 받는 사람(receiver_srl)과 받은 쪽지인지(message_type)와 읽었냐(readed) 세 개를 비교해야 합니다.
하지만, communication module의 쪽지에서 쿼리를 뒤져 봐도 제가 원하는 기능을 하는 쿼리가 없었습니다. 그래서, XE를 최대한 건들지 않는게 목적이라 지금 쓰는 선우 로그인 폼에 이 기능을 추가하기로 했습니다.
※ 선우 로그인 위젯 추가한 파일 : \xe\widgets\login_sunoo\queries\getUnreadMessages.xml 수정한 파일 : \xe\widgets\login_sunoo\skins\sunoo_loginbox\sunoo_login_info.html |
1. getUnreadMessages.xml 추가
\xe\widgets\login_sunoo 디렉토리 아래에 'queries' 디렉토리를 만듭니다.
다른 로그인 위젯을 쓰시는 분은 login_sunoo 대신에 쓰고 있는 위젯 디렉토리 아래에 만들면 됩니다.
그 다음 아래 코드를 작성해서 'queries' 디렉토리에 'getUnreadMessages.xml' 로 저장합니다.(파일 인코딩: ANSI)
'receiver_srl' : 받는 사람 member_srl
'message_type' : 쪽지 종류. 'R'은 받은 쪽지, 'S'는 보낸 쪽지, 'T'는 보관한 쪽지
'reaede' : 읽기 상태. 'Y'는 읽음. 'N'은 읽지 않음.
2. sunoo_login_info.html 수정
\xe\widgets\login_sunoo\skins\sunoo_loginbox\sunoo_login_info.html 파일을 열어 아래와 같이 수정합니다.
빨간색 부분을 쓰고 있는 로그인 위젯 폴더명으로 수정해야 합니다.
43 line 추가 : {@ $m_args->receiver_srl = $logged_info->member_srl; $m_output = executeQuery('widgets.login_sunoo.getUnreadMessages', $m_args); }
67 line 추가 : <font color="#ff0000">[{$m_output->data->count}]</font>
쓰고 있는 로그인 폼 스킨 파일에서 적당히 비슷한 곳 찾아 취향에 맞게 고치면 됩니다.
Code Highlighter가 작동을 안하네요. -_-; 그래서 걍 이미지로 넣었습니다;;
queries.zip--------------------------
댓글 21
-
독도2005
2011.07.24 08:53
흐음?? 적용이 전혀 안되는데요?? -
무얼까
2011.07.24 12:43
입력하신 코드를 보여 주시면 좋을 것 같아요. ^^ -
독도2005
2011.08.04 18:49
<!--%import("css/default.css")-->
<!--%import("./filter/logout.xml")--><fieldset id="login" class="login_{$colorset}">
<legend>{$lang->cmd_login}</legend>
<form action="" method="post"><div class="userName">
<div class="fl"><div class="member_{$logged_info->member_srl}"><strong>{$logged_info->nick_name}</strong></div></div>
<div class="fr"><a href="{getUrl('act','dispMemberLogout')}"><img src="./images/{$colorset}/buttonLogout.gif" alt="{$lang->cmd_logout}" title="{$lang->cmd_logout}" width="47" height="18" /></a></div>
</div>
{@ $oPointModel = &getModel('point'); $point = $oPointModel->getPoint($logged_info->member_srl); $oModuleModel = &getModel('module'); $config = $oModuleModel->getModuleConfig('point'); $level = $oPointModel->getLevel($point, $config->level_step); }
{@ $m_args->receiver_srl = $logged_info->member_srl; $m_output = executeQuery('widgets.login_info.getUnreadMessages', $m_args); }<div class="levelpoint">
<div style="margin:6px; text-align:left">
Lv : <b>{$level}</b> Nio: <b>{number_format($point)} </b>
<is_admin=="Y'>!--@if($logged_info->is_admin=="Y")-->
<a href="{getUrl('','module','admin')}" target="_blank">[{$lang->cmd_management}]</a>
<!--@end-->
<br />미확인 쪽지 : <b>{$m_output->data->count}</b>
</div>
<div style="margin:10px 6px; font-weight:bold; color:#6699FF; text-align:left; letter-spacing:-1px">
<group_list">!--@foreach($logged_info->group_list as $key => $val)-->
<span>{$val}</span>
<!--@end-->
</div>
</div>
<!--if($logged_info->profile_image->src)
<div class="levelpoint"><img src="{$logged_info->profile_image->src}" width="160px" height="120px" border="0" alt="profile_image" style="border:1px solid red; margin-bottom:8px; border-style:solid; border-color:#cccccc; cursor:pointer" onclick="location.href='+ '?mid=index&act=dispMemberModifyInfo'"/></div>
<div class="levelpoint">
<div style="width:160px; height:120px; border:1px solid #cccccc; margin:0 auto; cursor:pointer"><img src="./images/noimg.gif" onclick="location.href='/?mid=index&act=dispMemberModifyInfo'"/></div>
</div>
end-->
<ul class="userMenu">
<menu_list">!--@foreach($logged_info->menu_list as $key => $val)-->
<li><a href="{getUrl('act',$key,'member_srl','')}" title="{Context::getLang($val)}">{str_replace(" ","", Context::getLang($val))}</a></li>
<!--@end-->
</ul>
<!--p class="latestLogin">{$lang->last_login} <span>{zDate($logged_info->last_login, "Y-m-d H:i")}</span></p-->
</form>
</fieldset> -
무얼까
2011.08.05 10:58
위 소스가 지금 쓰고 있는게 맞나요?? XE 템플릿 문법이 틀린 곳이 있어요.
예를 들어, <is_admin="Y">!--@if($logged_info->is_admin=="Y")--> 같은 곳.
그리고, 그룹 정보 보여주는 곳에서 {$val}이 잘못 됐어요. {Context::getLang($val)} 이라고 쓰셔야 합니다.
아래는 주석처리하신 곳 정리하고, 템플릿 문법 수정한 코드에요.
-----------------------------------------
<!--%import("css/default.css")-->
<!--%import("./filter/logout.xml")-->
<fieldset id="login" class="login_{$colorset}">
<legend>{$lang->cmd_login}</legend>
<form action="" method="post">
<div class="userName">
<div class="fl"><div class="member_{$logged_info->member_srl}"><strong>{$logged_info->nick_name}</strong></div></div>
<div class="fr"><a href="{getUrl('act','dispMemberLogout')}"><img src="./images/{$colorset}/buttonLogout.gif" alt="{$lang->cmd_logout}" title="{$lang->cmd_logout}" width="47" height="18" /></a></div>
</div>
{@ $oPointModel = &getModel('point'); $point = $oPointModel->getPoint($logged_info->member_srl); $oModuleModel = &getModel('module'); $config = $oModuleModel->getModuleConfig('point'); $level = $oPointModel->getLevel($point, $config->level_step); }
{@ $m_args->receiver_srl = $logged_info->member_srl; $m_output = executeQuery('widgets.login_info.getUnreadMessages', $m_args); }
<div class="levelpoint">
<div style="margin:6px; text-align:left">
Lv : <b>{$level}</b> Nio: <b>{number_format($point)}</b>
<!--@if($logged_info->is_admin=="Y")-->
<a href="{getUrl('+ '','module','admin')}" target="_blank">[{$lang->cmd_management}]</a>
<!--@end-->
<br />미확인 쪽지 : <b>{$m_output->data->count}</b>
</div>
<div style="margin:10px 6px; font-weight:bold; color:#6699FF; text-align:left; letter-spacing:-1px">
<!--@foreach($logged_info->group_list as $key => $val)-->
<span>{Context::getLang($val)}</span>
<!--@end-->
</div>
</div>
<ul class="userMenu">
<!--@foreach($logged_info->menu_list as $key => $val)-->
<li><a href="{getUrl('act',$key,'member_srl'+ ','')}" title="{Context::getLang($val)}">{str_replace(" ","", Context::getLang($val))}</a></li>
<!--@end-->
</ul>
</form>
</fieldset>
------------------------------------------- -
독도2005
2011.08.05 13:33
그래도 여전히 안되요.. ㅠㅠ -
무얼까
2011.08.05 13:48
-
바람의매
2011.07.24 14:08
위젯으로 따로 만들면 좋을거 같네요 -
무얼까
2011.07.24 17:00
음. 이미 있는 위젯에 코드 몇 줄 추가한 거라 굳이 위젯을 따로 만들 필요는 없을 것 같아요.;; 그리고, 위젯 만들려면 머리 아파요. ^^; -
웹 엔진
2011.08.05 20:54
아주 잘 되네요.
↑독도 2005 님 따라하기?.. ㅋㅋ -
찐빵
2011.08.07 23:48
아주 잘되네요~~ 감사합니다!! -
카이네드
2011.09.06 21:48
기본 로그인 위젯(login_info) 쓰는 분들은
widgets/login_info 위치에 queries 폴더와 파일을 넣어주시고
login_info.html 에
{@ $m_args->receiver_srl = $logged_info->member_srl; $m_output = executeQuery('widgets.login_info.getUnreadMessages', $m_args); }
<!--@foreach($logged_info->menu_list as $key => $val)-->
<li><a href="{getUrl('act',$key,'member_srl','')}" title="{Context::getLang($val)}">{Context::getLang($val)}</a>
<!--@if($key == 'dispCommunicationMessages')-->
<font color="#ff0000">[{$m_output->data->count}]</font>
<!--@end--> </li>
<!--@end--> 이렇게 넣어주시면 되겠습니다. -
sound4u
2011.09.29 01:24
잘 작동하네요. 좋은 팁 감사합니다.
더블어 아주 간단한 추가 팁입니다. 만약에 쪽지를 모두읽어서 쪽지수가 0 일경우 0 이라는 숫자를 보이지 않게 하려면
<font color="#ff0000">[{$m_output->data->count}]</font> 이 라인을
<!--@if($m_output->data->count != 0)-->
<font color="#ff0000">[{$m_output->data->count}</div>]</font>
<!--@end-->라고 바꿔주시면 쪽지수가 0개 이상일 경우에만 나타납니다.
-
CMD
2011.09.29 06:28
좋은 팁 감사드립니다^^
-
sound4u
2011.09.29 06:30
저도 감사합니다. 좋은 댓글은 항상 사람을 즐겁게 하지요. ^^
-
한마음^^
2012.01.22 09:47
이 팁이 새로 바뀐 1.5 버전에도 적용이 되나요???
xe_gobalTwo 로그인 폼으로 아무리 해도 안되네요....T.T누가 도와주실 수 있는 분 계신가요~~~~
-
자야2
2012.02.08 12:16
방금 해봤습니다.새로운 버전...잘 됩니다.
-
자야2
2012.02.08 12:16
1.5.1.6버전으로 업데이트 한뒤 적용해보았습니다.
너무너무 잘됩니다.
다른 스킨 쓰고 있구요~경로만 잘 지정하면 아주 잘되는군요.
오전내내 고민하던 부분이었는데..말끔히 해결되었어요.감사합니다.
-
송동우
2012.02.08 12:25
기본 위젯에서 사용법
-
flowerrain
2012.02.09 10:35
필요했던 팁인데...감사합니다. 특히 위에 SOUND4 님의 팁도 감사드립니다.
근데 소스에 오타가 있는 듯...
data->count != 0)--">!--@if($m_output->data->count != 0)--
<font color="#ff0000">[{$m_output->data->count}</div>]</font>
<!--@end-->
여기에서 </div>를 빼주셔야 될 듯... 좋은 팁들 모든 분들께 감사드립니다. -
KTK
2012.07.19 15:50
이거 전체 메시지는 어떻게해야 나오나요.. 지금은 읽지 않은 메시지만 출력 되는데..
-
seongjoon.kwon
2012.07.24 12:37
테스트를 해본건 아니라 정확한 답변을 드리기는 힘들 것 같지만,
getUnreadMessages.xml에서 밑에서 3번째 줄인 column="readed"가 포함된 줄을 삭제하면 전체 메시지 수가 출력될 듯 싶군요.
해당 라인에 default만 삭제해도 될 것 같기는 한데 정확하지는 않습니다;;
제목 | 글쓴이 | 날짜 |
---|---|---|
nginx rewrite 팁 | 병든natura | 2012.02.21 |
우분투 10.04 LTS, nginx+php-fastcgi+mysql 설치하기 [1] | fsfsdas | 2011.02.20 |
Apache 2 prefork 와 worker 차이 [3] | 데브위트™ | 2012.06.26 |
확장변수 숫자(화폐) 콤마 표시하기 (sketchbook 스킨) | 라싸 | 2012.08.12 |
일반 페이지(ARTICLE) 등에서 이미지 리사이징 제거. [1] | 무얼까 | 2012.08.12 |
추천, 신고 제한 해제 (관리자만 v1.5.2.2) [4] | mugenk | 2012.04.09 |
'신고 수' 노출 함수 및 신고시 게시글 이동팁 [11] | 인터니즈™ | 2012.07.03 |
로봇에 의하여 무한 회원가입이 발생할 때 제가 처리하는 방법 [3] | 별님왕자 | 2012.02.27 |
스마트폰이 없는뒤~!! 모바일페이지를 봐야 할경우 [15] | 토깽이2 | 2010.07.02 |
제로보드XE 1.4 -> 1.5 초간단 업그레이드 [10] | 행복돌이 | 2012.05.15 |
페이지 타입 바꾸는 방법 (문서, 위젯, 외부페이지) [5] | 빛의바다 | 2012.07.31 |
소셜로그인 이메일 입력시 SSL 사용 | 패시브 | 2012.07.27 |
게시판 메뉴에 새글 알림 표시 띄우기 [13] | 보거스내친구 | 2009.06.21 |
JwPlayer.swf 스킨 변경하기 [12] | 귀여운유니 | 2012.02.20 |
중국어(zh-CN) 포함한 다국어시 페이지모듈 버그 해결법 [1] | sejin7940 | 2012.07.26 |
virtualhost 사용에 관한 잡담 [3] | 인터니즈™ | 2012.06.15 |
로그인 정보 폼에 읽지 않은 쪽지 개수 보이기. [21] | 무얼까 | 2011.07.23 |
작성 글 보기에서 특정 모듈의 글 안나타나게 하기 | SCAC | 2012.07.21 |
1.5.1 최근 글 위젯에서 특수문자가 나가는 현상 [7] | Crom | 2012.02.12 |
관리자에서 그룹검색을 이용한 회원목록 제대로 안 보일때.. [2] | sejin7940 | 2012.06.01 |