기본 위젯으로 존재하는 꼬리표 목록 출력(tag_list) 위젯은 게시물에 등록되어 있는 꼬리표의 리스트를 출력해 주는 위젯이다.
레이아웃 편집화면에서
꼬리표 목록 출력 위젯을 등록해 보도록 하자.

기본 스킨을 사용하여 코드를 생성한 후 생성된 코드를 복사하여 레이아웃 편집창에 붙여 넣는다.

저장을 누르면 화면에 표시되는 꼬리표 목록 출력 위젯을 볼 수 있다.

화면에 나타난 꼬리표를 클릭하면 정상적으로 잘 동작하는 것을 확인 할 수 있다.
그렇다면 하나의 게시판이 아닌 전체 게시판에 대한 꼬리표 목록을 출력해주도록 하려면 어떻게 해야하는지 알아보도록 하자.
일단 꼬리표 목록 출력 위젯 설정화면을 다시 살펴보도록 하자.

대상 모듈을 선택하는 항목이 다른 위젯처럼 복수개를 선택하거나 하나도 선택하지 않을 수 있게 되어있지 않다. 즉, 무조건 1개의 모듈을 선택해야 한다는 뜻이다.
그렇다면 레이아웃 편집화면을 다시 살펴보도록 하자.

위젯에 mid 라는 이름의 속성으로 선택한 모듈의 이름이 출력되고 있음을 확인할 수 있다. 그렇다면 이 mid 속성을 지우면 어떻게 될까?

위 화면처럼 mid 속성을 지운다음 저장하고 화면을 새로고침 해 보도록 하겠다.

화면을 새로고침하니 위의 화면처럼 모든 게시판에 대한 꼬리표 목록이 출력되는 것을 확인 할 수 있다. 이제 하나의 꼬리표를 클릭해 보도록 하자.
화면은 새로고침 되지만, 아무런 반응이 없을 것이다. 이것은 기존의 1개의 게시판에 대한 검색 코드가 다중 게시판에 맞지 않아 나타나는 현상이다. 하나의 게시판일 경우에는 게시판 목록 화면에서 선택한 꼬리표가 존재하는 리스트만 보여주도록 되어 있다. 그러나 다중 게시판일 경우에는 기준 게시판이 어디이며, 어느 항목을 기준으로 꼬리표를 검색할 것인지를 알 수 없게 되는 것이다.
그렇다면, 어떻게 보여줘야 제대로 보여줄 수 있을까?
꼬리표 목록에서 하나를 클릭하면 해당 꼬리표가 존재하는 게시물을 전체 검색하여 화면에 표시해주는 방법이 가장 적절할 것이다. 또한 꼬리표를 검색하여 리스트를 보여주는 기능은 이미 제로보드XE에 구현되어 있다.
기본으로 지원하는 검색기능을 수행해보도록 하자.

사용하는 레이아웃 스킨에 의해 틀릴 수 있으나 검색을 수행하니 기본으로 제목을 기준으로 검색하여 결과를 화면에 출력해주고 있다.
여기서 가장 중요한 것이 주소표시줄에 표시되는 검색변수들이다.

우리는 궁극적으로 태그를 통한 검색 리스트가 필요하므로 검색종류를 '태그' 로 변경한 후 다시 검색을 수행해 보도록 하자.

검색 결과는 잘 표시되나 주소표시줄에 표시되던 변수들이 다 보이질 않는다. 그렇다면 변수를 직접찾기위해 소스보기를 해보도록 하겠다.

소스코드에서 위와 같이 검색종류를 선택하는 부분을 발견 할 수 있다.
지금까지의 조사를 기반으로 우리가 원하는 목록표시를 위한 검색URL은

위의 화면과 같이
'mid=모듈명&act=IS&is_keyword=검색어&search_target=tag' 임을 발견하게 된다.
그러면 이제 꼬리표 클릭시 위의 URL로 연결되도록 수정해보도록 하자. 울트라 에디트(UltraEdit)를 사용하여 바로 수정하거나, 알FTP같은 FTP클라이언트 프로그램을 이용하여 파일을 다운받은다음 수정후 다시 업로드 하는 방법을 사용하면 된다. 여기에서는 울트라에디트를 이용해서 바로 수정해 보도록 하겠다.
울트라 에디트를 실행 한다음 FTP연결 메뉴로 이동한다.

제로보드XE가 설치되어 있는 계정을 이용하여 FTP로 접속한 후 '제로보드설치루트/widgets/tag_list/skins/blog_tag_list/tags.html' 파일을 오픈한다.

파일을 열어 코드를 보면 아래와 같은 코드를 볼 수 있다.
<!--@if($layout_info->mid)--> <a href="{getUrl('','mid',$widget_info->module_name?$widget_info->module_name:$layout_info->mid,'search_target','tag','search_keyword',$val->tag)}">{htmlspecialchars($val->tag)}</a> <!--@else--> <a href="{getUrl('','mid',$widget_info->mid?$widget_info->mid:$layout_info->mid,'search_target','tag','search_keyword',$val->tag)}">{htmlspecialchars($val->tag)}</a> <!--@end-->
|
$layout_info->mid 변수를 왜 비교하는지는 내 능력상 분석이 불가능 하였다. ㅠㅠ (아시는분 계시면 설명좀 부탁드리겠습니다.)
여기에서 중요한 부분은 <a> 태그의 href 속성에 전달되는 값 부분이다.
{getUrl('','mid',$widget_info->module_name?$widget_info->module_name:$layout_info->mid,'search_target','tag','search_keyword',$val->tag)}
getUrl 이라는 함수를 통해서 URL을 생성하고 있으며 2번째 인자에서부터
변수명, 값 순의 구조를 가지고 있음을 확인 할 수 있다.
그렇다면 2번째 인자에서부터 전달되는 인자를 아까 확인한 태그 검색 리스트 출력용 인자로 교체하면 될것이다.
코드를 아래와 같이 수정한다.
<!--@if($layout_info->mid)--> <a
href="{getUrl('','mid',$mid,'search_target','tag','is_keyword',$val->tag,
'act', 'IS')}">{htmlspecialchars($val->tag)}</a>
<!--@else-->
<a
href="{getUrl('','mid',$mid,'search_target','tag','is_keyword',$val->tag,
'act', 'IS')}">{htmlspecialchars($val->tag)}</a>
<!--@end-->
|
mid 변수에는 현재 선택된 모듈명을 전달하기 위해 $mid 변수값을,
search_target 변수에는 태그 검색을 위해 'tag' 를,
is_keyword 변수에는 현재 태그명을 저장하고 있는 $val->tag 값을,
마지막으로 검색 동작을 위해 act 변수에 'IS' 값을 전달하도록 하자.
수정이 끝났으면 저장한 후 웹페이지를 다시 새로고침하고, 화면에 출력된 꼬리표중에 하나를 클릭해보도록 하자.

주소표시줄에 변수들이 정상적으로 설정되면서 태그에 대한 검색 리스트가 출력되고 있다.
이상, 수고하셨습니다.
안녕하세요. 혹시 위젯으로 회원 권한에 따라서 검색되는 모듈을 정할 수도 있나요?
예를 들어 일기장 게시판의 경우는 관리자만 검색되도록 하고 싶거든요. ^^;
그리고 건의 드리고 싶은게 하나 있는데 옵션을 두어 링크에서
"태그가 검색이 될 지", 아니면 "바로 그 게시물이 있는 게시물을 보여줄지" 선택하는 옵션이 있었으면 좋겠습니다.
^^;
P.S. 여기 글 쓴 날짜가 이상하게 등록되는데 현재 등록 시점은 2010년 2월 16일 오후 4시 33분입니다;;