스킨 ..write.skin.php 에서 회원성별을 표시할때... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

스킨 ..write.skin.php 에서 회원성별을 표시할때... 정보

스킨 ..write.skin.php 에서 회원성별을 표시할때...

본문

스킨의 write.skin.php에서 '회원의 성별'을 가져와서 아래처럼 보여줍니다

<?
$mb_data = get_member($member[mb_id],"mb_sex");
  if($mb_data[mb_sex] == "M") {
    echo"<span style='font:bold 12px dotum;color:#46A3FF;'>남자</span>";
}elseif($mb_data[mb_sex] == "F") {
  echo"<span style='font:bold 12px dotum;color:#D16976;'>여자</span>";
}
?>

위처럼 하면...글쓰기할때, 글작성자(회원)의 성별을 가져와서 출력해줍니다.

그러나,
이미 작성된 회원들의 게시글을 '관리자'가 로그인해서 볼때 문제(?)가 생기는군요.
회원 게시물의 <수정>화면에 들어가서 확인해보면,
기존 회원의 성별이 아닌, '관리자'의 '성별'이 나타나게 됩니다.

... 관리자가 로그인해서 회원 게시글의 <수정>화면을 볼때
... 기존 회원의 성별이 표시되게 하려면 어떻게 해야 할까요.

댓글 전체

관리자로 로그인했을때 예외처리를 해주심 되겠네요

if($is_admin){ // 로그인한 사람의 관리자 권한 확인
$mb_data = get_member($view[wr_id],"mb_sex");
}else{          // 관리자가 아니라면
$mb_data = get_member($member[mb_id],"mb_sex");
}
오홋 저보다 먼저 올려 주셨네요...

저와 거의 비슷한 내용이네요..

근데 여기는 Write 페이지여서 $view[wr_id] 이게 아니고 $write[mb_id] 이거 같습니다. ^^
위의 소스는 사용자 즉, 로그인 한 사람의 아이디 정보를 가져 오는 겁니다.

제가 볼때는 몬가 잘못되어 있는거 같은데요..

$mb_data = get_member($member[mb_id],"mb_sex");

요기 부분을

$mb_data = ($w=='u')?get_member($write[mb_id],"mb_sex"):get_member($member[mb_id],"mb_sex");

이렇게 수정일때는 원사용자의 아이디를 가져오는 걸로!~

바꿔 주심 될듯 싶은데요.. ^^
댓글 감사합니다....에...알려주신 방법들이 모두 먹히질 않는거 같네요 ..
신규 '글쓰기'라던가, 기존글 '수정'모두 에서 회원이던 비회원이던 출력이 안되는군요.

시도한 방법1)
-------------------------------------------------
if($is_admin){ // 로그인한 사람의 관리자 권한 확인
$mb_data = get_member($write[wr_id],"mb_sex");
}else{          // 관리자가 아니라면
$mb_data = get_member($member[mb_id],"mb_sex");
}

시도한 방법2)
-------------------------------------------------
if($is_admin){ // 로그인한 사람의 관리자 권한 확인
$mb_data = get_member($write[wr_id],"mb_sex");
}else{          // 관리자가 아니라면
$mb_data = ($w=='u')?get_member($write[mb_id],"mb_sex"):get_member($member[mb_id],"mb_sex");

}

....리스트나 뷰에서 출력되는거 보면,
....글쓰기나 그수정에서도 노출이 되어야 할거 같은데, 이상하게 안되는군요 -_- ;;

결국......

머리 싸매다가...일단은 mb_sex 값을 wr_4 여유필드에 저장해서 노출하는 방법으로
그냥 변경해버렸는데....코드가 아래처럼 지저분하게 길어져 버렸군요 -_- ;;

write.skin.php 변경내용 ------------------------------------

<? $write[wr_4] = get_member($member[mb_id],"mb_sex");
if($write[wr_4][mb_sex] == "M") {
$write[wr_4] = "남자";
}elseif($write[wr_4][mb_sex] == "F") {
$write[wr_4] = "여자";
}
?>
<? if(!$is_admin) { ?>
<input type=text name='wr_4' required itemname='회원성별' value='<?=$write[wr_4]?>' readonly class=input size=10>&nbsp;<span style="font:normal 11px dotum;color:#888888;letter-spacing:-0.1em;">본인 성별은 수정할수 없습니다</span>
<? }else{ ?>
<input type=text name='wr_4' required itemname='회원성별' value='<?=$write[wr_4]?>' class=input size=10>&nbsp;<span style="font:normal 11px dotum;color:#888888;letter-spacing:-0.1em;">본인 성별은 수정할수 없습니다</span>
<? } ?>



쓸데없이 여유필드 하나만 사용하게 되버린 꼴이 되었는데
기존 코드가 왜 안되는지... 관심있으신 분들의 추가 댓글을 부탁해봅니다.
시도할 방법)
==========================================
$mb_data = ($w=='u')?get_member($write[mb_id],"mb_sex"):get_member($member[mb_id],"mb_sex");

이렇게만 처리하라는 얘기입니다
수정일때는 $write[mb_id] 값을 가져오고
나머지는 $member의 mb_id 를 가져오라는 얘기이므로

is_admin 이부분의 예외처리를 하지 않아도 됩니다.
흠...위 방법도 먹히지를않는군요..참고로 현재 그누보드 최신버젼입니다.
혹, 그누보드 기본스킨에서 테스트 해보셨는지요...
이래저래 테스트를 해봐도 스킨상에서 달리 손댄것도 없는데...뭐가 문제인지 모르겠군요.

그리고 위처럼 하면, echo 문으로 변수를 출력해야하지 않는가요? 아래처럼...
echo $mb_data;  <--- 이렇게 하면 Array 값이 출력되어 버리는 군요.
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

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