웹마스터 팁

zb4의 방명록 데이터를 XE로 옮길 경우

기존 zb4에서는 "답글"의 형태를 사용했었는데

XE에는 댓글만 있고 답글이 없기 때문에

답글이 전부 일반 문서랑 같은 형식으로 들어가게 됩니다.

이것을 코멘트로 집어 넣는 방법입니다.

 

물론 프로그래밍에 능통하신 분들은 쉽게 만드실 수 있을거 같지만

저 같이 프로그래밍을 할 줄 모르는 분들을 위해 바꾸는 팁을 알려 드립니다.

 

단, 이게 가능한 조건은

1. 방명록 답글은 마스터 혹은 한 사람만 달았을 것.

2. 마스터 (답글 단 사람)은 답글 외에는 방명록을 쓰지 않았을 것. (첫 글 정도는 괜찮음)

 

이 두 가지 요건이 충족 되어야 합니다.

그럼 시작해볼까요.

 

방법은 '바꾸기' 를 이용하는 것입니다.

그런데 바꾸기를 이용하려면 사전 작업이 좀 필요합니다.

우선 zb4 마이그레이션 파일중 export.php를 엽니다.

 

209줄 쯤에 보면

 

            if($module_info->use_category && $document_info->category) $obj->category = $category_list[$document_info->category];
            $obj->title = $document_info->subject;
            $obj->content = $document_info->memo;
            $obj->readed_count = $document_info->hit;
            $obj->voted_count = $document_info->vote;
            $obj->user_id = $document_info->user_id;
            $obj->nick_name = $document_info->name;
            $obj->email = $document_info->email;
            $obj->homepage = $document_info->homepage;
            $obj->password = $document_info->password;
            $obj->ipaddress = $document_info->ip;
            $obj->allow_comment = 'Y';
            $obj->lock_comment = 'N';
            $obj->allow_trackback = 'Y';
            $obj->is_secret = trim($document_info->is_secret)?'Y':'N';
            $obj->regdate =  date("YmdHis", $document_info->reg_date);
            $obj->update = null;
            $obj->tags = '';

 

이런 내용이 있습니다. 여기서 닉네임 부분을 맨 위로, 유저 아이디 부분을 맨 아래로 바꿔 줍니다. 이렇게요~

 

            if($module_info->use_category && $document_info->category) $obj->category = $category_list[$document_info->category];
            $obj->user_id = $document_info->user_id;
            $obj->title = $document_info->subject;
            $obj->content = $document_info->memo;
            $obj->readed_count = $document_info->hit;
            $obj->voted_count = $document_info->vote;
            $obj->email = $document_info->email;
            $obj->homepage = $document_info->homepage;
            $obj->password = $document_info->password;
            $obj->ipaddress = $document_info->ip;
            $obj->allow_comment = 'Y';
            $obj->lock_comment = 'N';
            $obj->allow_trackback = 'Y';
            $obj->is_secret = trim($document_info->is_secret)?'Y':'N';
            $obj->regdate =  date("YmdHis", $document_info->reg_date);
            $obj->update = null;
            $obj->tags = '';
            $obj->nick_name = $document_info->name;

 

눈치 빠른 분들은 이미 아셨겠지만

이렇게 바꾸는 이유는 xml 데이터를 만들때 이 순서대로 만들어줌으로써

바꾸기를 용이하게 하기 위해서입니다.

 

그 다음에 export 파일을 업로드 하고 방명록 db를 xml로 다운 받습니다.

xml을 에디터로 열어봅니다. 참고로 줄바꿈까지 치환 할 수 있는 에디터를 사용하셔야 합니다.

(한글도 가능한데 파일이 클 경우 매우 오래 걸려요~)

 

<post>
<user_id>U2FuZ2d5bw==</user_id>
<title>amFlbWFuc3R5bGU=</title>
<content>sGSDHBdgsh==</content>
<email>bjE3YTAyQGhhbm1haWwubmV0</email>
<password>NWU1NTkxZmMpassword>
<ipaddress>MjE4LjUwLjEyMS4xNzE=</ipaddress>
<allow_comment>WQ==</allow_comment>
<lock_comment>Tg==</lock_comment>
<allow_trackback>WQ==</allow_trackback>
<is_secret>Tg==</is_secret>
<regdate>MjAwNDA3MDYyMDQ5MzM=</regdate>
<nick_name>U2FuZ2d5bw==</nick_name>
</post>

 

보기만 해도 정신이 없네요. 일단 <post></post>로 둘러 싸인게 하나의 글입니다.

글 순서는 오래된 글일 수록 위에 위치합니다.

 

글의 구조를 봅시다.

아시는 분은 아시겠지만 zb4에서는 첫 글에는 답글을 달 수가 없습니다.

만약 방명록의 첫글을 주인장이 썼다면

 

<post>주인이 쓴 1번 글 나머지 태그 생략.....

</post>

 

<post> 주인이 2번 글에 답글 단 글 내용 생략...

</post>

 

<post> 손님이 쓴 2번 글 내용 생략...

</post>

 

<post> 주인이 3번 글에 답글 단 글 내용 생략....

</post>

 

<post>손님이 쓴 3번 글 내용 생략...

</post> .....

 

이렇게 됩니다.

 

첫글을 손님이 썼다면 위의 구조에서 맨 위에가 손님이 쓴 글이 되겠지요.

 

다시 풀어쓰면

1번글

2번답글

2번글

3번답글

3번글

...

이런 순서대로 저장이 된다는 이야기입니다.

 

자 그럼 코멘트는 어떻게 되느냐?

코멘트는 <comments count="n"><comment></comment></comments>

이 형식안에 들어갑니다. n은 코멘트의 갯수입니다.

방명록은 보통 답글을 하나만 다니까 1로 해주시면 됩니다

(저 숫자가 코멘트 갯수와 다를 경우 어떻게 되는지는 실험해보지 않았습니다만

게시판 제목 옆에 나오는 갯수일 가능성이 있기 때문에 중요하지 않을 수도 있습니다.)

 

자 이제부터 할 작업은

<post>답글</post>

<post>손님글</post>

 

이 두개의 각각 다른 문서를

 

<post>

<comments count="1">

<comment>답글</comment>

</comments>

손님글

</post>

의 형식으로 바꿔주는 것입니다.

이것을 원활하게 하기 위해 아까 닉네임과 유전임을 위 아래로 배치했습니다.

 

일단 첫 글이 마스터가 쓴 글이라면 잠시 다른데다 복사해놓고 지웁니다.

그럼 맨 위에 2번글의 답글이 위치하겠죠.

 

<post>
<user_id>U2FuZ2d5bw==</user_id>
<title>amFlbWFuc3R5bGU=</title>
<content>sGSDHBdgsh==</content>
<email>bjE3YTAyQGhhbm1haWwubmV0</email>
<password>NWU1NTkxZmMpassword>
<ipaddress>MjE4LjUwLjEyMS4xNzE=</ipaddress>
<allow_comment>WQ==</allow_comment>
<lock_comment>Tg==</lock_comment>
<allow_trackback>WQ==</allow_trackback>
<is_secret>Tg==</is_secret>
<regdate>MjAwNDA3MDYyMDQ5MzM=</regdate>
<nick_name>U2FuZ2d5bw==</nick_name>
</post>

 

이게 마스터가 단 2번의 답글이라고 합시다.

여기서 마스터의 아이디 부분은 U2FuZ2d5bw==로 항상 동일,

닉네임은 U2FuZ2d5bw==로 동일합니다. 이건 물론 암호화 상태구요.

회원님들도 xml을 살펴보시면 글 하나 건너 하나씩 나오는 아이디가 바로 답글 단 사람의 아이디 입니다.

(답글을 다 달았다는 전제하에. 물론 답글을 띄엄띄엄 다셨어도 변환에는 문제가 없어요)

그럼 이제 바꿔줘야하는데

 

<user_id>U2FuZ2d5bw==</user_id> 이 부분을

 

<comments count="1">
<comment>
<user_id>U2FuZ2d5bw==</user_id> 이렇게 치환합니다.

 

줄바꿈 즉 엔터부분은 한글에서는 ^n 를 씁니다.

 

저렇게 모두 바꾸기를 이용해서 한번에 싹 바꿉니다.

그럼 현재 상황은

 

<post>

<comments count="1">
<comment>
<user_id>U2FuZ2d5bw==</user_id>
<title>amFlbWFuc3R5bGU=</title>
<content>7KCE7L2Y7Jgg65CY66m0Li4tXy1h</content>
<email>bjE3YTAyQGhhbm1haWwubmV0</email>
<password>NWJjZA==</password>
<ipaddress>MjExLjIwNy4xOS4yOA==</ipaddress>
<allow_comment>WQ==</allow_comment>
<lock_comment>Tg==</lock_comment>
<allow_trackback>WQ==</allow_trackback>
<is_secret>Tg==</is_secret>
<regdate>MjAwNDA3MTAyMzQzNDQ=</regdate>
<nick_name>U2FuZ2d5bw==</nick_name>

</post>

<post>

2번글 내용

</post>

 

이렇게 됩니다.

이제 다음 작업은

코멘츠, 코멘트 태그를 닫아주고 2번글 앞에 있는 </post><post> 태그를 없애줘야하지요.

이를 위해서

 

<nick_name>U2FuZ2d5bw==</nick_name>

</post>

<post>

 

이 부분을

 

<nick_name>U2FuZ2d5bw==</nick_name>
</comment>
</comments>

 

이렇게 바꿔줍니다. 원래대로라면 맨 위에 타이틀과 아래에는 날짜등이 위치하기 때문에

일괄적으로 적용할 수가 없었지만

지금은 마스터의 아이디와 닉네임 부분이 위아래를 감싸고 있기에 한 번에 바꾸는 것이 가능합니다.

 

자 이 결과 나온 한쌍의 글과 답글은

 

 

<post>
<comments count="1">
<comment>
<user_id>U2FuZ2d5bw==</user_id>
<title>amFlbWFuc3R5bGU=</title>
<content>7KCE7L2Y7J2AIOi4tXy1h</content>
<email>bjE3YTAyQGhhbm1haWwubmV0</email>
<password>NWU1NTTJjZA==</password>
<ipaddress>MjExLjIwNy4xOS4yOA==</ipaddress>
<allow_comment>WQ==</allow_comment>
<lock_comment>Tg==</lock_comment>
<allow_trackback>WQ==</allow_trackback>
<is_secret>Tg==</is_secret>
<regdate>MjAwNDA3MTAyMzQzNDQ=</regdate>
<nick_name>U2FuZ2d5bw==</nick_name>
</comment>
</comments>
<user_id>c3F1YWxsZW9u</user_id>
<title>amFlbWFuc3R5bGU=</title>
<content>MeuTsS4uLurQuLi4u66aJLi4u</content>
<email>c3F1c2xsZW9uQGhhbm1haWwubmV0</email>
<password>MDA2OGk3NA==</password>
<ipaddress>MjExLjEwNC4zNy4xNTg=</ipaddress>
<allow_comment>WQ==</allow_comment>
<lock_comment>Tg==</lock_comment>
<allow_trackback>WQ==</allow_trackback>
<is_secret>Tg==</is_secret>
<regdate>MjAwNDA3MTAxNTEwMDM=</regdate>
<nick_name>TC5TLkQuLi7ihKI=</nick_name>
</post>

 

이런식으로 됩니다.

여기에 아까 맨 처음글을 주인이 썼다면

다시 복사해서 위에 붙여주시면 됩니다.

 

좀 복잡하지만 이렇게 함으로써

저는 몇 천개의 방명록 답글을 댓글로 전환시켰습니다.

혹시 필요하신 분들에게 도움이 되었으면 합니다.

 

감사합니다.

 

제목 글쓴이 날짜
매일 매일 업데이트 되는 사이트 내용부분만 아이프레임으로 긁어오기... [1] 만쓰별(정만) 2009.01.25
인터넷 익스플로러 vs 파이어 폭스 속도 차이 [3] Jiwoon Kim 2009.01.25
XpressEngine 초보자를 위해서! [1] 바라기군 2009.01.25
메뉴활성화에 따라 원하는 위치에 레이어 넣고 바꾸기.. 왼쪽 플래시 메뉴 메뉴따라서 바꾸기 [4] 만쓰별(정만) 2009.01.24
묻고 답하기용 게시판 [1] yunesb 2009.01.24
회원을 그룹으로 나누어 화면에 출력할 수 있나요? 아키수 2009.01.24
전체글 보기 게시판 만들어보기 관련 연구 응용 링크 모음 [5] 만쓰별(정만) 2009.01.23
프레임셋을 이용하여 도메인 명만 보여주기 /xe ~~ 와 같은 것 없애기 [5] 만쓰별(정만) 2009.01.23
페이지 모듈에도 게시판제목 처럼 다는 쉬운방법... [2] 만쓰별(정만) 2009.01.23
미지원 언어 추가하기(기존에꺼 하나 골라서 수정하는 방식으로) 만쓰별(정만) 2009.01.23
공식레이아웃에 언어선택 부분 빼는 방법 아주 간단합니다. [1] file 만쓰별(정만) 2009.01.23
1.1.5 이후 버전 업데이트후 외부페이지에서 다음위젯이 표시안될때~ [3] 정박사닷컴 2009.01.23
첨부 파일 용량 문제 - 이것도 저것도 않될때 [4] file DeJavu346 2009.01.22
쪽지보내기에 대하여 문의 [1] 도봉산사랑 2009.01.22
계시글 제목이 짤려서 나오는데 어디를 수정해야 할까요... [2] file 지우빠 2009.01.20
제로보드XE 외부출석부 [1] file noirzo 2009.01.18
제로보드 DTREE 메뉴 적용하기 ( 카테고리 선택기 흉내 냈습니다.) [5] file 조성우371 2009.01.17
(재 수정) 제로보드 XE 신버젼에 Lavalic 2 설치하기 [4] 조성우371 2009.01.16
회원약관 추가 [7] file 애치티 2009.01.15
제로보드XE 쉽게 업데이트 하는 방법.. [13] 청개구리00 2009.01.12