1강에서는 단순하게 확장변수를 게시판에 적용하는 방법을 공부했다면,
2강부터는 확장변수를 XE함수와 함께 게시판파일들을 수정,적용하여 활용하는 방법을 공부합니다.
먼저 오늘의 팁들을 게시판파일들에 적용을 할려면 최소한 파일에디터기 정도는 다룰줄 알아야 합니다.
파일에디터기를 간략히 소개하자면 저 같은 경우는 EditPlus V3.10을 사용합니다.
그 외에도 울트라에디터, 아크로에디터, NotePad++등등이 있습니다.
자신에게 맞는 에디터기를 골라서 사용방법을 손에 익히셔야 에디터작업을 하는데 불편함이 없습니다.
윈도우에 기본으로 내장되어 있는 노트패드나 워드패드 같은 에디터기로 작업을 하시면 안됩니다.
UTF-8로 저장을 할 수 없기 때문입니다. XE core프로그램은 UTF-8로 언어가 저장되어야 합니다.
더불어 한가지 더 이야기하자면 에디터기에서 내장FTP로 접속을 해서 파일들을 불러오고 수정할 수 있는 기능을 잘 활용해야 합니다. 그렇지 않을 경우 파일을 FTP로 접속해서 내려받아서 에디터기로 편집후 다시 FTP로 올리는 번거로운 작업을 해야만 합니다. 보통의 에디터기의 경우 FTP가 내장되어 있습니다. 사용방법은 각 프로그램마다인터넷검색을 하시면 나와 있는 것이 있을 것입니다.
그럼 본격적으로 확장변수를 게시판에 활용하는 방법을 설명합니다.
XE에서 사용하는 ./modules/board/skins/xe_official 기본게시판을 기준으로 했을때
확장변수를 나타내는 부분이 두군데 나옵니다.
write_form.html -- 글작성시 확장변수부분
view_document.html -- 글내용 보기시 확장변수부분
write_form.html 안의 코드입니다.
<tr>
<th scope="row">{$val->name} <!--@if($val->is_required=='Y')--><em>*</em><!--@end--></th>
<td>{$val->getFormHTML()}</td>
</tr>
<!--@endforeach-->
관리자페이지에서 추가한 확장변수부분이 글작성시에 출력되는 내용입니다.
여기서 확장변수를 응용해 보겠습니다.
<!--@if($val->name!="샘플보기 && $val->name!="강의상태" || $grant->manager)-->
<tr>
<th scope="row">{$val->name} <!--@if($val->is_required=='Y')-->*<!--@end--></th>
<td>{$val->getFormHTML()}</td>
</tr>
<!--@else-->
<tr>
<th scope="row">{$val->name} <!--@if($val->is_required=='Y')-->*<!--@end--></th>
<td>{$val->getFormHTML()}</td>
</tr>
<!--@endif-->
<!--@endforeach-->
위와 같이 노란색부분을 추가합니다.
<!--@if($val->name!="샘플보기" || $grant->manager)-->
해석은
$val->name! = -- 지정한 "입력항목이름"이 아니란 뜻입니다. (여기서 ! 가 아니란 뜻입니다.)
"샘플보기" -- 이 부분은 "입력항목이름"부분이 됩니다. 1장에서 말한 제목에 해당됩니다.
이 강의노트 게시판의 경우 샘플보기, 강의상태 부분이 되겠죠
|| $grant->manager -- 이 부분은 XE 회원권한 내부함수인 "관리그룹이면" 이란 뜻입니다.
종합해 보면 "입력항목이름"중에서 샘플보기 and 강의상태 이 부분을 관리자그룹은 글작성시 출력되고 일반적으로는 출력이 안 되게 한다는 내용입니다.
왜! 필요할까요. 확장변수를 추가해야 하는데 굳이 일반적으로는 보이고 싶지 않고 관리자만 보고 싶은 내용이 있을 수 있습니다. 예를 들자면 상담내용후의 결과라던지 관리자의 견해 같은 경우가 되겠죠.
자 그럼 이 코드에서 "샘플보기" "강의내용" 이 부분을 직접적으로 적어주면 다른 게시판에서나 이름 변경시 문제가 되겠죠. 그래서 이 부분을 함수로 직접 만들어서 적용을 해야 합니다.
skin.xml파일에 함수를 추가합니다.
<title xml:lang="ko">입력항목 이름1</title>
<description xml:lang="ko">이미지로 출력하고 싶은 입력항목1의 이름을 적어주세요.</description>
</var>
<var name="extra_val_name2" type="text">
<title xml:lang="ko">입력항목 이름2</title>
<description xml:lang="ko">이미지로 출력하고 싶은 입력항목2의 이름을 적어주세요.</description>
</var>
그리고 "샘플보기" "강의상태" 이부분을
$module_info->extra_val_name1 / $module_info->extra_val_name2 이렇게 바꾸어 주면 됩니다.
참고로 extra_val_name1 이 부분들은 편집하시는 분이 임의의 이름으로 주시면 됩니다.
(예 : a1 / a2 이렇게 하셔도 된다는 뜻입니다)
그리고 게시판스킨관리에 들어가서 입력항목 이름1 / 입력항목 이름2 이 항목들에 샘플보기 / 강의상태를 적어주시면 해당 항목이 글작성시 히든으로 됩니다. 물론 관리자는 보이겠죠.
[ 최종소스 ]
[ 관리자가 본 글작성 ]
[ 일반적으로 본 글작성 ]
<block loop="$extra_keys=>$key,$val">
<!--@if($val->name!=$module_info->extra_val_name1 || $grant->manager)-->
<tr>
<th scope="row"><block cond="$val->is_required=='Y'">*</block> {$val->name}</th>
<td>{$val->getFormHTML()}</td>
</tr>
<!--@else-->
<tr>
<th scope="row">{$val->name} <!--@if($val->is_required=='Y')-->*<!--@end--></th>
<td>{$val->getFormHTML()}</td>
</tr>
<!--@endif-->
</block>
이 부분을 찾아서 위처럼 해주고 skin.xml에도 설명하신 것 처럼 추가 해주고 했는데도 안되네요. 저는 1개 항목만 가리면 되서 extra_val_name1 한 개만 추가했습니다. 그리고 게시판 스킨관리에서 답변상황이라고 항목이름을 줬습니다.