테스트 사이트 - 개발 중인 베타 버전입니다

여분필드(체크박스)로 체크된 게시물만 보이게 하기 채택완료

coDribble 6년 전 조회 3,521

여분필드 wr_2 를 사용해서 체크박스로 만든 후

 

리스트에서는 체크된 게시물만 보이게 하고, 관리자는 모든 게시물을 볼 수 있게 하려고 하는데...

 

/skin/board/스킨명/write.php

// 비밀글 체크 상태 유무 베껴온 코드...

$open = '';

if( strstr($write['wr_2'], 'open') ) {

    $open = 'checked'; }

?>

    공개여부     >

 

write.php 페이지에 추가를 했는데...

 

리스트에서는 어떻게 추가를 해야할까요...??  

리스트가 시작되는 for 구문안에서

 

if( $is_admin && $list[$i]['wr_2'] !== 'open' ) 관리자이면서 wr_2가 체크되어있지 않으면 모두 노출

 

else 체크된 게시물만 노출

 

글쓰기 페이지에서 체크시 open 출력

 

이렇게 구현하고 싶은데 머리가 안돌아가네요ㅠㅠㅠ

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

list.skin.php와 view.skin.php로 간단히 수정하시는 것도 좋으나

게시글 카운트도 정확히 내야하고 페이지 노출 수를 정확하게 하시려면

list.php 에서 코드를 손 보시는 것이 조금 더 낫습니다.

 

예)

1. $stx = trim($stx); 이 시작되는 라인 위 쪽에 아래 코드를 삽입

$sql_search_add = "";

if ($bo_table=='적용하실게시판명' && !$is_admin){

    $sql_search_add .= " and wr_2 != '' ";

}</p>

<p>

 

2. 아래 코드 {$sql_search_add} 추가

</p>

<p>$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} {$sql_search_add} ";</p>

<p>

 

3. 아래 코드 {$sql_search_add} 추가

</p>

<p>if ($sca || $stx) {

    $sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_search_add} {$sql_order} limit {$from_record}, $page_rows ";

} else {

    $sql = " select * from {$write_table} where wr_is_comment = 0 {$sql_search_add} ";</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

c
coDribble
6년 전
아... 일이 커지는 거였네요;;

전 그냥 여분필드를 써서

관리자는 모든 게시물 볼 수 있게 하고,

비회원, 회원은 체크된 게시물만 볼 수 있게 하려고 했던건데...

list.php 를 건드려야하는거면....ㅠㅠㅠㅠ
F
FullstackCreative
6년 전
자세히 보시면 상당히 간단한 방법입니다.
c
coDribble
6년 전
헐... 말씀해주신대로 하니 바로 적용되네요;; 감사합니다..ㅠㅠㅠ
c
coDribble
6년 전
혹시 한가지 더 여쭤봐도 될까요...??

카테고리 사용중인데... 해당 카테고리로 sort 할때는 페이징은 잘 되는데...

전체 카테고리로 볼때는 모든 페이징이 다 뜨고 있습니다...;;

각 페이지 클릭해보면 게시물은 없다고 나오는 상황입니다ㅠㅠㅠ

여기 추가한 부분이 페이징도 같이 해주신거 같은데... 전체카테고리에서만 페이징 적용이 안되고있네요;;ㅠㅠ

각각 카테고리 클릭시에는 페이징 적용 잘 되고 있습니다...
[code]
if ($sca || $stx) {
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_search_add} {$sql_order} limit {$from_record}, $page_rows "; // {$sql_search_add} 20190124 추가
} else {
$sql = " select * from {$write_table} where wr_is_comment = 0 {$sql_search_add} "; // {$sql_search_add} 20190124 추가
if(!empty($notice_array))
$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
$sql .= " {$sql_order} limit {$from_record}, $page_rows ";
}
[/code]
c
coDribble
6년 전
list.php 71번째 줄에

$total_count = $board['bo_count_write'];

이 부분을 바꿔줘야 할거 같은데....(느낌상) 개발자가 아니라서.. 대충 눈치로 짐작하는 정도인데...

어떻게 바꿔줘야 하는지를 모르겠네요;;ㅠㅠㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

</p>

<p>if($list[$i]['wr_2']) {</p>

<p>노출</p>

<p>} else {</p>

<p>    if($is_admin) {   </p>

<p>        관리자만 노출</p>

<p>    }</p>

<p>}</p>

<p>

 

쉽게 가셔도 될듯합니다....

로그인 후 평가할 수 있습니다

답변에 대한 댓글 5개

c
coDribble
6년 전
그럼 리스트 페이지에

for 구문 안에 말씀해주신대로 넣으면 될까요??
[code]
<?php
for ( $i = 0; $i < count($list); $i++ ){

}
?>
<li>
~~~~~
</li>
<?php } ?>
[/code]
최선을다하자
6년 전
네 for문 안에 넣으시면 될듯 합니다

또한 view 파일 상단에도 wr_2 체크 하셔서 읽고 못읽고를 거르셔야 합니다!
c
coDribble
6년 전
죄송합니다...;; 제가 이해가 잘 안가는데요..;;

[code]
<?php
for ( $i = 0; $i < count($list); $i++ ){
if ( $list[$i]['wr_2'] ) { // 공개게시물(체크된 게시물)은 누구나 볼 수 있음
노출 <- 이부분에 뭘 넣어야 하는건가요??
} else {
if ( $is_admin ) { // 비공개게시물(체크안된 게시물)은 관리자만 볼 수 있음
관리자만 노출 <- 이부분에 뭘 넣어야 하는건가요??
}
}
?>
<li>
게시물 정보
</li>
<?php
} // for 끝
?>
[/code]
최선을다하자
6년 전
[code]
<?php
for ( $i = 0; $i < count($list); $i++ ){
if ( $list[$i]['wr_2'] ) { // 공개게시물(체크된 게시물)은 누구나 볼 수 있음
<li>
게시물 정보
</li>
} else {
if ( $is_admin ) { // 비공개게시물(체크안된 게시물)은 관리자만 볼 수 있음
<li>
게시물 정보
</li>
}
}
?>
<?php
} // for 끝
?>
[/code]
c
coDribble
6년 전
빠른 답변 감사드립니다...

제 생각에서는 여분필드 값으로 구분지어주면 되는 작업일 줄 알았는데

생각보다 어려운 작업이었네요...ㅠㅠㅠ

제가 제대로 이해를 못해서 죄송합니다...ㅠㅠㅠ

아래 풀스택크리에이티브 님의 답변으로 적용하였습니다...ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인