물어보기XpressEngine
조회 수 92 추천 수 0 댓글 14
Extra Form

 이런저런 이유로 xe알림센터는 사용하지않고 오직 커뮤니케이션모듈에서 쪽지기능을 사용하고있습니다. 

문제는 새쪽지가 도착하면 왼쪽상단에 잠시동안만 나타났다 사라지는 알림창을 놓치기 십상인데요,

혹시 알림창 노출시간을 연장하거나 혹은 수동으로 닫도록하거나,

쪽지알림음과 새쪽지를 알릴수 있는 효과적인 방법은 어떤게 있을까요?


  • profile
    웹지기 2018.06.18 17:55:31
    https://xetown.com/rxe_point/997962

    쪽지를 읽는게 크게 어려운 일이 아니기 때문에 이렇게 적극적으로 알려줘도 큰 문제는 안될 것 같습니다.
    대부분 인터넷 접근성이 떨어지는 취약계층들이 말씀하신 부분들 때문에 쪽지 자체를 인지하지 못해 못 읽는 경우가 대부분 일 것 이라 생각되어집니니다.

    이렇게 쪽지라는 존재를 알리는 방식으로 한다면 처음에 저 안내 때문에 쪽지를 찾아 읽고 후에는 쉽게 스스로 찾아서 읽게 될 것이라 생각 됩니다.

    물론 적용 대상 페이지 등은 운영자가 조절해서 적용하면 될 것 같구요.
  • forest 질문자 2018.06.18 18:04:05
    좋은 애드온이네요. 감사합니다.
    하지만 말씀처럼 쪽지기능 등에 미숙한 회원들이 많고 읽어도그만 안읽어도그만인 쪽지들도 있는터라 이 애드온을 사용하면 또 항의가 들어올것같은 기분이듭니다. ^^
    제가원하는 제일 좋은방법은 예전 제로보드시절처럼(그쪽에서 옮겨온분들이라서) 편지봉투가 깜박이는정도로만 알려주면 될거같은데 xe에 나와있는 팁을 적용해봐도 잘 안되어서 그냥 던져둔 상태거든요.
    평소 웹지기님의 좋은팁들도 감사합니다 ^^
  • 웹지기 2018.06.18 18:10:29
    @forest

    본인이 쪽지를 읽지 않았는데 항의라니요 ㅋ 글쎄요....
    그렇게 항의 하는 사람들은 어차피 쪽지 읽어달라고 번쩍 번쩍 하거나 음성으로 "쪽지가 도착했으니 빨리 읽어주세요" 라고 해도 싫어합니다. ㅋ

    저는 그런 회원은 거르고 가는 운영정책이라 개의치는 않고 있습니다.(그런데 그런 회원은 없었습니다.)
    물론 저와 다른 생각의 운영자분들은 사용하기 쉽지 않으시겠죠.

    저희 사이트는 이미 쪽지가 분명히 도착해 있음을 충분히 알수 있을 정도로 해 놓긴 했습니다만 지금 고민하시는 그런 상황은 해결되지 않았어요.

  • forest 질문자 2018.06.18 18:23:11
    @웹지기
    달랑한장 공지팝업뜨는것도 광고라며 기분나빠하는사람도 있고 온갖회원들이 다 있습니다. 상식으로 이해하기 힘들지만 그런분들까지 안고가야하는 상황이라 최대한 맞춰주려하고 있답니다 ㅜ
    어쩌면 윕지기님의 애드온 코드안에 답이 있을수도 있겠네요.
    내일쯤 분석 들어가봐야겠습니다 ^^
  • 웹지기 2018.06.18 18:29:10
    @forest
    네 코드 안에 읽지 않은 쪽지를 확인해서 처리 하는 부분이 있습니다. 그것을 이용하시고 쪽지 왔다고 깜빡이고 음성파일 재생하게 하시면 됩니다.
    음성재생은 모바일에서는 안되구요.

    하지만 이것 효과는 거의 없다고 보신게 좋습니다.
  • 웹지기 2018.06.18 18:39:09
    @forest
    레이아웃에

    {@ $args = new stdClass(); $args->receiver_srl = $logged_info->member_srl; $output = executeQuery('communication.getNewMessage', $args); }

    이렇게 집어 넣어서 읽지 않은 쪽지의 갯수를 불러옵니다.

    <!--@if($output->page_navigation->total_count>0)-->
    쪽지가 왔다고 알려주는 문구를 깜빡이게 하거나
    쪽지 도착 안내 음성 파일을 재생
    <!--@end-->

    그런데 이것도 한계가 있는게 새 쪽지가 도착했을때 일정시간만 하고 싶다면 이건 안됩니다.

    읽지 않은 쪽지가 있다면 무조건 계속 동작하게 됩니다.

    새로운 쪽지가 도착했을때 잠깐동안만 무언가 하시려면 코어에서 작동하는 방식을 아마 찾아보셔야 할 것 같습니다.
  • forest 질문자 2018.06.18 18:44:15
    @웹지기
    친절하게 코드까지 직접 올려주셨네요.
    내일 당장 적용해봐야겠습니다.
    감사합니다 ^^
  • forest 질문자 2018.06.18 19:55:48
    @웹지기

    웹지기님의 이 코드를 레이아웃에 넣고 레이아웃에 if 문을 넣었더니 잘됩니다.
    그리고 login 위젯에 아래의 코드를 넣어봤습니다.

    <!--쪽지알림 -->
    <!--@if($output->page_navigation->total_count>0)-->
    <a href="{getUrl('act','dispMemberMessages','member_srl',$logged_info->member_srl)}"><img src="/_data/img/i_memo_on.gif"></a>
    <!--@else-->
    <a href="{getUrl('act','dispMemberMessages','member_srl',$logged_info->member_srl)}"><img src="/_data/img/i_memo_off.gif"></a>
    <!--@end-->
    <!--쪽지코드 -->

    그런데 먹지를 않는거 같습니다.
    레이아웃에서만 먹는걸까요?

     

    그리고 디버깅(?) 차원에서 login_info 파일에  {$output->page_navigation->total_count} 이렇게 출력시켜보았더니 쪽지의 갯수와는 전혀다른 숫자가 나옵니다.

     

  • 웹지기 2018.06.18 20:01:04
    @forest
    로그인 위젯이라면 스킨에 넣으셨다는거죠?
    로그인 후 보여주는 파일에 넣으셨다면 레이아웃과 다를 이유가 없을 것 같습니다.
    저희도 PC에서는 로그인 위젯 스킨에 넣어서 사용합니다.

    login_info.html 이었던거 같은데 기억이....
  • 웹지기 2018.06.18 20:02:41
    @forest
    그럼 혹시 다른 정보 출력을 위해 $output을 중복해서 사용중인지 살펴보시고 다른게 사용중이라면 다른변수로 바꿔보세요.

    $_output = executeQuery('communication.getNewMessage', $args);

    이런식으로요.

    밑에 조건에도 같이요.
  • forest 질문자 2018.06.18 20:04:23
    @forest
    찾앗습니다 !!!!
    $output 이란 변수명의 충돌이었던거같습니다.
    $output3 으로 변경하여 적용하니 잘 됩니다.
    감사합니다!!!
  • profile

    알림을 보게 만드는 방법 중에는 꽤나 단순한 방법도 있습니다. 바로 알림 배지를 달아주는 겁니다.

     

    B0185_(1).png

     

    SNS는 알림이 도착하면 휴대폰 아이콘으로 저렇게 몇개의 알림을 읽지 않았는지 표시해줍니다. 매우 단순하고 사용에 불편을 초례하는 것도 아니지만 저 작은 아이콘이 굉장히 거슬리죠. 저 빨간 동그라미가 사용자의 이목을 단숨에 사로잡고 알림을 읽게 만드는 겁니다.

     

     

    9204dc99a700aecbd1c514f05414d0c3.png


    아래의 코드는 제 레이아웃에서 사용 중인 코드인데요. 읽지 않은 쪽지를 불러와줍니다.

    쪽지 목록을 출력하거나 조건문을 만들어서 읽지 않은 쪽지가 있으면 아이콘이나 팝업 등을 출력하게 만들 수도 있습니다.

     

    {@
    $logged_info = Context::get('logged_info');
    $args = new stdClass();
    $args->receiver_srl = $logged_info->member_srl;
    $args->message_type = 'R';
    $args->readed = 'N';
    $args->list_count = 5;

    $messageList = executeQuery('communication.getNewMessage', $args)->data;
    }

    <!--@if(count($messageList) >= 1)-->
    <span class="eq badge badge-primary count">
    {count($messageList)}
    </span>
    <!--@end-->

     

  • forest 질문자 2018.06.18 19:54:09
    이런방식으로도 가능하군요.
    이것도 적용해 봐야겠습니다. 감사합니다 ^^
  • 엔데벨 2018.06.19 06:56:38
    @forest
    이 방법이 새로운 쪽지의 안내방식으로는 제일 직관적이라고 생각합니다. 웹지기님처럼 강제적으로 읽게 해야 하는 상황이 아니라면, 이 방식이 더 낫지 않을까 싶네요.
    한번씩 보면 999(또는 99)로 만들고 싶어 하시는 분들이 있어서 저 배지를 보고도 무시하는 분들이 깄기는 합니다만;;;

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