텍스트큐브 댓글, 트랙백을 더 깔끔하게
텍스트큐브 댓글
텍스트큐브는 최근에 올라온 댓글과 트랙백을 사이드바에 표시해 주는 기능을 가지고 있다. 출력할 글의 길이는 모두 텍스트큐브의 '스킨 상세 설정'에서 설정할 수 있다. 다만 자르는 문자의 수는 실제 출력되는 문자의 수와는 다소 차이가 있다. 그 이유는 텍스트큐브 기본 문자 집합이 UTF-8이고 UTF-8에서는 문자를 한 바이트가 아니라 두 바이트 이상으로 표시하기 때문이다. 이렇다 보니 스킨 설정에서 댓글의 길이와 트랙백의 길이를 설정, 댓글과 트랙백이 한 줄 또는 두줄로 출력될 수 있도록 만들어도 예상을 벗어나 배치가 어그러지는 때가 종종 있다. 이 문제는 다음 두 가지 상황에서 발생한다.
목차
텍스트큐브 댓글
텍스트큐브는 최근에 올라온 댓글과 트랙백을 사이드바에 표시해 주는 기능을 가지고 있다. 출력할 글의 길이는 모두 텍스트큐브의 '스킨 상세 설정'에서 설정할 수 있다. 다만 자르는 문자의 수는 실제 출력되는 문자의 수와는 다소 차이가 있다. 그 이유는 텍스트큐브의 기본 문자 집합이 UTF-8이고 UTF-8에서는 문자를 한 바이트가 아니라 두 바이트 이상으로 표시하기 때문이다.
이렇다 보니 스킨 설정에서 댓글의 길이와 트랙백의 길이를 설정, 댓글과 트랙백이 한 줄 또는 두줄로 출력될 수 있도록 만들어도 예상을 벗어나 배치가 어그러지는 때가 종종 있다. 이 문제는 다음 두 가지 상황에서 발생한다.
- 글이나 이름에 영어가 많이 포함된 경우
한글과 영어는 내부적으로 처리하는 바이트 수가 다르다. 따라서 스킨 설정에서 30자로 제한하면 한글은 고작 '10자' 정도 출력된다. 반면에 똑 같이 설정해도 영어로 되어 있으면 '15자' 정도가 출력된다. 따라서 한글과 영어는 글자를 자를 때 서로 다른 기준으로 잘라야 한다. 그러나 '텍스트큐브'는 한글과 영어를 구분하지 않고 자르기 때문에 한글인 경우에는 공간이 널널해도 영어가 포함되어 있으면 다음 행으로 넘어 간다. - 댓글을 쓰는 사람의 별명 또는 블로그 이름이 긴 경우
최근글은 제목과 달린 댓글의 수만 출력되기 때문에 대부분 설정한 대로 동작한다. 그러나 댓글 목록과 트랙백 목록에는 글 내용(글 제목), 별명(블로그 이름), 날짜가 함께 출력된다. 따라서 댓글을 쓰는 사람이 "별명을 길게" 적거나 블로그 "이름이 긴" 경우에는 또 예상치않게 배치가 어긋난다. 글쓴 사람의 별명이나 블로그의 이름도 특정한 길이로 자르면 좋을 텐데 별명이나 이름은 자르지 않는다
실제 사례
①은 별명을 아주 길게 쓴 경우이다. 보통 블로거는 이런 별명을 사용하지 않는다. 그러나 익명 사용자 중에는 별명을 제목으로 생각하고 별명을 아주 길게 쓰는 때가 종종 있다. 이 경우 ①처럼 배치가 깨진다. ②는 이름에 영어를 사용한 경우다. 한글과 영어는 내부적으로 처리하는 바이트 수가 다르기 때문에 똑 같은 기준으로 자르면 영어는 잘리지 않고 표시된다. ③과 ④는 블로그의 이름이 긴 경우다. 물론 예에 나온 제목은 상당히 짧은 편이다. '♥양선생Blog♥희망한국~이명박탄핵 쥐박이 제거★'처럼 긴 이름을 사용하는 경우도 종종 있다.
패치하기
따라서 스킨을 1단으로 바꾸면서 배치가 어긋나는 것이 보기에 좋지 않아서 이번 기회에 패치했다. 'library/view/view.php' 파일만 패치하면 된다. 패치할 함수는 'getRecentEntriesView'(최근글 목록), 'getRecentCommentsView'(댓글 목록), 'getRecentTrackbacksView'(트랙백 목록)
패치한 결과
왼쪽이 패치전, 오른쪽이 패치후이다. 그림에서 알 수 있듯이 이렇게 패치하면 글에 영어가 많이 포함되도 설정된 값 이하로 자르기 때문에 한글과 비슷한 길이로 잘린다는 것을 알 수 있다.
최근글에는 별명이 없기 때문에 'getRecentCommentsView' 함수와 'getRecentTrackbacksView' 함수만 패치하면 된다.
getRecentCommentsView
함수: 패치하는 방법은 전과 같다.//변경전 1023: dress('rctrp_rep_name', htmlspecialchars(UTF8::lessenAsEm($comment['name'], $skinSetting['recentCommentLength'])), $view); //변경전 1023: $trimLen=checkHangul($trackback['site']) ? $skinSetting['recentCommentLength'] : $skinSetting['recentCommentLength']/3; 1024: dress('rctrp_rep_name', htmlspecialchars(UTF8::lessenAsEm($comment['name'], $trimLen+1)), $view);
getRecentTrackbacksView
함수': 패치하는 방법은 전과 같다.//변경전 1043: dress('rcttb_rep_name', htmlspecialchars(UTF8::lessenAsEm($trackback['site'], $skinSetting['recentTrackbackLength'])), $view); //변경후 1043: $trimLen=checkHangul($trackback['site']) ? $skinSetting['recentTrackbackLength']/4 : $skinSetting['recentTrackbackLength']/3; 1044: dress('rcttb_rep_name', htmlspecialchars(UTF8::lessenAsEm($trackback['site'], $trimLen+1)), $view);
두 가지 패치를 하고 skin.html을 조금 손 보면 다음 그림처럼 최근글 목록, 댓글 목록, 트랙백 목록을 깨끗하게 정리할 수 있다.
관련 글타래- 텍스트큐브 1.7.7의 유용한 패치 텍스트큐브 1.7.7은 베타판 부터 사용했기 때문에 정식판이 나... 새창
- 믹시업과 블로거뉴스 대통합 플러그인 나는 티스토리 사용자가 아니기 때문에 티스토리용은 티스토리... 새창
- 크롬 사용자가 텍스트큐브를 판올림해야 하는 이유는? 텍스트큐브에 대한 이전 글들에서 알 수 있듯이 텍스... 새창
- 티스토리 알리미 문제 해결 및 패치 텍스트큐브가 가진 장점 중 하나는 바로 다른 블로그에 댓글을... 새창
- 희한한 티스토리 트랙백 문제 해결 및 패치 얼마 전에 올린 글, 희한한 티스토리의 트랙백 문제문제에... 새창