■outlogin, newlist스킨 선택 적용법 > 그누3 팁자료실

그누3 팁자료실

■outlogin, newlist스킨 선택 적용법 정보

일반 ■outlogin, newlist스킨 선택 적용법

본문

먼저 초짜인데 저보다 더 초보인분을 위해서 글을 적습니다.
생각을 많이 해보았는데 ets시스템이 빠진다고 기존만들어 놓은걸 전부다 바꾸기는 힘들겠다는 생각에
1.00버젼을 바탕으로 만든건 그대로 쓰기로 마음먹었네요 *^^*
일단문제점을 개선해야할점을 몇자 적고자합니다.
■ 먼저 현재 새글추출과 새걸러리 추츨 2가지가 있는데 정의가 없다보니 다들 함수로 따로 따로쓰시는듯합니다. 하나로 고정할필요가 있는듯합니다. 저는 이렇게 정하고 사용하고있네요!
function newlist($skins, $gb_table, $subject, $rows, $subjectlen='')
function newpic($skins, $gb_table, $subject, $rows, $subjectlen='')
■ 이 팁란을 쓰게된 이유인데요! 스킨을 여러개 사용할경우와 상관없이 outlogin스킨과 newlist, newpic스킨은 환경설정값을 가져오게 됨으로써 만약 게시판만다 다른시킨을 적용시켰다면 매번 다른디렉토리에서 스킨을 찾게됨니다. 그래서 그 스킨들마나 모두 스킨폴더안에 다시 newlist.ets, newpic.ets, outlogin.ets를 복사해넣어야한다는 복잡함과 그렇치 않아도 파일이 많아서 복잡한데 더 복잡해진다는 거죠! 그래서 outlogin, newlist, newpic스킨도 원하는 스킨으로 선택이 필요하다는 거죠!
■ 현재 sample스킨에는 운영자님이 편하게 만드니시라 스킨파일(ets)파일과 그림파일등이 섞여있는데 분리가 필요하다는건(벌써 적용하여 사용하시네요 *^^*)
먼저 newlist와 newpic스킨을 별도 정하는 방법을 해보겠습니다.

//########################################################################################
//##  lib.inc.php 내용중에 newlist함수만 변경하시면됩니다.
//## 몇가지 줄 추가부분이 있는데 제가사용하는 용도인데 그냥 그대로 적어 놓겠습니다.
//## 이유는 테이블에 필드를 추가하여 다른걸 보여줘야할경우 똑같은 방식으로 보여주면
//## 추가된 필드를 적용시킨게 볼수 없기때문에 비교가 필요해서리*^^*
//########################################################################################
// ### &nbsp;newlist($skins<---요걸 추가했습니다.
function newlist($skins, $gb_table, $subject, $rows, $subjectlen='')
{
 &nbsp; &nbsp;global $cfg, $absdir, $reldir, $uc1, $uc2, $uc3;

 &nbsp; &nbsp;require_once "$reldir/ets.php";
 &nbsp; &nbsp;
 &nbsp; &nbsp;$sql = " select * from $cfg[table_board] where gb_table = '$gb_table' ";
 &nbsp; &nbsp;$bd = sql_fetch_array($sql);

 &nbsp; &nbsp;if ($subjectlen == '') $subjectlen = $bd[gb_subject_len];

 &nbsp; &nbsp;$temp->게시판제목 = $subject;
 &nbsp; &nbsp;
 &nbsp; &nbsp;$temp->게시판 = $gb_table;
 &nbsp; &nbsp;$temp->절대경로 = $absdir;
 &nbsp; &nbsp;$temp->상대경로 = $reldir;
 &nbsp; &nbsp;$temp->스킨디렉토리 = $cfg[dir_skin];
 &nbsp; &nbsp;$temp->스킨 = $skins; &nbsp;// ###########<---수정부분입니다.
 &nbsp; &nbsp;$temp->uc1 = $uc1;
 &nbsp; &nbsp;$temp->uc2 = $uc2;
 &nbsp; &nbsp;$temp->uc3 = $uc3;
 // ########################## 이부분은 수정안하셔도 됩니다. 있는그대로 사용하세요 *^^* &nbsp;
 &nbsp; &nbsp;$board1 = false;
 &nbsp; &nbsp;$board2 = false;
 &nbsp; &nbsp;$board3 = false;
 &nbsp; &nbsp;if ($gb_table == "itembuy") { &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp;$board1 = true;
 &nbsp; &nbsp;}else if ($gb_table == "quest") { &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp;$board2 = true;
 &nbsp; &nbsp;}else {
 &nbsp; &nbsp; &nbsp; &nbsp;$board3 = true;
 &nbsp; &nbsp;}
//#################### 이부분까지는 있는그대로 사용하세요 *^^* 수정불필요
//#################### newlist.ets부분에서 어떻게 처리했는지 보여드릴려고 일부러 적어놓습니다.

 &nbsp; &nbsp;$table = "{$cfg[board_table_prefix]}{$gb_table}";
 &nbsp; &nbsp;$result = sql_query_error(" select * from $table where bd_comment = 0 order by bd_id desc limit {$rows} ");
 &nbsp; &nbsp;for ($i = 0; $row = mysql_fetch_array($result); $i++) {
 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->파일아이콘 = false;
 &nbsp; &nbsp; &nbsp; &nbsp;if ($row[bd_file1] || $row[bd_file2])
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->파일아이콘 = true;

 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->링크아이콘 = false;
 &nbsp; &nbsp; &nbsp; &nbsp;if ($row[bd_link1] || $row[bd_link2])
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->링크아이콘 = true;

 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->새글아이콘 = false;
 &nbsp; &nbsp; &nbsp; &nbsp;if ($row[bd_datetime] >= date("Y-m-d H:i:s", time() - ($cfg['new'] * 3600)))
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->새글아이콘 = true;

 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->뜨거운아이콘 = false;
 &nbsp; &nbsp; &nbsp; &nbsp;if ($row[bd_hit] >= $cfg[hot])
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->뜨거운아이콘 = true;

 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->전투아이콘 = false;
 &nbsp; &nbsp; &nbsp; &nbsp;if ($row[bd_commentcnt] >= $cfg[battle])
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->전투아이콘 = true;

 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->비밀아이콘 = false;
 &nbsp; &nbsp; &nbsp; &nbsp;if ($row[bd_secret])
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->비밀아이콘 = true;

// ############################## 최신자료 보드별처리 ############################# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->아이템거래보드 = $board1;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->퀘스트보드 = $board2;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->기본적보드 = $board3; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

// ############################## 최신자료 보드별처리 ############################# &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;

 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->코멘트수 = ($row[bd_commentcnt]) ? $row[bd_commentcnt] : null;

 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->제목 = get_text(cut_str($row[bd_subject], $subjectlen, '…'));
 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->아이디 = $row[bd_id];
 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->게시판 = $gb_table;
 &nbsp; &nbsp; &nbsp; &nbsp;$temp->목록[$i]->날짜 = $row[bd_datetime];
 &nbsp; &nbsp;}
 &nbsp; &nbsp;mysql_free_result($result);

 &nbsp; &nbsp;printt($temp, "$reldir/$cfg[dir_skin]/$skins/newlist.ets"); &nbsp;// ###이부분 수정했습니다. $skins으로
}

newpic함수도 방식은 똑같습니다. *^^*
사실은 여기서 스킨폴더가 없을경우를 대비해서 에러처리루틴이 필요합니다. 하지만 생각해본결과
스킨폴더를 알고 있는이상 굳이 속도를 저해하는 에러처리루틴이 필요없다는 생각이 들었네요 *^^*
그냥 혹 에러가 나더라도 스킨명만 변경해주면 되니깐여 *^^*

실제사용 <? newlist("login_skin","free", "자유게시판", 5, 25); ?>
이렇게 하면됩니다. 여기서 login_skin은 스킨디렉토리명입니다. *^^*
아주 간단하죠 *^^*(복잡하면 사실 제가 몰라서 못합니다. *^^*)
자 그럼 newlist.ets파일을 보겠습니다. (제가사용한것 그대로 올립니다.)
//##################################################################################
//## gnuboard1/skin/login_skin/newlist.ets
//##################################################################################
{* 새글 추출 *}

{mask:main}
<table width=100% cellspacing=0 class=ccclist3>
{mask:목록}
<tr height=20>
 &nbsp; &nbsp;<td class=ccclist3 >
 &nbsp; &nbsp; &nbsp; &nbsp;<img src='{절대경로}/{상대경로}/{스킨디렉토리}/{스킨}/images/icon3.gif'>
 &nbsp; &nbsp; &nbsp; &nbsp;{var:파일아이콘}<img src='{절대경로}/{상대경로}/{스킨디렉토리}/{스킨}/images/icon_file.gif' align=absmiddle>{/var:파일아이콘}
 &nbsp; &nbsp; &nbsp; &nbsp;{var:링크아이콘}<img src='{절대경로}/{상대경로}/{스킨디렉토리}/{스킨}/images/icon_link.gif' align=absmiddle>{/var:링크아이콘}
//##################### &nbsp;수정안하셔도 됩니다. 참고만 하시라고#################
 &nbsp; &nbsp; &nbsp; &nbsp;{var:아이템보드}<a href='{절대경로}/{상대경로}/itemview.php{uc1}gb_table{uc2}{게시판}{uc3}bd_id{uc2}{아이디}'>{제목}</a>{/var:아이템보드}
 &nbsp; &nbsp; &nbsp; &nbsp;{var:퀘스트보드}<a href='{절대경로}/{상대경로}/questview.php{uc1}gb_table{uc2}{게시판}{uc3}bd_id{uc2}{아이디}'>{제목}</a>{/var:퀘스트보드}
 &nbsp; &nbsp; &nbsp; &nbsp;{var:기본적보드}<a href='{절대경로}/{상대경로}/gbview.php{uc1}gb_table{uc2}{게시판}{uc3}bd_id{uc2}{아이디}'>{제목}</a>{/var:기본적보드}
//####################여기까지 제가 수정해서 사용하고 있는것 ##################
// 특정 테이블에 한해서 테이블에 필드를 추가해서 보여줄경우 기죤 gblist.php, gbform.php, gbview
// 등을 그대로 사용못합니다. 수정부분이 생깁니다. 그래서 추가된게시판의 경우는 이름을 달리해서
// 실행을 하게 하고 또한 최신을 추츨에서도 기죤 gbview.php로 보게되면 수정부분을 제대로 볼수
// 없기때문에 이렇게 설정이 필요합니다. *^^*
// 그 강좌는 약속드린대로 정리해서 한개씩 올리겠습니다. *^^*
//############################################################################
 &nbsp; &nbsp; &nbsp; &nbsp;{var:코멘트수}<font size=1>[{코멘트수}]</font>{/var:코멘트수}
 &nbsp; &nbsp; &nbsp; &nbsp;{var:새글아이콘}<img src='{절대경로}/{상대경로}/{스킨디렉토리}/{스킨}/images/icon_new.gif' align=absmiddle>{/var:새글아이콘}
 &nbsp; &nbsp; &nbsp; &nbsp;{var:뜨거운아이콘}<img src='{절대경로}/{상대경로}/{스킨디렉토리}/{스킨}/images/icon_hot.gif' align=absmiddle>{/var:뜨거운아이콘}
 &nbsp; &nbsp; &nbsp; &nbsp;{var:전투아이콘}<img src='{절대경로}/{상대경로}/{스킨디렉토리}/{스킨}/images/icon_battle.gif' align=absmiddle>{/var:전투아이콘}
 &nbsp; &nbsp; &nbsp; &nbsp;{var:비밀아이콘}<img src='{절대경로}/{상대경로}/{스킨디렉토리}/{스킨}/images/icon_secret.gif' align=absmiddle>{/var:비밀아이콘}
 &nbsp; &nbsp;</td>
 &nbsp; &nbsp;<td class=ccclist3 align="right">[{php}substr('{날짜}',0,10){/php}]</td>
</tr>
{/mask:목록}

</table>
{/mask:main}

// 이제 outlogin스킨적용방법이네요 *^^* 다들 벌써 감아오겠지만서도
// 초보자분들을 위해서 올립니다.
<?
/*---------------------------
** &nbsp; &nbsp; &nbsp; &nbsp;외부로그인 &nbsp; &nbsp; &nbsp; &nbsp; **
---------------------------*/
require_once "./lib.inc.php";
require_once "$reldir/ets.php";
if ($login_mb[mb_id]) { // 로그인 중이라면

 &nbsp; &nbsp;$temp->게시판 = $gb_table;
 &nbsp; &nbsp;$temp->회원아이디 = $login_mb[mb_id];
 &nbsp; &nbsp;$temp->회원명 = $login_mb[mb_name];
 &nbsp; &nbsp;// ####################################### 추가 #############################
 &nbsp; &nbsp;$temp->회원레벨 = $login_mb[mb_level]; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp;$temp->포인트 = $login_mb[mb_point];
 &nbsp; &nbsp;// ####################################### 추가 ############################# &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp;$temp->그룹관리자권한이상 = false;
 &nbsp; &nbsp;if ($login_mb[mb_level] >= $cfg[level_group_admin])
 &nbsp; &nbsp; &nbsp; &nbsp;$temp->그룹관리자권한이상 = true;
 &nbsp; &nbsp;$temp->회원탈퇴대기일 = $cfg[leave_day];

 &nbsp; &nbsp;$temp->절대경로 = $absdir;
 &nbsp; &nbsp;$temp->상대경로 = $reldir;
 &nbsp; &nbsp;$temp->스킨디렉토리 = $cfg[dir_skin];
// $temp->스킨 = $cfg[skin] ; &nbsp; &nbsp; &nbsp;<--------원래소스
 &nbsp; &nbsp;$temp->스킨 = $cfg[skins] = "login_skin"; //##<--수정부분 이렇게 적어주면 원하시는 스킨폴더
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //## 안에서 읽어오겠죠 *^^* &nbsp; &nbsp; &nbsp;
 &nbsp; &nbsp;$temp->uc1 = $uc1;
 &nbsp; &nbsp;$temp->uc2 = $uc2;
 &nbsp; &nbsp;$temp->uc3 = $uc3;

// printt($temp, "$reldir/$cfg[dir_skin]/$cfg[skin]/outlogin1.ets"); &nbsp;<---원래소스
 &nbsp; &nbsp;printt($temp, "$reldir/$cfg[dir_skin]/$cfg[skins]/outlogin1.ets");
//## 변수값을 $cfg[skins]로변경한건 현 선택스킨을 읽어들이는데 그변수를 그대로 써버리면
// 모든 게시판이 login_skin으로 고정되버리기때문에 변수명을 변경한겁니다. *^^*
// 직접대입도 되나 수정의 편리를 위해서 *^^*

} else { // 로그아웃 중이라면

 &nbsp; &nbsp;$temp->게시판 = $gb_table;
 &nbsp; &nbsp;$temp->회원아이디 = $login_mb[mb_id];
 &nbsp; &nbsp;$temp->회원명 = $login_mb[mb_name];
 &nbsp;
 &nbsp; &nbsp;$temp->그룹관리자권한이상 = false;
 &nbsp; &nbsp;if ($login_mb[mb_level] >= $cfg[level_group_admin])
 &nbsp; &nbsp; &nbsp; &nbsp;$temp->그룹관리자권한이상 = true;
 &nbsp; &nbsp;$temp->회원탈퇴대기일 = $cfg[leave_day];

 &nbsp; &nbsp;$temp->절대경로 = $absdir;
 &nbsp; &nbsp;$temp->상대경로 = $reldir;
 &nbsp; &nbsp;$temp->스킨디렉토리 = $cfg[dir_skin];
// $temp->스킨 = $cfg[skin] ; <---원래소스
 &nbsp; &nbsp;$temp->스킨 = $cfg[skins] = "login_skin"; //##<---여기도 마찬가지
 //간단하게 이 부분만 수정해주면 outlog스킨선택이 가능하게됩니다.*^^*
//물론 사용자가 더 편리하게위해서는 관리자모드에서 outlogin스킨설정부분과 필드를 추가하여
//선택한걸 변수로 넘겨오면되겠지만 *^^* 아직 /manage/폴더안소스는 아직한번도 안본상태여서*^^*
 &nbsp; &nbsp;$temp->uc1 = $uc1;
 &nbsp; &nbsp;$temp->uc2 = $uc2;
 &nbsp; &nbsp;$temp->uc3 = $uc3;

// printt($temp, "$reldir/$cfg[dir_skin]/$cfg[skin]/outlogin2.ets"); <---원래소스
 &nbsp; &nbsp;printt($temp, "$reldir/$cfg[dir_skin]/$cfg[skins]/outlogin2.ets"); //###<--여기도 변수명이수정되어야겠죠

}

unset($temp);
?>

//#################################################################################
// 이상간단하게 outlogin과 newlist,newpic스킨선택적용법을 설명했습니다. *^^*

저걸 적용한 허접사이트가 (http://a3-online.wo.to)입니다. *^^*
퀘스트부분과 아이템거래부분입니다. 한번 보시면 아시리라....
혹 의문사항은 꼭 여기다가 적어주시던지 아니면 *** 개인정보보호를 위한 이메일주소 노출방지 ***해주세요 *^^*
추천
12

댓글 전체

강좌아닌 강좌로 설명드릴까합니다. *^^* 팁참고하세요 *^^*
소스를 안드리는 이유...이미 답이 나왔있고 막가파식으로 고쳐놨기때문에 .....
ⓒⓒⓒ//님이 올리신 내용으로 스킨을 모두 수정해서 올렸습니다. 아주 잘 되는군요 좀더 가벼워진것도 같구요..... 감사합니다..... **^^**
정확히 글쓰기폼 어떤걸 말씀하신지 모르겠습니다.
그리고 전체게시판을 상대로 검색은 가능합니다. *^^* 검색할때 조건을 넣을수도 있고
검색결과내에서 다시 검색도 가능하죠 *^^* sql명령보시면 아시리라...좀세세하게 물어보세면.. 아는한도에서 세세하게 설명해드리겠습니다.
전체 52
그누3 팁자료실 내용 검색

회원로그인

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