KakaoTalk_20240303_133909613.png

이러한 형태로 사이트 타이틀 앞에 (5) 이런식으로 받은 알림 개수로 보여주기 위해서

 

    {@
        $oNcenterliteModel = &getModel('ncenterlite');
        $ncenterliteoutput = $oNcenterliteModel->getMyNotifyList();
        Context::set('total_count', $ncenterliteoutput->page_navigation->total_count);
    }
<p id="ncenterliteoutput" style="display: none">{$total_count}</p>
<script>
    var ncenterliteoutput = $('#ncenterliteoutput').text()
    if (ncenterliteoutput > 0) {
        var newtitle = "(" + ncenterliteoutput + ") " + document.title
        document.title  = newtitle
    }
</script>

 

현재 이런 형태로 레이아웃 단에서 처리하고 있는데 다르게 처리하는게 나을까요?

  • profile

    템플릿에서는 Context::set 하실 필요 없이
    $total_count = $ncenterliteoutput->page_navigation->total_count;
    이렇게 바로 하시면 되긴 합니다. ( html 파일에서 Context::set 사용 하지마세요)

    그런데 $total_count 이라는 변수명을 아주 많이 사용할 수 있는 것이니 중복방지를 위한
    $notify_count 이라고 변수명을 변경해주시는것이 좋을 것 같아요.

    그 외 나머지는 건드리실 필요는 없어보이네요.

    어떻게 하던 모로 가면 되고요.. 알림센터에서 이미 카운트를 잘 해주고 있는 사항이라면 알림센터 위젯을 한번 활용해보시는 것을 추천드립니다.

    로그인 위젯 안에 알림센터 기능도 함께 포함되어있으니 로그인 되어있는 영역만 사용하면 다른거에영향없이 로그인시 로그인 위젯을 출력하도록 하면 알아서 갯수를 출력해주는 기능이 위젯으로 해결이 가능합니다. (로그인 폼부분은 HTML파일을 비워두시고 login_info부분만 영역에 맞춰서 HTML코딩하시면 됩니다.)

  • profile ?
    앗 감사합니다. Context::set 부분은 변경해야겠네요.

    알림센터 위젯 부분도 한번 알아보겠습니다!

    혹시 변수를 가져올 때
    <p id="ncenterliteoutput" style="display: none">{$total_count}</p>
    <script>
    var ncenterliteoutput = $('#ncenterliteoutput').text()
    이런식으로 가져오는게 아니라
    script 단에서 정의된 변수를 다이렉트로 가져올 수 있는 방법이 있을까요?
  • ? profile
    <script> 가 템플릿 파일 안이라면
    <script>
    var ncenterliteoutput = "{$notify_count}"
  • profile ?
    앗 감사합니다!