라이믹스와 XE에서는 알림센터로 회원이 각종 알림을 받을 수 있습니다. 그 중 닉네임 앞에 골뱅이를 붙여서 적으면 해당 회원에게 알림이 가는 멘션 기능을 사용할 수 있습니다. 그런데 이 기능을 처음 보는 회원은 무슨 기능인지 잘 모르기도 하고 해서 그 부분을 조금 스타일링을 해주거나 해서 눈에 띄게 해주고 클릭시 원하는 것을 보여주거나 하면 좋을 것 같아 구현했습니다.
@주인장님에게 호출을 할 경우
단, 조건이 조금 있습니다.
알림센터에서 단어의 끝이 님으로 끝나는 경우 닉네임으로 취급하지 않도록 알림센터에서 설정을 하고 회원가입을 받을때 닉네임의 끝자리는 님을 사용하지 않는 것으로 하고 구현하는 것을 전제로 합니다. 이 팁에는 님은 닉네임으로 포함하지 않고 존칭으로 간주합니다.
본문과 댓글 모두 다 적용할 수 있지만 본문 부분만 설명해 보겠습니다.
본문을 출력하는 파일에 해당 부분을 처리할 수 있도록 수정해 주는 방법입니다. _read.html 혹은 read.html 로 많이 사용합니다.
파일을 열어서 본문의 내용을 출력하는 부분을 찾습니다.
{$oDocument->getContent(false)}
보통 위와 같이 되어 있습니다. 위와 같이 되어 있는 것을 기준으로 합니다.
위 부분을 찾아서 아래와 같이 바꿔 줍니다.
1.멘션이 사용되었을때 해당 멘션 부분의 링크를 따로 연결하지 않고 클릭시 회원메뉴 팝업 레이어가 뜨게 하기
{@ $content_ = $oDocument->getContent(false); $content = html_entity_decode(strip_tags($oDocument->getContent(false))); preg_match_all('/(?:^|\s)@([^\pC\pM\pP\pS\pZ]+)/u', $content, $matches); $mentions = array_unique($matches[1]); } <block loop="$mentions=>$key,$val"> {@ if (($pos = strpos($val, 님)) !== false && $pos > 0):$mention = substr($val, 0, $pos); else:$mention = $val; endif; $mention_result[] = $mention; } </block> {@ $mention_result = array_unique($mention_result);} <block loop="$mention_result=>$key,$val"> {@ $oMemberModel = &getModel('member'); $member_srl = $oMemberModel->getMemberSrlByNickName($val); } {@ $content_ = preg_replace("/(@$val)([$\s<&,님])/u", "<a class='nick member_".$member_srl."' style='color:#07F; font-weight:500; display:inline-block; text-decoration:none; cursor: pointer;'>$1</a>$2", $content_); } </block> {$content_}
2.멘션이 사용된 부분에 섬띵모듈의 회원활동내역의 링크를 걸어주기
{@ $content_ = $oDocument->getContent(false); $content = html_entity_decode(strip_tags($oDocument->getContent(false))); preg_match_all('/(?:^|\s)@([^\pC\pM\pP\pS\pZ]+)/u', $content, $matches); $mentions = array_unique($matches[1]); } <block loop="$mentions=>$key,$val"> {@ if (($pos = strpos($val, 님)) !== false && $pos > 0):$mention = substr($val, 0, $pos); else:$mention = $val; endif; $mention_result[] = $mention; } </block> {@ $mention_result = array_unique($mention_result);} <block loop="$mention_result=>$key,$val"> {@ $content_ = preg_replace("/(@$val)([$\s<&,님])/u", "<a href='/@".$val."' style='color:#07F; font-weight:500; display:inline-block; text-decoration:none; cursor: pointer;'>$1</a>$2", $content_); } </block> {$content_}
여기 라이믹스 팁에는 1번의 케이스로 적용해 보았습니다.
로그인 한 회원이 클릭시에는 회원메뉴 전체가 뜹니다.
@주인장님 이라고 본문에 적었습니다.
그런데 닉네임에 특수문자가 들어간경우에는 멘션호출이 안되는건지 모르겠네요.
호출은 됐는데 멘션이 꾸며지지 않는건지..
예를 들어서 닉네임이
.A 거나
안녕-하세요
인경우에는 스타일 적용이 되지않네요.