2단 카테고리 게시판 정보
게시판 2단 카테고리 게시판첨부파일
본문
2단 카테고리 게시판입니다. 모바일버전은 시간상 만들지 않았습니다.
나중에 시간이 나면 모바일버전도 제작하겠습니다.
1단 카테고리는 wr_1 여분필드를 사용하였고, 2단 카테고리는 wr_2 여분필드를 사용하였습니다.
갤러리게시판을 수정한 버전입니다.
list 1차 카테고리에 마우스 롤오버하면 2차 카테고리가 보입니다. ajax를 사용한 게시판입니다.
사용 설명을 하겠습니다.
#########################설치방법시작##############################
1. 첨부파일의 cat_gallery 폴더를 ./skin/board/ 안에 업로드를 합니다.
[./는 루트를 뜻합니다.]
## 2번을 작업을 하기전에 주의!!##
./bbs/list.php 파일을 백업 해두시기 바랍니다.
만약 오류가 발생하더라도 책임지지 않습니다. 혹시나 list.php를 수정을 한 홈페이지는 기본 list.php와 다른 부분을 수정 하시면 사용하실 수 있습니다.
2. 첨부파일의 list.php는 ./bbs/에 업로드를 합니다.[덮어쓰기 하시면 됩니다.]
3. 게시판스킨을 cat_gallery로 설정을 합니다.
########################설치끝#####################################
#########################사용방법##################################
1. 먼저 1차 분류를 등록합니다.
[관리자페이지] -> [게시판설정] -> [해당게시판수정] -> [제일하단에 여분필드1]
##1차분류 등록방법 -> 가|나|다|라|마 로 구분합니다. (너무 많은 1차 카테고리는 레이아웃이 깨질수 있습니다.)
2. 그리고 2차 분류를 등록합니다.
[관리자페이지] -> [게시판설정] -> [해당게시판수정] -> [제일하단에 여분필드2]
##2차분류 등록방법 -> 가-1,가-2,가-3,가-4|나-1,나-2,|다-1,다-2|라_1,라_2,라_3|마_1,마_2
(1차분류 순서대로 작성을 해주시면 됩니다.)
[,]와[|]로 구분입니다.
#########################사용방법##################################
쉽게 만들기 위해 편법을 사용한 것이므로 오류가 발생 할 수 도 있습니다. 말씀 해주시면 수정하겠습니다.
아그리고 여분필드가 작아서 보기 힘드시면 ./adm/board_form.php 에 1243번째 줄에
<input type="text" name="bo_<?php echo $i ?>" value="<?php echo get_text($board['bo_'.$i]) ?>" id="bo_<?php echo $i ?>" class="frm_input" style="width:700px">
style="width:700px" 취향따라 넓이를 넣어주세요.
나중에 시간이 나면 모바일버전도 제작하겠습니다.
1단 카테고리는 wr_1 여분필드를 사용하였고, 2단 카테고리는 wr_2 여분필드를 사용하였습니다.
갤러리게시판을 수정한 버전입니다.
list 1차 카테고리에 마우스 롤오버하면 2차 카테고리가 보입니다. ajax를 사용한 게시판입니다.
사용 설명을 하겠습니다.
#########################설치방법시작##############################
1. 첨부파일의 cat_gallery 폴더를 ./skin/board/ 안에 업로드를 합니다.
[./는 루트를 뜻합니다.]
## 2번을 작업을 하기전에 주의!!##
./bbs/list.php 파일을 백업 해두시기 바랍니다.
만약 오류가 발생하더라도 책임지지 않습니다. 혹시나 list.php를 수정을 한 홈페이지는 기본 list.php와 다른 부분을 수정 하시면 사용하실 수 있습니다.
2. 첨부파일의 list.php는 ./bbs/에 업로드를 합니다.[덮어쓰기 하시면 됩니다.]
3. 게시판스킨을 cat_gallery로 설정을 합니다.
########################설치끝#####################################
#########################사용방법##################################
1. 먼저 1차 분류를 등록합니다.
[관리자페이지] -> [게시판설정] -> [해당게시판수정] -> [제일하단에 여분필드1]
##1차분류 등록방법 -> 가|나|다|라|마 로 구분합니다. (너무 많은 1차 카테고리는 레이아웃이 깨질수 있습니다.)
2. 그리고 2차 분류를 등록합니다.
[관리자페이지] -> [게시판설정] -> [해당게시판수정] -> [제일하단에 여분필드2]
##2차분류 등록방법 -> 가-1,가-2,가-3,가-4|나-1,나-2,|다-1,다-2|라_1,라_2,라_3|마_1,마_2
(1차분류 순서대로 작성을 해주시면 됩니다.)
[,]와[|]로 구분입니다.
#########################사용방법##################################
쉽게 만들기 위해 편법을 사용한 것이므로 오류가 발생 할 수 도 있습니다. 말씀 해주시면 수정하겠습니다.
아그리고 여분필드가 작아서 보기 힘드시면 ./adm/board_form.php 에 1243번째 줄에
<input type="text" name="bo_<?php echo $i ?>" value="<?php echo get_text($board['bo_'.$i]) ?>" id="bo_<?php echo $i ?>" class="frm_input" style="width:700px">
style="width:700px" 취향따라 넓이를 넣어주세요.
추천
3
3
댓글 전체
좋은자료 정말 감사드립니다.
그런데 이거 3단으로는 구현이 어려울까요 ㅠㅠ?
그런데 이거 3단으로는 구현이 어려울까요 ㅠㅠ?
서울대공원 3마리 모였다.
싸우기 시작.
싸우기 시작.
좋은스킨 감사합니다!
글수정시 2차카테고리가 하나씩 밀려나서 나오네요.
없는 실력에 아래처럼 수정해서 씁니다. 안되시는분 참고하시길.
<select name="wr_1" id="wr_1" required onchange="select_wr1();">
<option value="1차분류">1차분류 선택하세요.</option>
<?if($wr_id){?>
<option value="<?=$write[wr_1]?>" selected><?=$write[wr_1]?></option>
<?for($i = 0; $i < count($cat1); $i++){?>
<?if($cat1[$i] == $write[wr_1]){?>
<?}else{?>
<option id = "<?=$i?>"value="<?=$cat1[$i]?>"><?=$cat1[$i]?></option>
<?}?>
<?}?>
<?}else{?>
<?for($i = 0; $i < count($cat1); $i++){?>
<option id = "<?=$i?>"value="<?=$cat1[$i]?>"><?=$cat1[$i]?></option>
<?}?>
<?}?>
</select>
글수정시 2차카테고리가 하나씩 밀려나서 나오네요.
없는 실력에 아래처럼 수정해서 씁니다. 안되시는분 참고하시길.
<select name="wr_1" id="wr_1" required onchange="select_wr1();">
<option value="1차분류">1차분류 선택하세요.</option>
<?if($wr_id){?>
<option value="<?=$write[wr_1]?>" selected><?=$write[wr_1]?></option>
<?for($i = 0; $i < count($cat1); $i++){?>
<?if($cat1[$i] == $write[wr_1]){?>
<?}else{?>
<option id = "<?=$i?>"value="<?=$cat1[$i]?>"><?=$cat1[$i]?></option>
<?}?>
<?}?>
<?}else{?>
<?for($i = 0; $i < count($cat1); $i++){?>
<option id = "<?=$i?>"value="<?=$cat1[$i]?>"><?=$cat1[$i]?></option>
<?}?>
<?}?>
</select>
감사드립니다. 덕분에 수정했습니다.
근데 이 스킨은 이상하게 카테고리 필수입력이 안 먹히네요.
혹시 해결하신분 계신가싶어 질문드려 봅니다.
필수입력이 안 먹혀서 간혹 카테고리를 빼먹고 글을 쓰면 수정시 카테고리를 지정할수가 없는 문제가 생깁니다.
그래서 글을 지우고 새로 써야하더라고요.
근데 이 스킨은 이상하게 카테고리 필수입력이 안 먹히네요.
혹시 해결하신분 계신가싶어 질문드려 봅니다.
필수입력이 안 먹혀서 간혹 카테고리를 빼먹고 글을 쓰면 수정시 카테고리를 지정할수가 없는 문제가 생깁니다.
그래서 글을 지우고 새로 써야하더라고요.
어느부분이 바뀐거죠:? ㅎㅎ수정해도 변함이 없어서요 ㅠ ㅎ
$total_count = mysql_num_rows($result);
이부분이 오류라는데 뭐가문제인가요?
list.php부분입ㄴ디ㅏ.
그리고 댓글 사용 시 올바른 방법으로 이용해 주십시오.라는 멘트가 뜨는데 이부분은 어떻게 해야할까요 ㅠㅠ?
이부분이 오류라는데 뭐가문제인가요?
list.php부분입ㄴ디ㅏ.
그리고 댓글 사용 시 올바른 방법으로 이용해 주십시오.라는 멘트가 뜨는데 이부분은 어떻게 해야할까요 ㅠㅠ?
1차분류를 여러개할 수 있도록 할수는 없을까요?
페이지네이션에 문제는 없으셨나요? 페이지네이션 숫자가 뜨긴하는데 전체 목록에 관한 페이지만 뜨네요 ㅠㅠ
페이지네이션 해결해셨나요? 저도 이것때문에 오류가나서 고민중입니다 ㅠ
해결은 못했구 조금 다르게 생각한 방식으로 페이지네이션 수는 전체수로 지정하고,
1페이지의 갯수를 12로 지정하고 12개 이상일 때 페이지네이션이 보이게 지정해버렸습니다..ㅎㅎ
1페이지의 갯수를 12로 지정하고 12개 이상일 때 페이지네이션이 보이게 지정해버렸습니다..ㅎㅎ
답변 감사드립니다~~
전 설명을 들어도 모르겠네요 ㅜ -ㅠ
전 설명을 들어도 모르겠네요 ㅜ -ㅠ
이 페이지를 수정하려면 list.php를 수정해야할텐데 모든 게시판에 적용이 되버리니 크게 안건드리는게 가장 좋을듯 해요..ㅎㅎ
분류명 검색시 count 수와 페이지네이션은
/bbs/list.php에서
if ($sca || $stx ) {
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
if($wr_1 && !$wr_2) {
$sql_search .= " and (wr_1 = '{$wr_1}' and wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
} else if($wr_1 && $wr_2) {
$sql_search .= " and (wr_1 = '{$wr_1}' and wr_2 = '{$wr_2}' and wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
} else {
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
}
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
}
이 부분을
if ($sca || $stx ) {
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
} else if ($wr_1 || $wr_2) {
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
if($wr_1 && !$wr_2) {
$sql_search .= " or (wr_1 = '{$wr_1}' and wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
} else if($wr_1 && $wr_2) {
$sql_search .= " or (wr_1 = '{$wr_1}' and wr_2 = '{$wr_2}' and wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
} else {
$sql_search .= " or (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
}
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
} else {
$sql_search = "";
$total_count = $board['bo_count_write'];
}
로 수정합니다. 또 list.skin.php에서
<? if($cat1) { ?>
<nav id="bo_cate">
<ul id="bo_cate_ul">
<li>
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>" id="bo_cate_on" <?if($wr_1 == '' || !$wr_1){?>style="background-color:#ccc;"<?}else{}?>>전체</a>
</li>
<?for($i = 0; $i < count($cat1); $i++){?>
<li>
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&wr_1=<?=$cat1[$i]?>" class="c_<?=$i?>" id="bo_cate_on"
<? if($wr_1 == $cat1[$i]) { ?>style="background-color:#ccc;"<?}else{}?>><?=$cat1[$i]?></a>
<ul>
<?for($j = 0; $j < count($cat2[$i]); $j++){?>
<li>
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&wr_1=<?=$cat1[$i]?>&wr_2=<?=$cat2[$i][$j]?>"
<?if($wr_2 == $cat2[$i][$j]){?>style="background-color:#3D3D3D;color:#fff;"<? } else { } ?>>
<?=$cat2[$i][$j]?>
</a>
</li>
<? } ?>
</ul>
</li>
<? } ?>
</ul>
</nav>
<? } ?>
이 부분을
<? if($cat1) { ?>
<nav id="bo_cate" style="border:0px solid blue">
<ul id="bo_cate_ul">
<li style="padding:3px"><a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>" id="bo_cate_on"
<? if($wr_1 == '' || !$wr_1) { ?> style="border-radius:3px; background-color:#d4d4d4;"<? } else { } ?>>전체</a>
<? for($i = 0; $i < count($cat1); $i++) { ?>
<li style="padding:3px">
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&wr_1=<?=$cat1[$i]?>&sfl='wr_1'&stx='<?=$cat1[$i]?>'" class="c_<?=$i?>" id="bo_cate_on"
<? if($wr_1 == $cat1[$i]) { ?> style="border-radius:3px; background-color:#d4d4d4;"<? } else { } ?>> <?=$cat1[$i]?></a>
<!-- 2차 메뉴 -->
<ul style="border:0px solid red">
<? for($j=0; $j<count($cat2[$i]); $j++) { ?>
<li>
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&wr_1=<?=$cat1[$i]?>&wr_2=<?=$cat2[$i][$j]?>&sfl='wr_2'&stx='<?=$cat2[$i][$j]?>'"
<? if($wr_2==$cat2[$i][$j]) { ?> style="background-color:#3D3D3D;color:#fff;"<? } else { } ?>><?=$cat2[$i][$j]?></a>
</li>
<? } ?>
</ul>
</li>
<? } ?>
</ul>
</nav>
<? } ?>
로 바꿔줍니다.
또 하단 검색 부분에서
<input type="text" name="stx" value="stripslashes($stx):'' ?>" required id="stx" class="sch_input" size="25" maxlength="20" placeholder="검색어를 입력해주세요">
이 부분을
<input type="text" name="stx" value="<?= ($wr_1 && $wr_1 !== $stx && $wr_2 && $wr_2 !== $stx)?stripslashes($stx):'' ?>" required id="stx" class="sch_input" size="25" maxlength="20" placeholder="검색어를 입력해주세요">
로 바꿔 주면 정상적으로 total_count 수와 페이지네이션이 해결되는 것 같습니다.
/bbs/list.php에서
if ($sca || $stx ) {
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
if($wr_1 && !$wr_2) {
$sql_search .= " and (wr_1 = '{$wr_1}' and wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
} else if($wr_1 && $wr_2) {
$sql_search .= " and (wr_1 = '{$wr_1}' and wr_2 = '{$wr_2}' and wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
} else {
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
}
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
}
이 부분을
if ($sca || $stx ) {
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
} else if ($wr_1 || $wr_2) {
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
if($wr_1 && !$wr_2) {
$sql_search .= " or (wr_1 = '{$wr_1}' and wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
} else if($wr_1 && $wr_2) {
$sql_search .= " or (wr_1 = '{$wr_1}' and wr_2 = '{$wr_2}' and wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
} else {
$sql_search .= " or (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) ";
}
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = mysql_num_rows($result);
} else {
$sql_search = "";
$total_count = $board['bo_count_write'];
}
로 수정합니다. 또 list.skin.php에서
<? if($cat1) { ?>
<nav id="bo_cate">
<ul id="bo_cate_ul">
<li>
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>" id="bo_cate_on" <?if($wr_1 == '' || !$wr_1){?>style="background-color:#ccc;"<?}else{}?>>전체</a>
</li>
<?for($i = 0; $i < count($cat1); $i++){?>
<li>
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&wr_1=<?=$cat1[$i]?>" class="c_<?=$i?>" id="bo_cate_on"
<? if($wr_1 == $cat1[$i]) { ?>style="background-color:#ccc;"<?}else{}?>><?=$cat1[$i]?></a>
<ul>
<?for($j = 0; $j < count($cat2[$i]); $j++){?>
<li>
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&wr_1=<?=$cat1[$i]?>&wr_2=<?=$cat2[$i][$j]?>"
<?if($wr_2 == $cat2[$i][$j]){?>style="background-color:#3D3D3D;color:#fff;"<? } else { } ?>>
<?=$cat2[$i][$j]?>
</a>
</li>
<? } ?>
</ul>
</li>
<? } ?>
</ul>
</nav>
<? } ?>
이 부분을
<? if($cat1) { ?>
<nav id="bo_cate" style="border:0px solid blue">
<ul id="bo_cate_ul">
<li style="padding:3px"><a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>" id="bo_cate_on"
<? if($wr_1 == '' || !$wr_1) { ?> style="border-radius:3px; background-color:#d4d4d4;"<? } else { } ?>>전체</a>
<? for($i = 0; $i < count($cat1); $i++) { ?>
<li style="padding:3px">
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&wr_1=<?=$cat1[$i]?>&sfl='wr_1'&stx='<?=$cat1[$i]?>'" class="c_<?=$i?>" id="bo_cate_on"
<? if($wr_1 == $cat1[$i]) { ?> style="border-radius:3px; background-color:#d4d4d4;"<? } else { } ?>> <?=$cat1[$i]?></a>
<!-- 2차 메뉴 -->
<ul style="border:0px solid red">
<? for($j=0; $j<count($cat2[$i]); $j++) { ?>
<li>
<a href="<?=G5_URL?>/bbs/board.php?bo_table=<?=$bo_table?>&wr_1=<?=$cat1[$i]?>&wr_2=<?=$cat2[$i][$j]?>&sfl='wr_2'&stx='<?=$cat2[$i][$j]?>'"
<? if($wr_2==$cat2[$i][$j]) { ?> style="background-color:#3D3D3D;color:#fff;"<? } else { } ?>><?=$cat2[$i][$j]?></a>
</li>
<? } ?>
</ul>
</li>
<? } ?>
</ul>
</nav>
<? } ?>
로 바꿔줍니다.
또 하단 검색 부분에서
<input type="text" name="stx" value="stripslashes($stx):'' ?>" required id="stx" class="sch_input" size="25" maxlength="20" placeholder="검색어를 입력해주세요">
이 부분을
<input type="text" name="stx" value="<?= ($wr_1 && $wr_1 !== $stx && $wr_2 && $wr_2 !== $stx)?stripslashes($stx):'' ?>" required id="stx" class="sch_input" size="25" maxlength="20" placeholder="검색어를 입력해주세요">
로 바꿔 주면 정상적으로 total_count 수와 페이지네이션이 해결되는 것 같습니다.