그룹별, 게시판별 최신글에서 관리자가 선택한 게시물만 최근글로 보여지게 하기 정보
그룹별, 게시판별 최신글에서 관리자가 선택한 게시물만 최근글로 보여지게 하기본문
그룹별, 게시판별 최신글의 팁을 써주신 은진아빠님의 팁과
관리자가 글쓰기에서 체크한 것만 최신글로 불러오기의 노니맨님의
팁을 동시에 적용하려면 어떻게 해야 할까요?
php는 올려주신 팁의 소스를 보고 간단히 수정만 하고 그냥 쓰는 초보수준이라,
이것을 동시에 적용할 수 있는 방법을 모르겠네요.
항상 질문만 하는데, 좋은답을 주셔서 감사합니다.
만약 두가지를 하나로 적용하면, 그룹에 있는 게시판의 글중에서 원하는 것들만 최신글
로 가져올 수 있을텐데요. 도와주세요.
댓글 전체
여분필드 wr_1에 1또는 2가 입력된 게시물만 골라서 최신글로 뽑아오는 예제입니다.
우직한 방법이니 옵션 예제를 적절히 수정해서 응용하세요.
펑션 - 적당한 이름으로 extend폴더에 업로드합니다.
<?
// 최신글 추출
function latest_opck($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
global $config;
global $g4, $member;
if ($skin_dir)
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
else
$latest_skin_path = "$g4[path]/skin/latest/$config[cf_latest_skin]";
$list = array();
$sql = " select * from {$g4[board_table]} where bo_table = '$bo_table'";
$board = sql_fetch($sql);
$tmp_write_table = $g4[write_prefix] . $bo_table; // 게시판 테이블 전체이름
$sql_common = " from $tmp_write_table where wr_is_comment = 0 ";
if($options) {//최신글 호출시 옵션이 있을 경우에만 출력하기 예제 - 조건은 적절히 추가
$sql_options = "";
if($options == "1")
$sql_options .= " and wr_1=1 order by wr_id desc ";
if($options == "2")
$sql_options .= " and wr_1=2 order by wr_id desc ";
}
else {
$sql_options .= " order by wr_id desc ";//내림차순 정렬
}
$sql = " select *
$sql_common
$sql_options
limit $rows ";
//explain($sql);
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++)
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
?>
///////////////////////////펑션 끝
아래 코드를 원하는 위치에 붙여넣고 테스트 해봅니다.
내용중에 latest_opck("basic", $row[bo_table], 5, 30, 1); 마지막 1이 옵션입니다.
wr_1에 1이 입력된 게시물만 가져옵니다. 2라면 wr_1에 2가 입력된 게시물이겠죠??
옵션을 비워두면 일반적인 최신글 형태로 불러옵니다.
<?
//##### 메인화면 최신글 시작
$tbl_W = 100;//전체 테이블 너비
$cols = 3;//세로 칼럼수
$td_W = intval($tbl_W / $cols);//셀 너비
//현재 백분율에 따른 셀너비, 픽셀로 하려면 % 제거
echo "<table width='{$tbl_W}%' cellpadding=0 cellspacing=0 border=0><tr>";
$gr_id = "sample";//그룹명시할 경우 입력
$sql = " select bo_table, bo_subject from $g4[board_table] where gr_id = '$gr_id' and bo_list_level <= '$member[mb_level]' order by bo_order_search";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result);) {
if($i % $cols == 0)
echo "<tr>";
echo "<td width='{$td_W}%' valign='top' style='padding-right:3px;'>";
// latest(스킨, 게시판아이디, 출력라인, 제목 글자수, 옵션);
echo latest_opck("basic", $row[bo_table], 5, 30, 1);
echo "</td>";
$i++;
}
echo "</tr></table>";
//##### 메인화면 최신글 끝
?>
////////////////////////////////
개별 테이블별로
latest_opck(스킨, 게시판아이디, 출력라인, 제목 글자수, 옵션);
<?=latest_opck("basic", test, 5, 30,2);?> 이런식으로도 사용가능하겠네요.
////////////////////////////////
스킨 write.skin.php에서 옵션 입력시 참고,
예제는 이미 입력된 내용을 보여주거나 기본 1을 입력하는 형태입니다.
<!-- 옵션 입력 wr_1 -->
<input class=ed maxlength=2 size=3 name=wr_1 itemname="wr_1" value="<? echo (!empty($write['wr_1'])?"".$write['wr_1']."":"1");?>">
우직한 방법이니 옵션 예제를 적절히 수정해서 응용하세요.
펑션 - 적당한 이름으로 extend폴더에 업로드합니다.
<?
// 최신글 추출
function latest_opck($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
global $config;
global $g4, $member;
if ($skin_dir)
$latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
else
$latest_skin_path = "$g4[path]/skin/latest/$config[cf_latest_skin]";
$list = array();
$sql = " select * from {$g4[board_table]} where bo_table = '$bo_table'";
$board = sql_fetch($sql);
$tmp_write_table = $g4[write_prefix] . $bo_table; // 게시판 테이블 전체이름
$sql_common = " from $tmp_write_table where wr_is_comment = 0 ";
if($options) {//최신글 호출시 옵션이 있을 경우에만 출력하기 예제 - 조건은 적절히 추가
$sql_options = "";
if($options == "1")
$sql_options .= " and wr_1=1 order by wr_id desc ";
if($options == "2")
$sql_options .= " and wr_1=2 order by wr_id desc ";
}
else {
$sql_options .= " order by wr_id desc ";//내림차순 정렬
}
$sql = " select *
$sql_common
$sql_options
limit $rows ";
//explain($sql);
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++)
$list[$i] = get_list($row, $board, $latest_skin_path, $subject_len);
ob_start();
include "$latest_skin_path/latest.skin.php";
$content = ob_get_contents();
ob_end_clean();
return $content;
}
?>
///////////////////////////펑션 끝
아래 코드를 원하는 위치에 붙여넣고 테스트 해봅니다.
내용중에 latest_opck("basic", $row[bo_table], 5, 30, 1); 마지막 1이 옵션입니다.
wr_1에 1이 입력된 게시물만 가져옵니다. 2라면 wr_1에 2가 입력된 게시물이겠죠??
옵션을 비워두면 일반적인 최신글 형태로 불러옵니다.
<?
//##### 메인화면 최신글 시작
$tbl_W = 100;//전체 테이블 너비
$cols = 3;//세로 칼럼수
$td_W = intval($tbl_W / $cols);//셀 너비
//현재 백분율에 따른 셀너비, 픽셀로 하려면 % 제거
echo "<table width='{$tbl_W}%' cellpadding=0 cellspacing=0 border=0><tr>";
$gr_id = "sample";//그룹명시할 경우 입력
$sql = " select bo_table, bo_subject from $g4[board_table] where gr_id = '$gr_id' and bo_list_level <= '$member[mb_level]' order by bo_order_search";
$result = sql_query($sql);
for ($i=0; $row=mysql_fetch_array($result);) {
if($i % $cols == 0)
echo "<tr>";
echo "<td width='{$td_W}%' valign='top' style='padding-right:3px;'>";
// latest(스킨, 게시판아이디, 출력라인, 제목 글자수, 옵션);
echo latest_opck("basic", $row[bo_table], 5, 30, 1);
echo "</td>";
$i++;
}
echo "</tr></table>";
//##### 메인화면 최신글 끝
?>
////////////////////////////////
개별 테이블별로
latest_opck(스킨, 게시판아이디, 출력라인, 제목 글자수, 옵션);
<?=latest_opck("basic", test, 5, 30,2);?> 이런식으로도 사용가능하겠네요.
////////////////////////////////
스킨 write.skin.php에서 옵션 입력시 참고,
예제는 이미 입력된 내용을 보여주거나 기본 1을 입력하는 형태입니다.
<!-- 옵션 입력 wr_1 -->
<input class=ed maxlength=2 size=3 name=wr_1 itemname="wr_1" value="<? echo (!empty($write['wr_1'])?"".$write['wr_1']."":"1");?>">
정말이지 너무 너무 감사합니다. 어떻게 보답드려야 할 지 모르겠네요. 잘 사용하도록 하겠습니다.
좋네요~
많이 공부해야지 ㅎㅎ
많이 공부해야지 ㅎㅎ
햐 어렵게 생각했는데...그누보드는 없는게 없군요 ^^
그룹별, 게시판별 최신글에서 관리자가 선택한 게시물만 최근글로 보여지게 하기