캡처.PNG

 

 

최근 댓글 위젯에 이렇게 보기 안 좋게 표시되는데

 

"스티커 댓글입니다."와 같이 표시되게 하려면 어떻게 해야 할까요?

  • profile
    strpos($oComment->getContent(글자수)
    이런식으로 댓글 내용을 앞에 정확한 글자수 까지만 불러와 변수에 저장해 놓고

    조건문으로 변수가 {@stiker 라면 스티커 댓글 입니다. 라고 출력 하면 되지 않을까요?

    지난번 글자 없는 댓글 때문에 글자수 변수에 저장한거 아랫줄에 내용을 새로운 변수에 저장하고 조건을 수정해서 처음 조건은 글자가 없다면 으로 유지하고 두번째 조건으로 내용이 스티커라면 조건 검사하고 그리고 나머지는 원래 댓글 츨력....

    모바일이라 방식만...
  • profile ?
    무슨 말씀인지 알듯말듯 한데.. 어렵네요

    전에 조건문은 보니까

    <!--@if ($length > 0) -->{$item->getTitle($widget_info->subject_cut_size)}<!--@else-->{$lang->no_text_comment}<!--@end-->

    이런 식으로 되어 있더군요. 이렇게 되면 일단 저 스티커댓글처럼 {@stiker 같은 글자가 있는 경우 $length > 0 이 되어서 {$item->getTitle($widget_info->subject_cut_size)} 이쪽으로 넘어가게 되는데...

    이 부분에 넘어가기 전에 추가적으로 "{@stiker 라는 글자가 있나 확인해라" 라는 구문을 넣으라는 말씀이시죠?
  • ? profile
    strpos 은 문자열을 있는지 확인할때 스는거군요. 요건 쓰면 안되고 댓글 앞문장을 변수에 저장해 애 할 거 같습니다. strpos을 쓰면 카운트 를 써야 하는 가 같구요.
  • ? profile
    strpos($oDocument->getContent(100), '<!--DeletedDocument-->')

    이게 삭제된 게시물 확인할때 썼던 건데요. 요걸 사용해도 될 거 같습니다.
    변수 저장없이 바로 조건으로 쓸수 있을거 같아요.

    <!--@if (strpos($item->getTitle($widget_info->subject_cut_size), '{@stiker')) --> 스티커 댓글입니다. <!--@else if ($length > 0) -->{$item->getTitle($widget_info->subject_cut_size)}<!--@else-->{$lang->no_text_comment}<!--@end-->

    문법이 맞나 모르겠네요.
  • profile ?
    아닙니다. 삽질 좀 해보고 나니까 strpos 로도 구현이 가능하긴 하네요.
  • profile ?
    {@ $length = mb_strlen(trim(preg_replace('/\s+/', ' ', strip_tags($item->getTitle()))), 'UTF-8'); $sticker = 'sticker'; $pos = strpos($item->getTitle(), $sticker);}
    <a href="{$item->getLink()}" target="_blank"|cond="$widget_info->new_window"><!--@if ($pos === 2) -->스티커 댓글입니다.<!--@elseif ($length > 0) -->{$item->getTitle($widget_info->subject_cut_size)}<!--@else-->{$lang->no_text_comment}<!--@end--></a>

     

     

    일단 기존의 조건문을 이걸로 바꾸고 나니까 작동 자체는 되네요.

     

    그런데 문제가.. "스티커 댓글입니다" 이 글자가 그냥 노출돼서 그런지, 하이퍼링크의 텍스트 데코레이션 설정 등이 전부 깨져버리네요. 이것만 처리하면 될 것 같은데..

     

    수정: 이거랑은 관련이 없네요. 뭐때문인지..

  • ?
    아놔 ㅋㅋㅋㅋㅋㅋㅋㅋ 이건뭐 바보도 아니고

    실수로 class="title" 이걸 빼먹어서 그렇게 된 거였네요.

    문서 상단에

    <!--@if($lang_type=='ko')-->
    {@ $lang->sticker = '스티커 댓글입니다.';}
    <!--@else-->
    {@ $lang->sticker = 'Sticker';}

    이런 식으로 추가해 주고,

    {@ $length = mb_strlen(trim(preg_replace('/\s+/', ' ', strip_tags($item->getTitle()))), 'UTF-8'); $sticker = 'sticker'; $pos = strpos($item->getTitle(), $sticker);}
    <a href="{$item->getLink()}" class="title" target="_blank"|cond="$widget_info->new_window"><!--@if ($pos === 2) -->{$lang->sticker}<!--@elseif ($length > 0) -->{$item->getTitle($widget_info->subject_cut_size)}<!--@else-->{$lang->no_text_comment}<!--@end--></a>

    이런 식으로 해 주니까 정상적으로 해결되네요. (스티커 댓글은 "스티커 댓글입니다.", 일반 댓글은 일반 내용, 글자도 없고 스티커도 없고 이미지만 있는 댓글은 "글자가 없는 댓글입니다."라고 출력)
  • ?

    $content = preg_replace('/{@sticker:[\d]+\|[\d]+}/i', '<span style="color:#4faab2;">스티커</span>', $content);

  • ? ?
    정말 감사합니다만 아무리 살펴봐도 어디에 넣어야 하는지 모르겠네요 ㅠㅠ
  • ? ?
    $content는 임의 변수이고 위 정규식 참고하시면 될거에요
  • ? ?
    그렇군요. 확실히 preg_replace이 더 나은 방법 같기는 한데.. 이미 위 웹지기님 댓글 참고해서 strpos를 이용해서 해결했네요. 여튼 감사합니다.
  • ?
    다시 보니 굉장히 지저분하게 해놨네요.

    {@ $length = mb_strlen(trim(preg_replace('/\s+/', ' ', strip_tags($item->getTitle()))), 'UTF-8');}
    <a href="{$item->getLink()}" class="title" target="_blank"|cond="$widget_info->new_window"><!--@if (strpos($item->getTitle(), 'sticker') === 2) -->{$lang->sticker}<!--@elseif ($length > 0) -->{$item->getTitle($widget_info->subject_cut_size)}<!--@else-->{$lang->no_text_comment}<!--@end--></a>

    그냥 이렇게 하는게 낫겠네요.