타임라인 모듈에 게시글 필터링 기능이 있기는 하지만, 특정 문서만 선택해서 추출하는 기능은 아직 없죠. 제작자님이 해당 기능을 만들어주신다면 더할 나위 없이 좋겠지만, 당분간은 업데이트 계획이 없는 것 같습니다.

그래서 스케치북 게시판 스킨을 가지고 한번 해봤습니다. 제법 잘 되네요. 그 어려운 걸 자꾸 해냅니다 내가ㅋㅋ

 

 

1. 먼저 더미 게시판을 만듭니다. 예컨대 모듈 이름을 time_line이라고 해보죠. 적절한 스킨도 씌워줘야겠죠? 역시 국민 게시판 스케치북ㅋ

 

 

2. 그리고 스킨 폴더에서 새로운 리스트 파일 하나를 만들어야 합니다. 문서 목록을 불러오는 함수가 다르다보니 별도의 리스트 파일이 필요하죠. 저는 웹진형이 좋으니 _list_webzine_time_line.html 이라고 할게요.

 

 

3. list.html 파일을 엽니다. 중하단에 <!--// 게시판 유형 -->이라는 부분이 있습니다. 여기서

<!--@elseif($mi->default_style=='webzine')-->
  <include target="_list_webzine.html" />

이 부분을

<!--@elseif($mi->default_style=='webzine')-->
  <!--@if($mid=='time_line')-->
  <include target="_list_webzine_time_line.html" />
  <!--@else-->
  <include target="_list_webzine.html" />
  <!--@end-->

요렇게 바꿔줘서 홈페이지/time_line 로 접근했을 때 새로 만든 리스트 파일(_list_webzine_time_line.html)이 출력되도록 해주는 거죠.

 

 

4.이번엔 skin.xml 파일을 엽니다. 맨 아래에 "모바일 설정" 그룹을 볼 수 있는데, 우리는 그보다 아래에 새로운 입력 폼을 추가해줍니다. </extra_vars> 바로 윗 부분에 다음 소스를 추가해주세요.

<group>
  <title xml:lang="ko">*문서 추출 설정</title>
  <var name="srl_list" type="text">
    <title xml:lang="ko">*추출할 문서번호</title>
    <description xml:lang="ko">쉼표로 구분합니다. 예. 107513,107477,107344,107663,108953</description>
  </var>
</group>

그러면 skin.xml 파일 수정은 끝납니다.

 

 

5. 이번에는 __setting.html 파일을 엽니다. 참고로 스케치북님의 매뉴얼에 의하면 커스텀하고 싶을 때 따로 custom/custom.php 파일을 만들라고 하는데요, 저는 귀찮아서 그냥 __setting.html 파일을 직접 수정했습니다. 15행쯤 보면 if(!$mi->img_insert_align) $mi->img_insert_align = 'center'; 이 부분이 있을 텐데요. 그 다음 줄에 다음과 같은 내용을 추가해줍니다.

<!--// 문서 추출 -->
if(!$mi->srl_list) $mi->srl_list = '';

... skin.xml에서 추가해줬던 변수 이름 srl_list가 여기서 적용되는 거죠. 이렇게 __setting.html 파일까지 수정하고 나면 게시판 스킨 설정에 아래 그림과 같은 입력폼이 만들어질 겁니다. 확인해보세요. 문서번호 입력 갯수 제한은 없으니 맘 놓고 입력하신 뒤 사용하시면 됩니다.

01.jpg

xml 파일에 $mid 관련된 조건문을 달 수 있으면 이 부분이 time_line 게시판에만 나타나서 좋을 텐데, 불행히도 제가 거기까진 잘 모르겠네요. 하지만 다른 게시판 스킨에서 이곳에 입력해봤자 아무런 영향이 없으니 혹시라도 걱정 마세요. 오로지 srl_list 관련 변수를 활용한 게시판에서만 작동합니다. ㅎㅎ.

 

 

6. 자, 이번에는 아까 만들어뒀던 _list_webzine_time_line.html 파일을 다시 엽니다.

 

6-1. 파일 맨 윗 부분에 다음과 같이 변수 선언을 해줍니다.

<!--// 문서 추출 관련 변수 -->
{@
  $srl_list = explode(',', $mi->srl_list);
  $list = array_map('trim',$srl_list);
}

(1) 입력폼에서 쉼표 단위로 입력한 문서번호를 배열로 만들어줘야 하기도 하고, (2) 간혹 관리자가 쉼표와 숫자 사이를 띄어쓰기 하는 경우도 있으니, 이 두 가지 경우를 모두 고려해서 문서번호 배열 변수 $list를 만들어주는 겁니다.

 

6-2. 파일 소스 상단에 ol 태그가 보일 겁니다. 그 근처 <!--// 공지 목록 --> 바로 윗 줄에 다음 부분이 있는데 지워줍니다. 어차피 이 게시판에 $document_list 변수가 쓰일 일이 없으니 있어봤자 골치 아픈 부분입니다.

<li cond="!$document_list && !$notice_list" class="no_doc">{$lang->no_documents}</li>

 

6-3. 중간쯤으로 내려와 <!--// 일반 목록 -->을 찾아냅니다. 루프문이 보일 겁니다. 보통은 이렇게 되어 있죠.

<!--// 일반 목록 -->
<li loop="$document_list=>$no,$document" class="<!--@if($document_srl==$document->document_srl)-->select <!--@end-->clear">

이걸 다음과 같이 바꿔줍니다.

<!--// 일반 목록 -->
<li loop="$list=>$l" class="clear">
{@
  $oDocumentModel = &getModel('document');
  $document = $oDocumentModel->getDocument($l);
}

이렇게 하면 $document_list를 통해 뽑아내는 기존의 $document와 동일한 문서 정보를 담고 있는 $document를 확보할 수 있게 됩니다. 다른 게 있다면 전체 문서에서 우리가 선택한 문서만 가져온다는 것쯤이지요.

 


7. 이제 게시판 설정에 들어가서 게시판 목록에 출력할 변수들을 추가해주면 끝이 납니다. 웹진형 게시판으로 했으니 아래와 같이 섬네일과 요약 정도는 필수 추가해줘야겠죠? ㅎㅎ

02.jpg


 8. 끝이 났습니다. 그 외의 부분들은 여러분들 취향에 맞게 추가적으로 커스텀하시면 되겠어요. 다만, 이 팁에는 몇 가지 단점이 있습니다.

 

첫째, 위 그림에 있는 정렬방법은 아무리 해도 안 먹힐 겁니다. $srl_list 변수에 입력된 순서(즉, 스킨 설정 맨 아래 부분에 입력했던 문서번호 순서)로 고정되어 있기 때문이에요. $srl_list 재배열하지 않는 이상 목록 재정렬은 어려울 겁니다.

 

둘째, 사실 이게 좀 결정적이긴 합니다. 지금 제가 작성한 팁으로는 아무리 응용을 해봤자 웹진형, 목록형, 갤러리형, 클라우드 갤러리형, 방명록형, 블로그형, FAQ형 등 중에서 한 가지 유형에만 적용이 가능합니다. 따라해보시면 아시겠지만, 위와 같이 만든 time_line 게시판의 목록 유형을 웹진형에서 목록형으로 바꾸면 아무 것도 뜨지 않는다는 걸 확인할 수 있을 겁니다.

 

따라서 이 팁을 적용해보고자 하시는 분은 다음 세 가지 중 하나를 고려해볼 필요가 있습니다. 첫째, 특정 문서 선택 게시판의 목록 유형을 한 가지로만 정해서 절대 바꾸지 않는다. 둘째, 각 목록유형별로 소스파일을 따로 만들어서 어떤 형태로든 유연하게 출력되도록 기능을 확장한다. 셋째, 타임라인 모듈에서 특정 문서 선택 기능을 첨가할 수 있도록 여러가지 방안을 모색해본다. 가령, 타임라인 모듈 제작자님께 요청을 넣어본다든가, 여론으로 압박해본다든가, 떼를 써본다든가, 등등.

 

이상입니다. 부족한 팁 읽어주셔서 감사합니다. 꼼수이긴 하지만 그래도 요긴하게 쓰실 분들이 있을 거라고 생각합니다. :)

윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile
    이방법을 사용하실려면 꼭 XE최신버전을 사용하시길 바래요.

    그 이전 버전에서는 XSS보안 취약점에 노출될 수 있습니다.
  • profile profile
    헐, 제가 뭣도 모르고 큰일을 낼 뻔했군요ㄷㄷ
    당부 말씀 감사합니다!
  • profile profile
    덕분에 정보+ 얻고 갑니다.
  • profile
    감사합니다~!