알림센터의 멘션(호출) 부분을 스타일링 해주고 링크를 넣어주기

by 꿀팁관리소장 posted Jul 25, 2020
Extra Form
추천지수 6

라이믹스와 XE에서는 알림센터로 회원이 각종 알림을 받을 수 있습니다. 그 중 닉네임 앞에 골뱅이를 붙여서 적으면 해당 회원에게 알림이 가는 멘션 기능을 사용할 수 있습니다. 그런데 이 기능을 처음 보는 회원은 무슨 기능인지 잘 모르기도 하고 해서 그 부분을 조금 스타일링을 해주거나 해서 눈에 띄게 해주고 클릭시 원하는 것을 보여주거나 하면 좋을 것 같아 구현했습니다.

 

@주인장님에게 호출을 할 경우 

 

단, 조건이 조금 있습니다. 

알림센터에서 단어의 끝이 님으로 끝나는 경우 닉네임으로 취급하지 않도록 알림센터에서 설정을 하고 회원가입을 받을때 닉네임의 끝자리는 님을 사용하지 않는 것으로 하고 구현하는 것을 전제로 합니다. 이 팁에는 님은 닉네임으로 포함하지 않고 존칭으로 간주합니다.

 

본문과 댓글 모두 다 적용할 수 있지만 본문 부분만 설명해 보겠습니다.

 

본문을 출력하는 파일에 해당 부분을 처리할 수 있도록 수정해 주는 방법입니다. _read.html 혹은 read.html 로 많이 사용합니다.

 

파일을 열어서 본문의 내용을 출력하는 부분을 찾습니다.

 

 

{$oDocument->getContent(false)}

 

보통 위와 같이 되어 있습니다. 위와 같이 되어 있는 것을 기준으로 합니다.

 

위 부분을 찾아서 아래와 같이 바꿔 줍니다.

 

1.멘션이 사용되었을때 해당 멘션 부분의 링크를 따로 연결하지 않고 클릭시 회원메뉴 팝업 레이어가 뜨게 하기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{@
$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.멘션이 사용된 부분에 섬띵모듈의 회원활동내역의 링크를 걸어주기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{@
$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번의 케이스로 적용해 보았습니다.

 

멘션.png

 

 

로그인 한 회원이 클릭시에는 회원메뉴 전체가 뜹니다.

 

@주인장님 이라고 본문에 적었습니다.

Who's 꿀팁관리소장

profile
라이믹스로 커뮤니티 사이트를 운영하는 비개발자 운영자 입니다.
파트너쉽 맺으실 사이트 운영자분 환영합니다.

Articles

1 2 3 4
서버에 요청 중입니다. 잠시만 기다려 주십시오...

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5