2006년 10월 15일 일요일

제로보드에 트랙백 적용시키기

- SiteLink #1 : http://gunii.com/bbs/zboard.php?id=study&no=163

NAME 거니 (http://gunii.com)

UPLOAD #1 trackback_source.zip (5.5 KB) Download : 522

UPLOAD #2 trackback2.zip (2.7 KB) Download : 500
SUBJECT 트랙백 기능 적용하기..

TRACKBACK http://gunii.com/bbs/zerotb.php?id=study&no=163

이 팁을 적용하실 분은..
대충 트랙백이 무엇인지 알고 있을것입니다.. ^^
트랙백 적용하는 팁은...
다른 곳에도 많이 있는데....
제가 그 많은 곳을 돌아 다녀봤어요...
링크가 깨져있거나....
소스가 완전하지 않기도 하고...
암튼.. 이래저래... 저도 트랙백 적용하기 위해...
여기저기 돌아다니다가...
정말 힘들게 구현하게 되었습니다...
많이 힘들었네요...
제가 가지고 있는 소스도....
여기저기서 모아온 것이라... 짬뽕된 것이긴 한데....
트랙백은.. 잘~ 적용됩니다.....
트랙백 관련 소스는...
제가 조금 수정한 것도 있기는 하나...
거의 대부분 다른 분들께서 만드신 겁니다....
자료를 다운받아 보시면.....
만드신 분의 카피라이터가 표시되어 있을겁니다...
게시판을 블로그화 하려면....
트랙백 기능외에.. 게시물을 RSS로 변환해주는.. 작업이 필요한데...
RSS로 변환해 주는 작업은...
엔지오 홈피에도 있고.... 그래서... 따로.. 설명드리진 않겠습니다...

1. 자료를 다운
첨부파일 #1을 받으면....
zerotb.php 파일과...
tb_functions.php 파일과...
send_trackback.php 파일이 있고..
첨부파일 #2를 받으면...
view_trackback.php
print_trackback.php
zero2rss.php 파일이 있습니다.

zerotb.php 파일과...
tb_functions.php 파일을 여신다음..

블로그 네임과 계정을 설정해 주는 게 있는데요..
그 부분만 수정하신 후 세개의 파일을 제로보드 폴더에 올려주시기 바랍니다...
예시로..  거니하우스 이름이랑 계정 정보등을 넣어놓았으니.. 본인에 맞게 수정하세요..



2. 제로보드 폴더에 있는 write_ok.php 파일 수정
write_ok.php 파일을 열어서 아래와 같은 부분을 찾으세요..
/***************************************************************************
* 수정글일때
**************************************************************************/
이 부분 바로 위에다가....
아래 소스를 삽입하세요...



// 트랙백을 보내는 함수
if ($trackback_url) {
   
   if(eregi("[br]", $memo)) { // 쓸모없는 부분은 보내지 않음
       $t_memo = explode("br]", $memo);
       $memo = $t_memo[1];
   }
       $subject = stripSlashes ($subject);
       $memo = stripSlashes ($memo);
   // 이글루스와 온블로그일때
   if ($trackback_url&&(eregi("egloos",$trackback_url)||eregi("onblog",$trackback_url)||eregi("b2trackback",$trackback_url)||eregi("rserver",$trackback_url)||eregi("blog.daum",$trackback_url)||eregi("paran",$trackback_url)||eregi("blog.naver",$trackback_url))) {
       include "./send_trackback.php";
       $blogname = "거니 하우스";
       $result = send_tb($trackback_url,"http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/zboard.php?id=".$id."&no=".$no,$subject,$blogname,$memo);

       if ($result) {
           $trance = array(
           "/tb/"=>"/", //이글루스
           "b2trackback.php/"=>"index.php?p=", //b2
           "rserver.php?mode=tb&sl"=>"index.php?pl", //tt
                       "trackback/ping.php"=>"index.php?pl", //tt

           );
           $trackback_url = strtr($trackback_url , $trance);
           //온블로그 주소 파싱
           if(eregi("onblog",$trackback_url)) {
               $onblog_trackback_url1 = explode("/PingServer?mode=tb&id=", $trackback_url);
               $onblog_url1 = $onblog_trackback_url1[0];
               $onblog_trackback_url2 = explode("/", $onblog_trackback_url1[1]);
               $onblog_url2 = $onblog_trackback_url2[0];
               $onblog_url3 = $onblog_trackback_url2[1];
               $trackback_url = $onblog_url1."/blog/blog_post_list.jsp?owner_uid=".$onblog_url2."&post_uid=".$onblog_url3;
           }
           $memo = $memo.addSlashes("\r\n\r\n트랙백으로 이어진글 : ".$trackback_url);
       } else {
       ?>
           <script language=javascript>
           alert("트랙백에 실패했습니다. : <?=$tb_error_str?>");
           </script>
       <?
       }
   // 그밖의 블로그들
   } elseif($trackback_url) {
       include "./tb_functions.php";
        $result = postTrackBack($subject, "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['REQUEST_URI'])."/zboard.php?id=".$id."&no=".$no, $memo, $trackback_url);
       if ($result["value"]) {
           
               if ($result['link']) {
                   $result_url = $result['link'];
                   // 제로블로그에서 퍼머링크가 리턴되지 않을 경우
                   if(eregi("zerotb",$result_url)) {
                       $trance1 = array(
                           "zerotb.php"=>"zboard.php",
                           "&no"=>"&go_no",
                           );
                   $result_url = strtr($result_url , $trance1);
                   }
                   // 일반적인 치환
               $trance2 = array(
               "/tb/"=>"/",
               "rserver.php?mode=tb&sl"=>"index.php?pl", //태터툴즈
               "trackback.php?bid=talk&id"=>"miniwinis/board/index.php?bid=talk&mode=read&id", //미니위니 자게
               "trackback.php?bid=qna&id"=>"miniwinis/board/index.php?bid=qna&mode=read&id", //미니위니 질게
               "trackback.php?bid=share&id"=>"miniwinis/board/index.php?bid=share&mode=read&id", //미니위니 알짜
                               "trackback.php?pid"=>"?pid", //진보넷 블로그
                               "tb.php?tb_id"=>"?no", //조그일 경우
               );
               $result_url = strtr($result_url , $trance2);
           }

               $memo = $memo.addSlashes("\r\n\r\n트랙백으로 이어진글 : ".$result_url);
       } else {
       ?>
           <script language=javascript>
           alert("트랙백에 실패했습니다. : <?=$result["message"]?>");
           </script>
       <?
       }
   }
}


아참..  블로그 네임을 수정해주세요..
지금은 '거니 하우스' 로 되어 있습니다..
그럼.. write_ok.php 파일 수정은 끝났습니다...

3. 적용할 스킨의 view.php 파일 수정...
view.php 파일을 여시고...
트랙백 주소를 표시하고자 하는 부분에...
아래 소스를 삽입합니다...

<script>
function toClip(memo) {
       window.clipboardData.setData('Text',memo);
       alert('주소가 복사 되었습니다');
}
</script><a href="javascript:onclick=toClip('h ttp://제로보드주소/zerotb.php?id=<?=$id?>&no=<?=$data[no]?>')" onfocus=blur() title="Click to copy"><font color="#BC593B">h ttp://제로보드주소/zerotb.php?id=<?=$id?>&no=<?=$data[no]?>& lt;/font></a>


물론 '제로보드주소'는 본인에 맞게 넣어주셔야겠죠.. ^^
그럼.. 트랙백 주소를 표시해 주는 부분은 끝났습니다...
다음으로... 코멘트 개수와.. 트랙백 개수를 표시하는 부분을 적용합니다..
view.php 파일의 최 상단에... 아래 소스를 넣어줍니다..


<?
 $comment_cnt = @mysql_fetch_array(mysql_query("select count(*) cnt from $t_comment"."_$id where parent=$data[no] and password<>'TrackBack'"));
 $trackback_cnt = @mysql_fetch_array(mysql_query("select count(*) cnt from $t_comment"."_$id where parent=$data[no] and password='TrackBack'"));
?>


그 다음.... 트랙백과 코멘트의 개수가 몇개인지 나타내고 싶은 곳에...
아래 소스를 넣어줍니다...

코멘트(<?=$comment_cnt[cnt]?>) | 트랙백(<?=$trackback_cnt[cnt]?>)


그럼.. 스킨의 view.php 파일의 수정은 끝났습니다....

4. 스킨의 write.php 파일 수정
write.php 파일을 엽니다..
적당한 부분에 아래 소스를 넣습니다...
적당한 부분이 이해가 잘 안 가시면....
거니하우스에서 글쓰기 버튼을 누르신 후....
하단부분의 빨간 글씨가 나오는 부분이라고 이해하시면 됩니다...

<? if($mode == "modify"){?>
<input type=text name=trackback_url class=input <?=size(60)?>>
<? }else {?>
<input type=hidden name=trackback_url> <font color="red">트랙백으로 작성하시려면 먼저 작성완료하고 수정하셔야 합니다</font>
<? }?>



자...
이젠 끝났습니다...
트랙백 한번 날려주세요~~
잘 되는지 테스트 해보세요~~ ^^
제가... 가지고 있는 파일중...
print_trackback.php 파일과...
view_trackback.php 파일이 있긴 한데요...
이 파일들은....
다른 일반 코멘트와.... 트랙백 파일을 구분짓는.. 역할을 하는 파일들인데..
제가 가지고 있는 파일들은...
완벽한 소스가 아니고.. 또한...
이 파일들을.. 적용하지 않아도...
트랙백 기능은 이상없이 작동하기 때문에....
첨부하지 않습니다....
잘 활용하시구요....
본인의 홈페이지에 맞게.. 적당히 수정하셔서 쓰시면 됩니다.. ^^
여러분들의 몫이겠죠~~

[2005-06-22 내용 추가]
print_trackback.php 파일과...
view_trackback.php 파일 추가했습니다..
link#2 에 올려진 파일 다운받으세요...
이 파일들은... 홈피에 바로 적용하기에 문제점이 있어서...
제가.. 원본 소스를 약간 수정해서 올립니다...
이 팁을 적용하기까지...
많은.. 도움 주셨던.. 러브렛님께 감사드립니다..
또한.. 첨부된 이 소스들는... 애초에... 제가 만든것은 아니며...
소스에 보시면... 원제작자의 카피라이터가 표기되어 있습니다...
이 파일들은... 제로보드 스킨 폴더에 넣으셔야 합니다...
일반 코멘트와... 트랙백을 분리해 주는 역할을 한답니다...
적용 방법은...
일단.. 파일을 업로드 하시고..
제로보드 폴더의 view.php 파일을 여세요..
그리고.. 260라인 부근에... 아래와 같은 부분이 있습니다..

// 내용보기 출력
       $_skinTimeStart = getmicrotime();
       include $dir."/view.php";
       $_skinTime += getmicrotime()-$_skinTimeStart;


이 부분 바로 아래에 아래 소스를 추가합니다..


// 트랙백 출력
$blog_id = "blog";
if ($id == $blog_id) include "$dir/print_trackback.php";


여기서.. blog 는 블로그 게시판 id 랍니다..
본인에 맞게 바꿔서 사용하시면 됩니다..
여러 게시판에 적용하실때는...

// 트랙백 출력
$blog_id = "blog";
if ($id == $blog_id) include "$dir/print_trackback.php";

이 부분을 아래처럼 바꿔주세요....


// 트랙백 출력
if ($id == "아이디" || $id == "아이디" || $id == "아이디") include "$dir/print_trackback.php";




그리고.. 모든 게시판에 적용하실 분은... 아래처럼 넣어주시면 됩니다.

// 트랙백 출력
include "$dir/print_trackback.php";


그리고...
view_trackback.php 파일은.. 거니의 스킨에 맞게 수정되어 있습니다..

테이블 등등....
이것들은.. 본인이 쓰시는 스킨에 맞도록 수정하시면 되겠습니다....

[2005년 6월 26일 추가]
글 내용을 rss 형식으로 변환해주는 파일도 올립니다..
파일 #2를 다운 받으시면 포함되어 있습니다.. ^^
파을을 보시면.. zero2rss.php 파일이 있답니다...
이 파일을 여셔서...
위쪽에.. 정보들을 수정해 주시고...
홈페이지에 올리신 후...
사용법은 아래와 같습니다..

http://경로/zero2rss.php?id=게시판명
rss로 추출하고자 하시는 게시판 이름을 적어주시면 됩니다..

글 찾기

글 갈래