웹마스터 팁

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>

 

이런식으로 됩니다.

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

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

 

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

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

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

 

감사합니다.

 

제목 글쓴이 날짜
zb4 방명록 -> XE 방명록 답글을 코멘트로 넣기. [2] St.Veiry 2010.01.13
홈페이지에 BGM달기 [1] SHIN군 2010.01.18
모듈선택기의 문제해결 한가지 방법.. [1] 한스김 2010.01.18
[뻘팁] 특정 모듈이 설치되어 있는 지 간단하게 확인하기 [1] SMaker 2010.01.18
xml js filter를 이용한 form 정보 전달 시 disabled="true" 사용 팁 [5] 라르게덴 2010.01.20
XE 업데이트 방법 - 제2편 (1.2.4 에서 1.4.0 이상의 버전으로 업그레이드) [7] file Gekkou 2010.01.20
모듈선택기의 창이 열리다 마는 현상때문에 고생하시는 분들께.. 한스김 2010.01.21
ssl 항상 적용하기 + http->https로 rewrite [5] 겨울소년 2010.01.21
쉬운설치가 제대로 동작하지 않는 분들 [4] 하늘03 2010.01.22
Flash swf 플래쉬 때문에 로그인이나 메뉴가 감추어졌을때에... [5] file 태림씨야! 2010.01.23
쉬운 설치, 에러 메시지 없이 설치 안 되는 경우 [4] 이그누 2010.01.23
레이아웃 상단에 공백,여백이 생길때 (css,html 등으로도 해결안되는 문제) [7] file Gnee 2010.01.24
[초보팁] 최근게시물 위젯에 확장변수 표시하기 [23] 오뎅궁물 2010.01.29
■ 초보님을 위한 XE 동영상 강좌 [초보님들 필독 권합니다. ^^] [8] 파파민 2010.01.30
로그인페이지와 새페이지 연결법 [2] poko 2010.01.30
쉬운 설치 - unexpected error 메시지창이 뜰 때 [9] 현의느낌 2010.01.30
확장변수로 북마크 게시판 만들기 [2] 레디오빠 2010.01.31
제로보드XE F5 공격 취약점 [7] ONEONE 2010.02.01
공식 레이아웃 v2 스킨에서 롤오버 메뉴 적용하기. [6] 노기욱 2010.02.01
cafe24에서 쉬운설치 기능을 쓰기위한 ftp 설정법 [19] file 현의느낌 2010.02.01