테이블 한개로 서로다른스킨적용 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

테이블 한개로 서로다른스킨적용 정보

테이블 한개로 서로다른스킨적용

본문

아래에 소스 설명 합니다.

원본화일은 아래 주소에서 다운 받으시면 됩니다.

http://sir.co.kr/bbs/tb.php/g4_skin/41702
추천
0

댓글 22개

list.skin.php  (php5)- 제가 쓰는 코드로
===================================================================
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<?


if($stx)
{
  $mct    =  "wr_id='$stx'";  //고유값에러발생을 싶게 수정하기 위해서 아래 과정을 거침
  $sub_row = cat_all("select * from $basic_table where  $mct");
  if(!$sub_row){
    include_once("$board_skin_path/skin/$sca/list1.skin.php");//값을 가져오지
  }
  else{
  foreach($sub_row as $row)
  {
    include_once("$board_skin_path/skin/$sca/$row[wr_6]");   
  }}
 
}


?>
list.skin.php  (php4,  구누보드가 쓰는 코드로)
====================================================================

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<?
  $basic_table = " g4_write_$bo_table ";
if($stx)
{
  $mct    =  "wr_id='$stx'";  //고유값에러발생을 싶게 수정하기 위해서 아래 과정을 거침
  $sql = " select * from $basic_table where  $mct";
  $sub_row = sql_query($sql);

  if(!$sub_row)  // 에러 발생을 임시로 막기 위해서 업을경우에는 기본 스킨을 불러옴
  {
    include_once("$board_skin_path/skin/$sca/list1.skin.php");//값을 가져오지
  }
  else{
 while ($row = sql_fetch_array($sub_row))  // 설정된 값이 있는경우 정상적으로 불러옴
  {
    include_once("$board_skin_path/skin/$sca/$row[wr_6]");   
  }} 
}


?>
위 구문설명입니다.

1. 어떤 분류된 링크 페이지를 누를경우.
예) 전기제품  <<---- 이걸 눌렀을경우.
링크주소 형식이 아래처럼 구사하였습니다.
$shop_menu  .= "";
$shop_menu  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
$shop_menu  .= "&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]";
$shop_menu  .= "&ssq=$row[wr_comment]";
$shop_menu  .= "&ssr=$row[wr_comment_reply]";
$shop_menu  .= "\">";
$shop_menu  .=  $row[wr_content];
$shop_menu  .= "</A>";
$shop_menu  .= "&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;"; 

^^ 복잡하죠..  저도 해석불가합니다.
중요한건 어떤 변수 $stx  <<== 여기에 고유값을 보냅니다.  wr_id 값 11을 보냈다고 가정합니다.  테이블에 11필드에는  wr_6 여분필드에 skin 경로를 저장했다고 가정을 합니다.
ㅎㅎ 제가 생각해도 황당한 생각으로 만들었으니 이해해 주세요.
===============================================================================

그럼 아래처럼.. $stx  11 이라는 값을 보냈으니 .. list.skin.php 에서 11필드에 에 어떤 정보가 들어 있는지 검색을 해서 뽑아야 겠죠.

  $mct    =  "wr_id='$stx'";  //11에 무슨 정보가 있는지 찾아보라.....
  $sql = " select * from $basic_table where  $mct";
  $sub_row = sql_query($sql);
================================================================================
wr_id = 11  인 여분필드 wr_6 에는 스킨을 미리 약속 해놨어요..
(물론.. wr_6 에  경로 지정은 맨 아래줄에 설명하겠습니다. )

 while ($row = sql_fetch_array($sub_row))  // 설정된 값이 있는경우 정상적으로 불러옴
  {
    include_once("$board_skin_path/skin/$sca/$row[wr_6]");   
  }}

위처럼  $row[wr_6]  <<---요기에 디렉토리에서 보여주는 스킨을 미리 입력을 한 상태죠..
 list1.skin.php  <<=== wr_6에  스킨 지정할수 있도록 한거죠...

즉, 어떤 관리자 페이지가 있다고 가정을 하고요.. 거기서 해당 분류에 스킨지정을 할 경우..
바로 적용이 되겠끔 한거죠.
수고하셨습니다.....^^

그러나 언제나 늘 항상 하나가 아닌 여러개로....

부디 포인트 대박 나셔서 대항밍궁 좀 사가세요?........네.....!
그럼 어떻게 구누보드에서  서로 다른 스킨을 적용했는데...해당 내용만 뽑아올수 있는가...라는 문제점이 생기더라고요.

다른말로 하면.. 서로다른 스킨적용은 가능한데  등록된 내용, 즉 같은 분류에 속한 내용만 불러와야 하잖아요....  아래 링크주소를 유심히 보셔야 해요.

====================================================================
$shop_menu  .= "";
$shop_menu  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
$shop_menu  .= "&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]";
$shop_menu  .= "&ssq=$row[wr_comment]";
$shop_menu  .= "&ssr=$row[wr_comment_reply]";
$shop_menu  .= "\">";
$shop_menu  .=  $row[wr_content];
$shop_menu  .= "</A>";
=====================================================================
아래 실재로 적용한 페이지 입니다.
http://pkgtest.mireene.com/gnu/bbs/board.php?bo_table=mproduct&sca=shop&sfl=wr_1&stx=10&sop=and&ssp=10&ssq=1&ssr=

위 주소는 서로다른스킨과  같은 부류에 속한 내용들을 불러오는거죠...

1.bo_table  은 mproduct  테이블을 불러오고요.
2. sca  는 shop  대분류고요.
3. &sfl=wr_1&stx=10&sop=and&ssp=10&ssq=1&ssr=
 3번이 중요해용.  stx=10  을 설명했으니 생략 하고요, 
=============
&sfl=wr_1  <<=== 이게 가장 중요합니다.
=============
설명보단 실재로 해보시는게 좋아요.. 지금보는 페이지 멘 아래 검색 패이지 보이죠....거기서 검색 분류를 "제목"이라고 하고...dddddd  이런 내용을 넣어보세요..
view.skin.php 도 위처럼 하시면 됩니다.
*************************************************
제목을 클릭하면 링크주소에서 문제 생깁니다.  view.skin.php도 결국 서로다른 스킨이 적용되야 하는 부분이 생깁니다.. (만들다보니 그런 문제 해결이 있어야 하더라고요)

결국 아래처럼 적용합니다.

list.skin.php 에 추가되어야 할 사항입니다.
-----------------------------------------------------------------
$search  .= "&sca=$sca";
$search  .= "&sfl=$sfl";
$search  .= "&stx=$stx";
$search  .= "&sop=$sop";
$search  .= "&and&ssp=$ssp";
$search  .= "&ssq=&$ssq";
$search  .= "&ssr=&$ssr";


$write_href  .= "&sca=$sca";
$write_href  .= "&sfl=$sfl";
$write_href  .= "&stx=$stx";
$write_href  .= "&sop=$sop";
$write_href  .= "&and&ssp=$ssp";
$write_href  .= "&ssq=&$ssq";
$write_href  .= "&ssr=&$ssr";

$list_href  .= "&sca=$sca";
$list_href  .= "&sfl=$sfl";
$list_href  .= "&stx=$stx";
$list_href  .= "&sop=$sop";
$list_href  .= "&and&ssp=$ssp";
$list_href  .= "&ssq=&$ssq";
$list_href  .= "&ssr=&$ssr";

$reply_href  .= "&sca=$sca";
$reply_href  .= "&sfl=$sfl";
$reply_href  .= "&stx=$stx";
$reply_href  .= "&sop=$sop";
$reply_href  .= "&and&ssp=$ssp";
$reply_href  .= "&ssq=&$ssq";
$reply_href  .= "&ssr=&$ssr";

--------------------------------------------------------------------

위와 같은 구문이 list.skin.php  또는 어떤 공통페이지에 들어가야 합니다.

** 디렉토리에서 실재로 스킨적용하는 부분은  일 하고 아래에 올릴게요
view.skin.php 는 아래와 같습니다.(원리는 list.skin.php 랑 같습니다. 설명 생략)

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
?>
<?
if($stx)
{
  $mct    =  "wr_id='$stx'";  //고유값에러발생을 싶게 수정하기 위해서 아래 과정을 거침
  $sub_row = cat_all("select * from $basic_table where  $mct");
  if(!$sub_row)
  {
    include_once("$board_skin_path/skin/$sca/list1.skin.php");//값을 가져오지
  }
  else{
  foreach($sub_row as $row)
  {
    include_once("$board_skin_path/skin/$sca/view/$row[wr_2]");   
  }}
 
}

?>
****************************************************************
그럼 서로다른 스킨은 db 에 넣고 불러오기를 설명하겠습니다.
원본소스는 코멘트에 올립니다.
****************************************************************
아래는 board/mproduct/skin/  에서 해당 분류를 불러오는부분입니다.  즉, 서버의 폴더를 검색해서 원하는 스킨을  db 에 삽입하는거죠..

당연. 구누보드 소스코드중 일부입니다.

<select name="wr_6" class=ed id="wr_6" itemname="스킨지정" required value="<?=$wr_6?>"> 
          <?
            $skin_row = "";
            $arr = shop_skin("board/mproduct/skin/");
      for ($k=0; $k<count($arr); $k++)
              {
                  $option = $arr[$k];
                  if (strlen($option) > 10)
                  $option = substr($arr[$k], 0, 18) . "…";
                    echo '<option value="';
                    echo $arr[$k];
                    echo '"';
                  if ($arr[$k] == $data[$m_ta_skin]) 
                  echo 'selected';
                  echo '>';
                  echo  $option;
                  echo "\n";
                  } 
                  ?>
                  </select>

-------------------------------------------------------------
위 구문에 사용된 개인 함수는 아래와 같습니다.
// 구누보드 함수에 나와 있는 함수를 살짝 적용했습니다.
function shop_skin($skin,$len='')
{

  $result_array = array();
  $dirname = "../skin/$skin";
  $handle  = opendir($dirname);
  while ($file = readdir($handle))
  {
    if($file == "."||$file == "..") continue;
   
    if(is_dir($dirname.$file)) $result_array[] = $file;
  }
  closedir($handle);
  sort($result_array);
 
  return $result_array;
}
write.skin.php 원본입니다. (즉, wr_6 필드에 개별 스킨등록하기)
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

if ($is_dhtml_editor) {
    include_once("$g4[path]/lib/cheditor.lib.php");
    echo "<script src='$g4[editor_path]/cheditor.js'></script>";
    echo cheditor1('wr_content', $content);
}
?>

<script language="javascript">
// 글자수 제한
var char_min = parseInt(<?=$write_min?>); // 최소
var char_max = parseInt(<?=$write_max?>); // 최대
</script>

<form name="fwrite" method="post" action="javascript:fwrite_check(document.fwrite);" enctype="multipart/form-data" style="margin:0px;">
<input type=hidden name=null>
<input type=hidden name=w        value="<?=$w?>">
<input type=hidden name=bo_table value="<?=$bo_table?>">
<input type=hidden name=wr_id    value="<?=$wr_id?>">
<input type=hidden name=sca      value="<?=$sca?>">
<input type=hidden name=sfl      value="<?=$sfl?>">
<input type=hidden name=stx      value="<?=$stx?>">
<input type=hidden name=spt      value="<?=$spt?>">
<input type=hidden name=sst      value="<?=$sst?>">
<input type=hidden name=sod      value="<?=$sod?>">
<input type=hidden name=page    value="<?=$page?>">

<table width="<?=$width?>" align=center cellpadding=0 cellspacing=0><tr><td>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<colgroup width=100>
<colgroup width=''>
<tr><td colspan=2 height=2 bgcolor=#b0adf5></td></tr>
<tr><td style='padding-left:10px' colspan=2 height=38 bgcolor=#f8f8f9><strong><?=$title_msg?></strong></td></tr>

<? if ($is_name) { ?>
<tr>
    <td style='padding-left:10px; height:30px;'>· 이름</td>
    <td><input class=ed maxlength=20 size=15 name=wr_name itemname="이름" required value="<?=$name?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_password) { ?>
<tr>
    <td style='padding-left:10px; height:30px;'>· 패스워드</td>
    <td><input class=ed type=password maxlength=20 size=15 name=wr_password itemname="패스워드" <?=$password_required?>></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_email) { ?>
<tr>
    <td style='padding-left:10px; height:30px;'>· 이메일</td>
    <td><input class=ed maxlength=100 size=50 name=wr_email email itemname="이메일" value="<?=$email?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_homepage) { ?>
<tr>
    <td style='padding-left:10px; height:30px;'>· 홈페이지</td>
    <td><input class=ed size=50 name=wr_homepage itemname="홈페이지" value="<?=$homepage?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_notice || $is_html || $is_secret || $is_mail) { ?>
<tr>
    <td style='padding-left:10px; height:30px;'>· 옵션</td>
    <td><? if ($is_notice) { ?><input type=checkbox name=notice value="1" <?=$notice_checked?>>공지&nbsp;<? } ?>
        <? if ($is_html) { ?>
            <? if ($is_dhtml_editor) { ?>
            <input type=hidden value="html1" name="html">
            <? } else { ?>
            <input onclick="html_auto_br(this);" type=checkbox value="<?=$html_value?>" name="html" <?=$html_checked?>><span class=w_title>html</span>&nbsp;
            <? } ?>
        <? } ?>
        <? if ($is_secret) { ?>
            <? if ($is_admin || $is_secret==1) { ?>
            <input type=checkbox value="secret" name="secret" <?=$secret_checked?>><span class=w_title>비밀글</span>&nbsp;
            <? } else { ?>
            <input type=hidden value="secret" name="secret">
            <? } ?>
        <? } ?>
        <? if ($is_mail) { ?><input type=checkbox value="mail" name="mail" <?=$recv_email_checked?>>답변메일받기&nbsp;<? } ?></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>


<tr>
    <td style='padding-left:20px; height:30px;'>· 분류</td>
    <td>
    <select name=ca_name required itemname="분류">
    <option value="">선택하세요
          <?php
  $mta        = "g4_write_";
  $mta      .= $bo_table;
  $mct        =  "wr_is_comment='0'";
  $mct      .=  "and wr_comment='0'";
  $mct      .=  "and wr_5=''";
/*  추가 조건검색시
$mct      .=  " and wr_parent = ''  ";
        */
          $cat_array = cat_all("select * from $mta where $mct");
          foreach ($cat_array as $row)
          {
              echo '<option value="';
              echo $row['ca_name'];
              echo '"';
                if($row['ca_name'] ==  $sca)
              echo 'selected';
              echo '>';
              echo $row['wr_subject'];
              echo "\n";
          }
          ?>
    </select></td></tr>


<tr>
    <td style='padding-left:10px; height:30px;'>· [사용목적]</td>
    <td><input  class=ed style="width:405;" name=wr_subject id="wr_subject" itemname="제목" required value="<?=$subject?>"></td></tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<tr>
    <td style='padding-left:10px; height:30px;'>· [연관코드]-[이름]</td>

    <td><input class=ed style="width:200;" name=wr_5 id="wr_5" itemname="고유코드" required value="<?=$wr_5?>">
<br>* 연관코드 아래의 분류는 연관코드값을 받아야함.
</td></tr>
<tr>
    <td style='padding-left:10px; height:30px;'>· [스킨지정]</td>

    <td>

<select name="wr_6" class=ed id="wr_6" itemname="스킨지정" required value="<?=$wr_6?>"> 
          <?
            $skin_row = "";
            $arr = shop_skin("board/mproduct/skin/");
      for ($k=0; $k<count($arr); $k++)
              {
                  $option = $arr[$k];
                  if (strlen($option) > 10)
                  $option = substr($arr[$k], 0, 18) . "…";
                    echo '<option value="';
                    echo $arr[$k];
                    echo '"';
                  if ($arr[$k] == $data[$m_ta_skin])
                  echo 'selected';
                  echo '>';
                  echo  $option;
                  echo "\n";
                  } 
                  ?>
                  </select>
</td></tr>



<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<tr>
    <td style='padding-left:10px;'>· 분류내용설명</td>
    <td style='padding:5 0 5 0;'>
        <? if ($is_dhtml_editor) { ?>
            <?=cheditor2('fwrite', 'wr_content', '405', '100');?>
        <? } else { ?>
        <table width=400 cellpadding=0 cellspacing=0>
        <tr>
            <td width=50% align=left valign=bottom>
                <span style="cursor: pointer;" onclick="textarea_decrease('wr_content', 10);"><img src="<?=$board_skin_path?>/img/up.gif"></span>
                <span style="cursor: pointer;" onclick="textarea_original('wr_content', 10);"><img src="<?=$board_skin_path?>/img/start.gif"></span>
                <span style="cursor: pointer;" onclick="textarea_increase('wr_content', 10);"><img src="<?=$board_skin_path?>/img/down.gif"></span></td>
            <td width=50% align=right><? if ($write_min || $write_max) { ?><span id=char_count></span>글자<?}?></td>
        </tr>
        </table>
        <textarea id="wr_content" name="wr_content" class=tx style='width:405; word-break:break-all;' rows=3 itemname="분류내용설명" required
        <? if ($write_min || $write_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?}?>><?=$content?></textarea>
        <? if ($write_min || $write_max) { ?><script language="javascript"> check_byte('wr_content', 'char_count'); </script><?}?>
        <? } ?>
        </td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>



<? if ($is_file) { ?>
<tr>
    <td style='padding-left:20px; height:30px;'><table cellpadding=0 cellspacing=0><tr><td style=" padding-top: 10px;">· 파일 <span onclick="add_file();" style='cursor:pointer; font-family:tahoma; font-size:12pt;'>+</span> <span onclick="del_file();" style='cursor:pointer; font-family:tahoma; font-size:12pt;'>-</span></td></tr></table></td>
    <td style='padding:5 0 5 0;'><table id="variableFiles" cellpadding=0 cellspacing=0></table><?// print_r2($file); ?>
        <script language="JavaScript">
        var flen = 0;
        function add_file(delete_code)
        {
            var upload_count = <?=(int)$board[bo_upload_count]?>;
            if (upload_count && flen >= upload_count)
            {
                alert("이 게시판은 "+upload_count+"개 까지만 파일 업로드가 가능합니다.");
                return;
            }

            var objTbl;
            var objRow;
            var objCell;
            if (document.getElementById)
                objTbl = document.getElementById("variableFiles");
            else
                objTbl = document.all["variableFiles"];

            objRow = objTbl.insertRow(objTbl.rows.length);
            objCell = objRow.insertCell(0);

            objCell.innerHTML = "<input type='file' class=ed size=32 name='bf_file[]' title='파일 용량 <?=$upload_max_filesize?> 이하만 업로드 가능'>";
            if (delete_code)
                objCell.innerHTML += delete_code;
            else
            {
                <? if ($is_file_content) { ?>
                objCell.innerHTML += "<br><input type='text' class=ed size=50 name='bf_content[]' title='업로드 이미지 파일에 해당 되는 내용을 입력하세요.'>";
                <? } ?>
                ;
            }

            flen++;
        }

        <?=$file_script; //수정시에 필요한 스크립트?>

        function del_file()
        {
            // file_length 이하로는 필드가 삭제되지 않아야 합니다.
            var file_length = <?=(int)$file_length?>;
            var objTbl = document.getElementById("variableFiles");
            if (objTbl.rows.length - 1 > file_length)
            {
                objTbl.deleteRow(objTbl.rows.length - 1);
                flen--;
            }
        }
        </script></td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_trackback) { ?>
<tr>
    <td style='padding-left:20px; height:30px;'>· 트랙백주소</td>
    <td><input class=ed size=50 name=wr_trackback itemname="트랙백" value="<?=$trackback?>">
        <? if ($w=="u") { ?><input type=checkbox name="re_trackback" value="1">핑 보냄<? } ?></td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<? if ($is_norobot) { ?>
<tr>
    <td style='padding-left:20px; height:30px;'>· <?=$norobot_str?></td>
    <td><input class=ed type=input size=10 name=wr_key itemname="자동등록방지" required>&nbsp;&nbsp;* 왼쪽의 글자중 <font color="red">빨간글자만</font> 순서대로 입력하세요.</td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
<? } ?>

<tr><td colspan=2 height=1 bgcolor=#000000></td></tr>
</table>

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
    <td width="100%" height="30" background="<?=$board_skin_path?>/img/write_down_bg.gif"></td>
</tr>
<tr>
    <td width="100%" align="center" valign="top">
        <input type=image id="btn_submit" src="<?=$board_skin_path?>/img/btn_write.gif" border=0 accesskey='s'>&nbsp;
        <a href="./board.php?bo_table=<?=$bo_table?>&sca=<?=$sca?>"><img id="btn_list" src="<?=$board_skin_path?>/img/btn_list.gif" border=0></a></td>
</tr>
</table>

</td></tr></table>
</form>

<script language="javascript">
<?
// 관리자라면 분류 선택에 '공지' 옵션을 추가함
if ($is_admin)
{
    echo "
    if (typeof(document.fwrite.ca_name) != 'undefined')
    {
        document.fwrite.ca_name.options.length += 1;
        document.fwrite.ca_name.options[document.fwrite.ca_name.options.length-1].value = '공지';
        document.fwrite.ca_name.options[document.fwrite.ca_name.options.length-1].text = '공지';
    }";
}
?>

with (document.fwrite) {
    if (typeof(wr_name) != "undefined")
        wr_name.focus();
    else if (typeof(wr_subject) != "undefined")
        wr_subject.focus();
    else if (typeof(wr_content) != "undefined")
        wr_content.focus();

    if (typeof(ca_name) != "undefined")
        if (w.value == "u")
            ca_name.value = "<?=$write[ca_name]?>";
}

function html_auto_br(obj) {
    if (obj.checked) {
        result = confirm("자동 줄바꿈을 하시겠습니까?\n\n자동 줄바꿈은 게시물 내용중 줄바뀐 곳을<br>태그로 변환하는 기능입니다.");
        if (result)
            obj.value = "html2";
        else
            obj.value = "html1";
    }
    else
        obj.value = "";
}

function fwrite_check(f) {
    var s = "";
    if (s = word_filter_check(f.wr_subject.value)) {
        alert("제목에 금지단어('"+s+"')가 포함되어있습니다");
        return;
    }

    if (s = word_filter_check(f.wr_content.value)) {
        alert("내용에 금지단어('"+s+"')가 포함되어있습니다");
        return;
    }

    if (char_min > 0 || char_max > 0) {
        var cnt = parseInt(document.getElementById('char_count').innerHTML);
        if (char_min > 0 && char_min > cnt) {
            alert("내용은 "+char_min+"글자 이상 쓰셔야 합니다.");
            return;
        }
        else if (char_max > 0 && char_max < cnt) {
            alert("내용은 "+char_max+"글자 이하로 쓰셔야 합니다.");
            return;
        }
    }

    if (typeof(f.wr_key) != "undefined") {
        if (hex_md5(f.wr_key.value) != md5_norobot_key) {
            alert("자동등록방지용 빨간글자가 순서대로 입력되지 않았습니다.");
            f.wr_key.focus();
            return;
        }
    }

    <?
    if ($is_dhtml_editor) {
        echo cheditor3('wr_content');
        echo "if (!document.getElementById('wr_content').value) { alert('내용을 입력하십시오.'); return; } ";
    }
    ?>

    document.getElementById('btn_submit').disabled = true;
    document.getElementById('btn_list').disabled = true;

    f.action = "./write_update.php";
    f.submit();
}
</script>

<script language="JavaScript" src="<?="$g4[path]/js/board.js"?>"></script>
<script language="JavaScript">
window.onload=function() {
    drawFont();
}
</script>
doc.lic.php  ( 사이트 빌더를 조정하는 핵심파일입니다.)
파일의 내용은  db에 설정된 자료를 불러와서 각각의 해당 스킨을 불러오는..
실재 사이트 빌더를 조정하는 기능입니다.

아래 파일 잘 검토 하시면 또다른 좋은 프로그램이 나오지 않을가 해용. m,,m
** 설명불가능**
==================================================================

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
  //스킨환경
  include_once("../m_common.php");
 
  //m_shop skin경로정의
  $m_shop_path = "../m_shop/skin";
  $basic_table = "g4_write_mproduct";
  $se_table    = 'mproduct';
  //검색 콜롬을 정의함
  //로고스킨작업시작
  $scat_row = cat_all("select * from $basic_table where wr_10 = 'logo'");
  //검색된 스킨이 없는경우 기본으로 설정함
  if($scat_row == 0)
  {
  $shop_logo = "<A href=\"../m_shop/index.php?lag=eng\"><IMG height=59 alt=\"MY DEMO PAGE MOVE \" hspace=3
src=\"http://images.google.co.kr/images?q=tbn:61HfEcrz8RMMoM:http://johnbokma.com/bokma-gnu.png\"  border=0></A>";

  }
  else
  {
      $wr_subject = "";
      foreach($scat_row as $row)
      {
          $wr_subject .=  $row[wr_subject];
      }
  // 기초테이블에서 LOGO관련 스킨경로가 있는경우 적용함
  $shop_logo = "<A href=\"board.php?bo_table=$se_table\"><IMG height=59 alt=\"MY HOME 이동\" hspace=3
src=\"http://www.google.co.kr/images/google_sm.gif\" width=143 vspace=5 border=0></A>";
  }
 
//상단메뉴 srart
  $mct    .=  " wr_parent = '3'  ";
  $mct    .=  " and wr_is_comment = '1' ";
  $mct    .=  " and wr_comment_reply = '' ";

  $cat_row = cat_all("select * from $basic_table where  $mct");

    if($cat_row == 0)
  {
  $shop_menu =  '해당분류값이 존재하지 않습니다. ';
  }
  else
  {
      $shop_menu = "";
      //부목값이 있다는 가정속에 그 하위 자식들을 불러옴
      foreach($cat_row as $row){
  $shop_menu .=  $row[wr_content];

      }

  }
 //상단메뉴 end

  $cat_all  =  cat_all("select * from $basic_table where  wr_id = '3'");
  $ssca = "";

  foreach($cat_all as $data)
  {
  $ssca .= $data[wr_6];

  }

  //1차분류 선택시 2차분류나열 (좌측메뉴스킨적용), 없으면 대분류값을 보여줌.
  //상단메뉴를 고정시키고 좌측 메뉴를 서로 다르게 나열하기.
  //shop_관련된 메뉴와 분류는 sca 값을 20 으로 약속함
  $sct    =  "wr_parent='3'"; 
  $sct    .=  " and wr_is_comment > '0'  ";
  $sct    .=  " and wr_comment_reply = '' ";
  $cat_row = cat_all("select * from $basic_table where  $sct");
    if($cat_row == 0)
  {
  $shop_menu =  'NOT CATEGORY.';
  }
  else
  {
      $shop_menu = "";
      //부목값이 있다는 가정속에 그 하위 자식들을 불러옴
      foreach($cat_row as $row)
      {
  //07.12.27 부모값과 자식값을 근거로 필요한 목록을 불러오는데 성공.
  //design 스킨 적용시 다양한 스킨을 만들기 위하여 일단 보류함
          $shop_menu  .= "";
              $shop_menu  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
              $shop_menu  .= "&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]";
            $shop_menu  .= "&ssq=$row[wr_comment]";
        $shop_menu  .= "&ssr=$row[wr_comment_reply]";
    $shop_menu  .= "\">";
              $shop_menu  .=  $row[wr_content];
              $shop_menu  .= "</A>";
  $shop_menu  .= "&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;"; 

/*
$shop_menu  .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
$shop_menu  =  go_url("../bbs/board.php?bo_table=$se_table&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]&ssq=$row[wr_comment]&ssr=$row[wr_comment_reply]","$row[wr_content]&nbsp;&nbsp;|&nbsp;&nbsp;");

*/
      }

  }

 
  //검색 스킨작업
  $shop_search  = "";

  // 외부로그인 스킨 start
 
  $mct    =  "wr_id='22'";  //고유값에러발생을 싶게 수정하기 위해서 아래 과정을 거침
  $sub_row = cat_all("select * from $basic_table where  $mct");
  if(!$cat_row)
  {
    $outlogin_skin = 'basic';
  }
  else
  {
  $sub_skin = "";
  foreach($sub_row as $row)
      {
        $mct      = "wr_parent = $row[wr_parent]";
  $mct    .= " and wr_is_comment = '1'";
  $sub_cow = cat_all("select * from $basic_table where  $mct");
  foreach($sub_cow as $data)
  {
  $sub_skin = $data[wr_6];
  $outlogin_skin = $sub_skin;
  }

      }
  }
  // 외부로그인 스킨  end
 
  //투표관리 스킨 start
 
  $mct    =  "wr_parent='38'";  //고유값에러발생을 싶게 수정하기 위해서 아래 과정을 거침
  $mct    .=  " and wr_is_comment='1'";
  $mct    .=  " and wr_comment  ='1'";
  $sub_row = cat_all("select * from $basic_table where  $mct");
  if(!$cat_row)
  {
    //db 에러시 임시 조치
    $visit_skin    = 'basic';
  }
  else
  {
    foreach($sub_row as $row)
      {
  $poll_skin = $row[wr_6];
  }


  }
  // 투표관리 스킨  end

 

  //카테고리시작

//sub menu 차별화
switch ($sca)
{
//분류값이 shop일경우, $stx 분류 고유값으로 정의한다
case 'shop':
//$stx 값을 근거의 하위 분류를 검색하여 submenu 를 보여준다.
              $mct    =  " wr_id ='$stx'"; 
              $cat_row = cat_all("select * from $basic_table where  $mct ");
              if($cat_row == 0){
              //값이 없는경우 메인 sub menu 를 보여준다
                  $mct    =  " wr_parent='9'"; 
                  $mct    .=  " and wr_is_comment > '0'  ";
                  $mct    .=  " and wr_comment_reply = ''  ";
                  $mct    .=  " order by wr_comment  ";
                  $cat_row = cat_all("select * from $basic_table where  $mct ");
                  if($cat_row == 0)
                    {
                      $shop_menu =  'NOT CATEGORY.';
                      }
                    else
                    {
                        $left_category = "";
                        foreach($cat_row as $row)
                        {
                $left_category  .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                          $left_category  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
                          $left_category  .= "&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]";
              $left_category  .= "&ssq=$row[wr_comment]";
              $left_category  .= "&ssr=$row[wr_comment_reply]";
                $left_category  .= "\">";
                          $left_category  .=  $row[wr_content];
                          $left_category  .= "</A>";
              $left_category  .= "<br>";


                        }

                    }

           
                  }
                  else
                  {
                        $left_category = "";
                    foreach($cat_row as $row)
                    {
                          $mct    =  " wr_parent ='$row[wr_parent]'"; 
                          $mct    .=  " and wr_is_comment='$row[wr_is_comment]'";
                          $mct    .=  " and wr_comment  ='$row[wr_comment]'";
  $mct    .=  " and wr_comment_reply  > '0'";
                          $sub_row = cat_all("select * from $basic_table where  $mct");

                          //하위분류가 없으면 최상의 분류를 불러온다
                          if($sub_row == 0){
                          $mct    =  " wr_parent='9'"; 
                          $mct    .=  " and wr_is_comment > '0'  ";
                          $mct    .=  " and wr_comment_reply = ''  ";
                          $mct    .=  " order by wr_comment  ";
                          $cat_row = cat_all("select * from $basic_table where  $mct ");
                        if($cat_row == 0)
                            {
                          $shop_menu =  'NOT CATEGORY.';
                            }
                          else
                            {
                          $left_category = "";
                          foreach($cat_row as $row)
                              {
                $left_category  .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                          $left_category  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
                          $left_category  .= "&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]";
              $left_category  .= "&ssq=$row[wr_comment]";
              $left_category  .= "&ssr=$row[wr_comment_reply]";
                $left_category  .= "\">";
                          $left_category  .=  $row[wr_content];
                          $left_category  .= "</A>";
              $left_category  .= "<br>";


                            }

                          }

           
                        }

else{
                            foreach($sub_row as $data)
{
                $left_category  .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                          $left_category  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
                          $left_category  .= "&sca=shop&sfl=wr_1&stx=$data[wr_id]&sop=and&ssp=$data[ca_name]";
              $left_category  .= "&ssq=$data[wr_comment]";
              $left_category  .= "&ssr=$data[wr_comment_reply]";
                $left_category  .= "\">";
                          $left_category  .=  $data[wr_content];
                          $left_category  .= "</A>";
              $left_category  .= "<br>";
}
}


                      }

                  }

break;

case 'dd':
echo '';
break;

default:
//값이 없는경우 메인 sub menu 를 보여준다
  $mct    =  " wr_parent='9'"; 
  $mct    .=  " and wr_is_comment > '0'  ";
  $mct    .=  " and wr_comment_reply = ''  ";
  $mct    .=  " order by wr_comment desc, wr_comment_reply  ";
  $cat_row = cat_all("select * from $basic_table where  $mct ");
    if($cat_row == 0)
  {
  $shop_menu =  'NOT CATEGORY.';
  }
  else
  {
      $left_category = "";
      foreach($cat_row as $row)
      {
  $left_category  .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
        $left_category  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
        $left_category  .= "&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]";
  $left_category  .= "&ssq=$row[wr_comment]";
  $left_category  .= "&ssr=$row[wr_comment_reply]";
  $left_category  .= "\">";
              $left_category  .=  $row[wr_content];
              $left_category  .= "</A>";
  $left_category  .= "<br>";


      }

  }

  break;

}


 //category end

/*
      $submct    =  "wr_parent='9'"; 
  $submct    .=  " and wr_is_comment > '0'  ";
$submct    .=  " and wr_comment = '$row[wr_comment]' ";
$sub_cat_row = cat_all("select * from $basic_table where  $submct");
   
foreach($sub_cat_row as $data)
  {
$left_category  .=  $data[wr_content];
$left_category  .= "<br>&nbsp;&nbsp;";

  }


*/

  // 방문자 스킨 start
 
  $mct    =  "wr_parent='44'";  //고유값에러발생을 싶게 수정하기 위해서 아래 과정을 거침
  $mct    .=  " and wr_is_comment='1'";
  $mct    .=  " and wr_comment  ='1'";
  $sub_row = cat_all("select * from $basic_table where  $mct");
  if(!$cat_row)
  {
    $visit_skin    = 'basic';
  }
  else
  {
    foreach($sub_row as $row)
      {
  $visit_skin = $row[wr_6];
  }


  }
  // 방문자 스킨  end
 
  // 접속자 스킨 start
 
  $mct    =  "wr_parent='32'";  //고유값에러발생을 싶게 수정하기 위해서 아래 과정을 거침
  $mct    .=  " and wr_is_comment='1'";
  $mct    .=  " and wr_comment  ='1'";
  $sub_row = cat_all("select * from $basic_table where  $mct");
  if(!$cat_row)
  {
    $connect_skin    = 'basic';
  }
  else
  {
    foreach($sub_row as $row)
      {
  $connect_skin = $row[wr_6];
  }


  }
  // 방문자 스킨  end


?>
1만점으로는 수고비는 커녕 점심값도 안되겠넹..ㅋㅋ..
너무 죄송합니다.

위에 올린 소스 내용만 대충 파악하고 있습니다.
생각해 보니 쉽지않는 일이내요.

그걸 해결하셨다니 존경스럽습니다.
무지 무지 감사^^
또 감사!!!
한개의 테이블에서 다차원분류(즉, 1차분류, 2차분류, 3차분류........)
==>> 하위분류가 없는경우 상위분류를 호출, 즉  좌측메뉴에서 sub menu 추출하기.

==============================================================================
//sub menu 차별화
switch ($sca)
{
//분류값이 shop일경우, $stx 분류 고유값으로 정의한다
case 'shop':
//$stx 값을 근거의 하위 분류를 검색하여 submenu 를 보여준다.
              $mct    =  " wr_id ='$stx'"; 
              $cat_row = cat_all("select * from $basic_table where  $mct ");
              if($cat_row == 0){
              //값이 없는경우 메인 sub menu 를 보여준다
                  $mct    =  " wr_parent='9'"; 
                  $mct    .=  " and wr_is_comment > '0'  ";
                  $mct    .=  " and wr_comment_reply = ''  ";
                  $mct    .=  " order by wr_comment  ";
                  $cat_row = cat_all("select * from $basic_table where  $mct ");
                  if($cat_row == 0)
                    {
                      $shop_menu =  'NOT CATEGORY.';
                      }
                    else
                    {
                        $left_category = "";
                        foreach($cat_row as $row)
                        {
                $left_category  .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                          $left_category  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
                          $left_category  .= "&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]";
              $left_category  .= "&ssq=$row[wr_comment]";
              $left_category  .= "&ssr=$row[wr_comment_reply]";
                $left_category  .= "\">";
                          $left_category  .=  $row[wr_content];
                          $left_category  .= "</A>";
              $left_category  .= "<br>";


                        }

                    }

           
                  }
                  else
                  {
                        $left_category = "";
                    foreach($cat_row as $row)
                    {
                          $mct    =  " wr_parent ='$row[wr_parent]'"; 
                          $mct    .=  " and wr_is_comment='$row[wr_is_comment]'";
                          $mct    .=  " and wr_comment  ='$row[wr_comment]'";
  $mct    .=  " and wr_comment_reply  > '0'";
                          $sub_row = cat_all("select * from $basic_table where  $mct");

                          //하위분류가 없으면 최상의 분류를 불러온다
                          if($sub_row == 0){
                          $mct    =  " wr_parent='9'"; 
                          $mct    .=  " and wr_is_comment > '0'  ";
                          $mct    .=  " and wr_comment_reply = ''  ";
                          $mct    .=  " order by wr_comment  ";
                          $cat_row = cat_all("select * from $basic_table where  $mct ");
                        if($cat_row == 0)
                            {
                          $shop_menu =  'NOT CATEGORY.';
                            }
                          else
                            {
                          $left_category = "";
                          foreach($cat_row as $row)
                              {
                $left_category  .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                          $left_category  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
                          $left_category  .= "&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]";
              $left_category  .= "&ssq=$row[wr_comment]";
              $left_category  .= "&ssr=$row[wr_comment_reply]";
                $left_category  .= "\">";
                          $left_category  .=  $row[wr_content];
                          $left_category  .= "</A>";
              $left_category  .= "<br>";


                            }

                          }

           
                        }

else{
                            foreach($sub_row as $data)
{
                $left_category  .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                          $left_category  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
                          $left_category  .= "&sca=shop&sfl=wr_1&stx=$data[wr_id]&sop=and&ssp=$data[ca_name]";
              $left_category  .= "&ssq=$data[wr_comment]";
              $left_category  .= "&ssr=$data[wr_comment_reply]";
                $left_category  .= "\">";
                          $left_category  .=  $data[wr_content];
                          $left_category  .= "</A>";
              $left_category  .= "<br>";
}
}


                      }

                  }

break;

case 'dd':
echo '';
break;

default:
//값이 없는경우 메인 sub menu 를 보여준다
  $mct    =  " wr_parent='9'"; 
  $mct    .=  " and wr_is_comment > '0'  ";
  $mct    .=  " and wr_comment_reply = ''  ";
  $mct    .=  " order by wr_comment desc, wr_comment_reply  ";
  $cat_row = cat_all("select * from $basic_table where  $mct ");
    if($cat_row == 0)
  {
  $shop_menu =  'NOT CATEGORY.';
  }
  else
  {
      $left_category = "";
      foreach($cat_row as $row)
      {
  $left_category  .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
        $left_category  .= "<A href=\"../bbs/board.php?bo_table=$se_table";
        $left_category  .= "&sca=shop&sfl=wr_1&stx=$row[wr_id]&sop=and&ssp=$row[ca_name]";
  $left_category  .= "&ssq=$row[wr_comment]";
  $left_category  .= "&ssr=$row[wr_comment_reply]";
  $left_category  .= "\">";
              $left_category  .=  $row[wr_content];
              $left_category  .= "</A>";
  $left_category  .= "<br>";


      }

  }

  break;

}


 //category end
결론.

기존 소스를 고쳐서 사용한다는건 시간과 노력이 많이 듭니다.

================================================================================
결국은 자신만의 코드에 다른사람이 표현했던 흐름만 읽고... 새로 창의적으로 만드는게..
================================================================================

가장 빠른길이라고 생각합니다.
전체 3,309 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT