사이트 내 전체검색
그누보드
게시판의 스킨 선택기능
최고관리자
https://cmd.kr/gnu/60 URL이 복사되었습니다.

본문

게시판의 기본스킨외에 몇개의 스킨을  접속자가 선택가능하게 해보자.
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

댓글목록

김굴비님의 댓글

profile_image 김굴비 작성일

Fatal error: Call to undefined function is_bo_extend() in /home/****/public_html/extend/ext.board.head.php on line 8


이 에러문구 수정 어떻게 처리해야할까요?

로빈아빠님의 댓글

profile_image 로빈아빠 작성일

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 "";
        }

}

김굴비님의 댓글

profile_image 김굴비 작성일

현재 일반 그누보드 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']}"; // 게시판 스킨 경로
}

?>
------------------------------------------------------------------------------------------------------------

로빈아빠님의 댓글

profile_image 로빈아빠 작성일

is_bo_extend 함수가 중복되어서 그런것인데요..
이 소스에서 is_bo_extend 단어를 is_bo_extend2로 바꾸면 됩니다.^^
함수명을 다르게 해서 중복을 피하는것이지요.

그누보드
190 (4/4P)

Search

Copyright © Cmd 명령어 3.129.247.250