본문
게시판의 기본스킨외에 몇개의 스킨을 접속자가 선택가능하게 해보자.
1. list.skin.php 에서
<td align=right style='padding-right:3px'>
<?=skin_selecter($board[bo_skin]) ?>
<? if ($admin_href) { ?>
<a href='<?=$admin_href?>'><img src='<?=$board_skin_path?>/img/admin.gif' border=0 width=56 height=18 align=absmiddle></a>
<?}?>
</td>
2. 사용자 정의함수에 추가한다. (ar 빌더에 포함)
ex) /extend/board.lib.php 에 추가..
<?
function skin_selecter($now_skin="") {
global $g4,$board;
if (!$now_skin) $now_skin=$board[bo_skin];
$arr=explode(",",is_bo_extend($board,"선택가능스킨"));
if (sizeof($arr)<1) return "";
$out="<script>
function go_skin_select1(skin) {
if (skin)
document.location='$g4[bbs_path]/board.php?bo_table=$board[bo_table]&change_board_skin='+skin;
}
</script>
<select onchange=go_skin_select1(this.value)>";
$out.="<option value=''>스킨 선택</skin>\n";
foreach($arr as $skin) {
$out.="<option value='$skin' ".($now_skin==$skin?"selected":"").">$skin</skin>\n";
}
$out.="</select>";
$out.="</script>";
return $out;
}
//게시판에서 특수기능이 지정되어 있는가 검색 (보통은 10개 항목) 2009-09-24 김성대
function is_bo_extend($board,$key) {
if (!$key) return "";
for($i=1;$i<=20;$i++) {
$k1="bo_$i"."_subj";
$k2="bo_$i";
if ($board[$k1]==$key) {
//echo "$i,$k1,",$board[$k2],"<BR>";
return $board[$k2];
}
}
return "";
}
?>
3. board.php 와, write.php 의 상단에 확장기능 불러오게 추가함..
@include_once "$g4[bbs_path]/ext.board.head.php";
4. ext.board.head.php 의 내용
//여분필드에 선택가능스킨 라는 항목중에 나열된 스킨으로 현재 스킨을 변경한다. 스킨은 쿠키로 저장됨.
//관련함수 ar.build/lib/ar.board.lib.php
if ($_GET["change_board_skin"]) {
$buff=is_bo_extend($board,"선택가능스킨");
$arr=explode(",",is_bo_extend($board,"선택가능스킨"));
if (in_array($_GET["change_board_skin"],$arr)) {
if (file_exists("$g4[path]/skin/board/$_GET[change_board_skin]/list.skin.php")) {
set_session("bskin_$bo_table",$_GET["change_board_skin"]);
}
}
//echo get_cookie("board_head_hide");
//goto_url("$g4[bbs_path]/board.php?bo_table=$bo_table");
}
if ($buff=get_session("bskin_$bo_table")) {
$board[bo_skin]=$buff;
$board_skin_path = "{$g4['path']}/skin/board/{$board['bo_skin']}"; // 게시판 스킨 경로
}
5. 여분필드중에 하나에
선택가능스킨 이라는 제목에
사용허용할 스킨들을 ,로 구별하여 입력.
예) ar.bada_memo,ar.bada_memo2,ar.bada_memo3,ar.bada_memo4
댓글목록
김굴비님의 댓글
김굴비 작성일
Fatal error: Call to undefined function is_bo_extend() in /home/****/public_html/extend/ext.board.head.php on line 8
이 에러문구 수정 어떻게 처리해야할까요?
로빈아빠님의 댓글
로빈아빠 작성일
ext.board.head.php 파일에 다음내용을 추가해주시면 될듯합니다.
if (!function_exists("is_bo_extend")) {
//게시판에서 특수기능이 지정되어 있는가 검색 (보통은 10개 항목) 2009-09-24 김성대
function is_bo_extend($board,$key) {
global $g4;
if (!$key) return "";
for($i=1;$i<=10;$i++) {
$k1="bo_$i"."_subj";
$k2="bo_$i";
if ($board[$k1]==$key) {
$g4["bo_$key"]=$i;
//echo "$i,$k1,",$board[$k2],"<BR>";
return $board[$k2];
}
}
return "";
}
}
김굴비님의 댓글
김굴비 작성일
현재 일반 그누보드 4.31.09 (09.07.10)를 사용하고 있습니다
위의 구문을 추가했더니 새로운 오류가 떳네요
Fatal error: Cannot redeclare is_bo_extend() (previously declared in /home/a/public_html/extend/ext.board.head.php:10) in /home/a/public_html/extend/board.lib.php on line 37
------------------------------------------------------------------------------------------------------------
<?php
if (!defined('_GNUBOARD_')) exit; //정상적인방법이 아닌경우 차단
//여분필드에 선택가능스킨 라는 항목중에 나열된 스킨으로 현재 스킨을 변경한다. 스킨은 쿠키로 저장됨.
//관련함수 ar.build/lib/ar.board.lib.php
//http://freeimage.kr/bbs/board.php?bo_table=tip_gnu&wr_id=60&page=2&sca=&sfl=wr_subject%7C%7Cwr_content&stx=ip&spt=0&page=2&cwin=#c_224
if (!function_exists("is_bo_extend")) {
//게시판에서 특수기능이 지정되어 있는가 검색 (보통은 10개 항목) 2009-09-24 김성대
function is_bo_extend($board,$key) {
global $g4;
if (!$key) return "";
for($i=1;$i<=10;$i++) {
$k1="bo_$i"."_subj";
$k2="bo_$i";
if ($board[$k1]==$key) {
$g4["bo_$key"]=$i;
//echo "$i,$k1,",$board[$k2],"<BR>";
return $board[$k2];
}
}
return "";
}
}
if ($_GET["change_board_skin"]) {
$buff=is_bo_extend($board,"선택가능스킨");
$arr=explode(",",is_bo_extend($board,"선택가능스킨"));
if (in_array($_GET["change_board_skin"],$arr)) {
if (file_exists("$g4[path]/skin/board/$_GET[change_board_skin]/list.skin.php")) {
set_session("bskin_$bo_table",$_GET["change_board_skin"]);
}
}
//echo get_cookie("board_head_hide");
//goto_url("$g4[bbs_path]/board.php?bo_table=$bo_table");
}
if ($buff=get_session("bskin_$bo_table")) {
$board[bo_skin]=$buff;
$board_skin_path = "{$g4['path']}/skin/board/{$board['bo_skin']}"; // 게시판 스킨 경로
}
?>
------------------------------------------------------------------------------------------------------------
로빈아빠님의 댓글
로빈아빠 작성일
is_bo_extend 함수가 중복되어서 그런것인데요..
이 소스에서 is_bo_extend 단어를 is_bo_extend2로 바꾸면 됩니다.^^
함수명을 다르게 해서 중복을 피하는것이지요.