웹마스터 팁

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>

 

이런식으로 됩니다.

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

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

 

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

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

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

 

감사합니다.

 

제목 글쓴이 날짜
2차메뉴 롤오버 위치 변환.. [3] 봄처녀 2008.06.05
Cafe 운영시 조그만한 팁... [2] 부푸러 2009.04.03
모듈선택기의 문제해결 한가지 방법.. [1] 한스김 2010.01.18
회원에게 만기일 주기(1원짜리 팁) [17] 까오천사 2007.11.12
홈페이지 주소 고정시키기 [12] file :에반: 2007.08.21
쉬운 설치, 에러 메시지 없이 설치 안 되는 경우 [4] 이그누 2010.01.23
제로보드(zbxe) 설치 후 로그인 안되는 문제. [3] sophistlv.myid.net 2008.10.15
달력형 리스트 입니다. [5] file 착한악마 2009.07.01
xml js filter를 이용한 form 정보 전달 시 disabled="true" 사용 팁 [5] 라르게덴 2010.01.20
모듈선택기의 창이 열리다 마는 현상때문에 고생하시는 분들께.. 한스김 2010.01.21
이미지 정보표시(EXIF) 영문을 한글로 [6] file Diver 2008.11.23
특정 게시판, 업로드된 그림 자동으로 본문에 출력하기 [14] file 대암지기 2008.02.03
Zeroboard와 비슷한 방식으로 website 만들기! [9] June Oh 2009.08.17
textyle Domain 접속방법 [5] file 왜만지냐 2009.10.15
파일 첨부시 사라지는 현상 [6] Isaac Shepherd 2009.10.07
사이트 먹통 되었을 때 대처법 [4] LunarDream 2009.08.14
zbxe 기본글꼴(폰트) 바꾸는 방법 [9] file 핸디지 2008.04.22
zb4 방명록 -> XE 방명록 답글을 코멘트로 넣기. [2] St.Veiry 2010.01.13
개인서버(윈도XP) + apmsetup6 + XE 설치하기 [1] 꽃들 2010.01.06
XE용 query xml 방식으로 일반 테이블도 접근 처리 하기 [1] 라르게덴 2009.06.18