| 태터툴즈 클래식 관련글 표시 패치 |
Technology 07/02/06 00:24 ( Translate this page  )
글 주소 : http://ohyung.net/332
본 패치는 혜민아빠님의 태터툴즈 플러그인제공,태그 관련글 사용 ( http://sshong.com/2511803 ) 을 보고 클래식용에 맞게 변환한것입니다.

이 글은 원본 태터툴즈 클래식 OR2를 기준으로 설명합니다.
( 이 글쓰려고 ;;; 다운 받았습니다... 어딜 고쳤는지 고치다가 까먹어서;;; )
( 클래식 패치 많이하셔서 원본과 많이 다르신 분들은 찾기로 찾아서 바꿔주세요 ^^ )

우선 이 패치를 적용하면 아래 갈무리 그림처럼 표시가 됩니다.


원리는 각 글에 쓰인 태그를 찾아서 그 태그가 쓰였던 글을 랜덤하게 5개를 뽑는것입니다.
최대 5개가 표시되며 태그와 관련된 글이 없을때에는 표시가 되지 않습니다. ^^

저작권은 윗집사는 개에게 주었습니다 -.-;

패치 한 모습으로 올립니다. 확인후 적용하세요. ( 추가하거나 바꾼부분은 빨간색으로 표시합니다. )
( '[# #' 식으로 표시된 부분은 붙여주세요 ^^; 아시죠? )

inc_function.php 44번째줄
var $s_tag;
var $s_tag_rep;

var $s_tag_relation; // 태그 관련글

var $s_random_tags;


inc_function 123번째줄
list($sval, $this->s_tag_label) = cut_skintag($sval, "s_tag_label");
list($sval, $this->s_article_rep) = cut_skintag($sval, "s_article_rep");
list($sval, $this->s_tag_relation) = cut_skintag($sval, "s_tag_relation"); // 태그 관련글

list($sval, $this->s_paging_rep) = cut_skintag($sval, "s_paging_rep");


index.php 455번째줄
소스 코드 타입 : php
unset($row_set);
<span style="color:#D41A01">unset($tag_r);</span>

$dt_rp = $skin->s_tag_label;
$sql = "select no, pno, tag, regdate from t3_".$dbid."_tag where pno = '$no' order by no asc";
                        // print $sql;
// print $sql;
$res = mysql_query($sql);
while($row = @mysql_fetch_assoc($res)) { $row_set[] = $row; }
        for($i=0; $i<count($row_set); $i++) {
                $v = $row_set[$i];
                if ($i) $tag_set .= ", ";
                $tag_set .= "lt; a class=\"tag\" rel=\"tag\" href=\"index.php?stag=".urlencode($v[tag])."\">".$v[tag]."</a>";
                <span style="color:#D41A01">$tag_r .= ",'".$v[tag]."'";</span>

        }
        if ($tag_set) {
                $dt_rp = str_replace("", $tag_set, $dt_rp);
                <span style="color:#D41A01">$tag_r = substr( $tag_r, 1);

        } else { $tag_r = "' '";unset($dt_rp); }



index.php 486번째줄 ( 주석부분을 추가해주세요. 색이 안바뀌네 )
소스 코드 타입 : php
        $d2_rp = str_replace("[# #_s_ad_div_##]", $d3, $d2_rp);
        $d2 .= $d2_rp;

                        // 태그로 연관된 글 리스트 모듈
                        unset($tr1);
                  $sql3 = "SELECT A.pno, B.title, B.regdate FROM t3_".$dbid."_tag A, t3_".$dbid." B WHERE A.pno=B.no AND A.pno<>'$no' AND B.is_public = '1' AND A.tag IN ( $tag_r ) GROUP BY pno ORDER BY RAND() LIMIT 0,5";
                        $result3 = @mysql_query($sql3);
                  $total3 = mysql_num_rows($result3);
                        if($total3) {
                                $tr1 ="<div class=\"contentext\"><fieldset class=\"fd\"><legend class=\"le3\"> | 이 글과 태그로 연관된 글 | </legend>\n<div class=\"contentext\">"; }
                        else { $tr1 = ""; }
                        while(list( $pno, $title, $regdate ) = @mysql_fetch_array($result3)) {
                        $tr1_rp = $skin->s_tag_relation;
                        $tr1_rp = str_replace("[# #_tag_relation_##]", "<a href=\"./index.php?pl=".$pno."\">".$title." ( ".$pno."번글 )</a><a href=\"./index.php?pl=".$pno."\" onclick=\"window.open(this.href); return false\"><img src=\"./images/newwin.gif\" alt=\"새창으로띄우기\" /></a>", $tr1_rp);
                        $tr1_rp = str_replace("[ # #_tag_relation_date_## ]", get_timevalue1($regdate), $tr1_rp);
                        $tr1 .= $tr1_rp;
                        }
                        if($total3) {$tr1 .="</div></fieldset></div>";}
                        else { $tr1 .= ""; }
                        $d2 = str_replace("[# #_s_tag_relation_##]", $tr1, $d2);
                        // 태그로 연관된 글 리스트 모듈 끝!
        }
        break;
        }


그뒤 skin.html 화일에서... 원하는 부분에 아래를 추가하세요
< !-- 태그 관련글 표시 -- >
< s_tag_relation >[# #_tag_relation_##] - [# #_tag_relation_date_##]< br />< /s_tag_relation >

이런식으로 패치를 하면 됩니다...

그나저나 이 패치를 쓰실분이 몇이나 되실까;;; -.-;

사족...
관련,관계 : relation.... reation 이라고 적지 마시가 바랍니다;;
이것때문에 한 두시간정도 뻘짓거리...;;;
| 이 포스트에 대한 이용규약 |
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 라이센스 에 따라 이용하실 수 있습니다.
This work is licensed under a Creative Commons Attribution 2.0 Korea LicenseLink in a new window.

| 트랙백(1) & 댓글(10)|
트랙백 주소 :: http://ohyung.net/tb/332
  1. Blue Luna  님이 07/02/06 03:05 에 보낸 트랙백 | 지우기 | 댓글
    글 제목 : 이제부터 포스트의 하단에 관련된 글이 표시됩니다. 
    오형님의 태터툴즈 클래식 관련글 표시 패치를 보고 적용했습니다. 좋은 팁 공개해 주신 오형님께 감사의 말씀을 드립니다. :) 요즘은 태터툴즈 클래식을 사용하시는 분들이 거의 ..
    Ohyung  - Tyburn님의 패치는 카테고리와 댓글수까지 표시해줍니다 ^^ - 07/02/10 16:35
Tyburn  님이 07/02/06 02:31 에 남긴 말 | 고침/지우기 | 댓글

와~ 감사합니다. 저도 적용했어요.

전 글 목록과 함께 해당 포스트의 카테고리와 달린 답글 개수도 함께 표시하도록 수정해서 적용했습니다. 전 이상하게 포스트에 카테고리가 없으면 허전해 보여서요(...)

그런데 글에 오타가 있네요. 포스트에 적어놓은 소스의 치환자가 적용이 되어 버려서 안보이는 듯(...) "[" 를 "& #91;" 으로 바꾸시고, "<" 는 "& lt;" 로 바꿔서 적어보세요. (문자 사이의 공백은 제거하셔야 합니다.) 그러면 포스트 안의 치환자를 인식하는 문제가 사라질 겁니다.

Ohyung  님이 07/02/06 02:43 에 남긴 말 | 고침/지우기

^^; 감사합니다 CODE 로 묶었는데.. [# # <- 이부분에서 먹어버렸네요 ;;;

rp_cnt와 category 필드까지 가지고 오셨군요 ^^;
( 지금보니 label 필드군요 ㅎ )
Tyburn님의 작품이 더 이뻐보이네요 ^^

잘 적용하셨다니 다행입니다...
먹힌부분에서 약간 우왕자왕하시지 않고 잘 적용하신걸 보니... 천재! -.-)b 라고 해드려야 할듯 싶네요 ㅎㅎ

Tyburn  님이 07/02/06 03:04 에 남긴 말 | 고침/지우기

천재라뇨(...) 당치도 않은 말씀을...

그것 보다는 저도 오형님처럼 허구헌날 태터 소스를 보고 뜯어고치는 것이 버릇이 되다 보니 이젠 왠만한 PHP 소스 정도는 간단하게 수정하거나 만들 수 있겠더군요.

사실 전 PHP나 HTML을 체계적으로 배운 적이 한 번도 없답니다(...) 끝없는 삽질(...)을 반복하다 보니 자동으로 익혀지더라고요.

Ohyung  님이 07/02/06 04:58 에 남긴 말 | 고침/지우기

^^ 소스 고치는것보다 글을 많이 써야하는데...
한번 잡으면 놓을수가 없어서 ㅎㅎ

저도 제대로 배운것은 QuickBasic 이랑 C 뿐 -.-;
php랑 html css는 다른사람들 소스보고 고치다보니;;;

Tyburn  님이 07/02/07 18:09 에 남긴 말 | 고침/지우기 | 댓글

오형님, 사용하다 문제가 발생해서 질문을 드립니다.

관련글 표시에서 가끔씩 똑같은 게시물이 여러번 출력되는 경우가 발생하더라고요. 혹시 오형님은 그런 문제를 겪으신 적이 없으신가요?

Ohyung  님이 07/02/07 18:16 에 남긴 말 | 고침/지우기

이게 불러오는 방식이 랜덤이다 보니.. 글이 중복 검색되는 일이 있더라고요;;

연관글을 불러올때 최신글이나 오래된순으로만 불러오면 그런 증상이 없는데, 랜덤이다보니 같은게 중복되는 현상이 있더군요...
같은 글이 있다면 다시 불러오는 방법도 생각해 보긴 하였으나, 무한루프에 빠질 가능성이 있기도 해서요;;;

ORDER BY RAND() 을..
ORDER BY regdate desc ( 혹은 asc) 로 하면 되긴 합니다;;; ( 최신글 혹은 오래된글 순으로 뽑기 )

Tyburn  님이 07/02/07 18:30 에 남긴 말 | 고침/지우기

제가 보기에는 PHP의 rand 함수에는 문제가 없는 것 같습니다. 저도 태터의 여러 부분에 rand 함수를 사용했지만 지금까지 중복되는 일은 없었거든요.

하나의 글에 여러개의 태그가 달려 있으면 각 태그마다 관련된 글들을 모두 모아 섞는 방식이다 보니 그 중에 중복된 글이 하나 둘 나오는 것 같네요.

예를 들어. A게시물에 a, b 태그가 달려 있고, B게시물에도 a, b 태그가 달려 있다면, A게시물에는 B게시물이 관련글로 두번 출력되는 모양입니다.

즉, order by desc로 정렬을 해도 같은 태그가 달린 게시물이 존재하면 게시물이 중복되어 출력되죠.

예전에 이 문제를 해결하는 방법을 본 적이 있었던 것 같습니다만, 잘 기억이 나지 않네요(...) 일단 제 나름대로 머리를 굴려봐야 겠어요.

Ohyung  님이 07/02/07 18:36 에 남긴 말 | 고침/지우기

-.-; 지금 다시 찾고 있습니다.
SELECT distinct 도 아닌가 봅니다 ㅜㅜ
그룹으로 묶어야 하나;;;

Ohyung  님이 07/02/07 18:44 에 남긴 말 | 고침/지우기

찾아본 바로는 GROUP BY pno 을 추가 해야하네요;;;
1.1용 소스를 보니 그걸 빼먹고 있었어요;;;
GROUP BY pno 를 ORDER BY 앞에 넣어주세요 ^^;
소스 수정 해야겠습니다 ^^;
( 지금은 소스 수정 완료 상태입니다.. ㅜㅜ )

Tyburn  님이 07/02/07 18:56 에 남긴 말 | 고침/지우기

알려주셔서 감사합니다.

전 if 문을 이용해서 중복되는 경우를 제거하기 위해 복잡한 소스를 짜던 중이었는데(...) 간단한 방법이 있었네요.

댓글을 씁니다. ( Write a comment )