https://xe1.xpressengine.com/qna/19559390#comment_19561902

 

검색해보니 공홈에 비슷한 글이 있더라고요. 답변 내용대로 테이블 헤더랑 NOTICE와 NOMAL에 각각 추가하면 되겠거니 했는데 정작 호출을 어떻게 해야될지 막막합니다;;

 

스킨은 스케치북5 이고요. 일단 회원가입시 '파트명'만 추가필드로 만들었습니다 (id는 part)

{$member_info->part} 이렇게 하면 나오긴 하던데 <td>에 어떻게 표현해야될지 모르겠습니다. 아무렇게나 해보니깐 글 읽은 사람의 파트가 다른사람의 글에 있는 파트란에 일괄 표시되더라고요;;

 

위치는 그림과 같이 작성자 왼쪽에 넣을려고 합니다. 지금은 일단 게시판에서 추가필드로 key-in하게 하였고요.

 

수정할건 엄청 많은데 아무것도 모르니 정말 답답하네요ㅠㅠ. 잘 아시는분 답변 주시면 감사하겠습니다.

 

field.png

 

 

 

 

 

 

 

 

 

  • profile
    게시판 설정에서 사용자 정의항목도 목록 노출여부와 순서를 설정할수 있습니다.
  • profile profile
    글 쓴이가 가지고 있는 회원정보의 확장변수중 특정한 것을 게시판목록에 출력하는 것에 관한것이네요
  • profile ?
    네에..{$member_info->part} 이걸 게시판의 확장변수 말고 자동으로 들어가게 했음 하거든요
  • profile
    제가 질문을 잘못이해했군요...-0-;;;;
    $member_info는 로그인 한 사람의 정보가 들어가 있는 것이니 그건 안되구요..

    $document->getUserID()
    이런 변수로 데이터를 가져오는데요.

    getUserID라는 명령은 \modules\document\document.item.php에 정의되어 있네요.
    function getUserID()
    {
    return htmlspecialchars($this->get('user_id'), ENT_COMPAT | ENT_HTML401, 'UTF-8', false);
    }
    $this가 있는것으로 봐선 앞에 있는 $document에서 user_id값을 가져와서 html처리어쩌고 인코딩 어쩌고 해서 반환하라는 거네요.
    $document는 해당 문서의 내용일테구요.
    하지만 $document에는 회원정보의 확장 변수를 저장하지 않겠죠.

    각각의 문서에는 작성자 정보가 다 따로 들어있다는 거네요.
    이름, 아이디, srl, 작성일 등등이요.

    그럼 $document에서 알수 있는 정보를 가지고 회원정보의 내용을 끌어와야 하는 거네요.
    해당문서를 작성한 작성자의 고유번호인 $document->get('member_srl') 이 값을 가지고 찾아야 하는 건데....
    xe문법은 너무 심오해서 전 모르니 여기까지만.....-0-;;;;;;
  • profile ?
    그래서 제가 로그인할때만 파트가 제 파트명으로 쫙 뜨는거였군요. 아니면 로그인 한 사람만 글쓰게 해놓고 WRITE_FORM에서 파트명 값이 자동으로 들어가게 하는건 어떨까 싶은데... 그냥 포기해야 할까요 ㅠㅠ
  • profile

    원하는 위치에 아래부분을 넣으면,

    {@
      $MemberModel = &getModel('member');
      $member_info = $MemberModel->getMemberInfoByMemberSrl($document->get('member_srl'));
    }
    <pre>{print_r($member_info)}</pre>

     

    여기서 뜨는 결과물을 참조해서 {$member_info->part} 등등으로 하면 될 것 같습니다만...

  • profile ?
    댓글 감사합니다. {$member_info->part} 이걸로 하면 나오긴 한데요. 처음 리스트 화면에서는 안나오고, 문서를 하나 열어야 본문 밑에 리스트에서 나오더라고요. 그리고 일단 문제가 해당 글의 작성자 파트가 다른 글의 파트란에도 일괄로 적혀 버리네요. 그니깐 파트가 다른 사람이 작성한 글에, 열고있는 글의 작성자 파트가 일괄로 뿌려져 버립니다. 칸을 별도로 안만들고 <span>{$mypart} {$document->getUserID()}</span> 이런 식으로 작성자 앞에 해당변수명을 붙여서 해보니깐 여전히 열고있는 문서의 파트명이 다른 글에도 일괄 뿌려버리네요. loop가 돌때 글쓴이가 다 다르므로 php어딘가에 getmypart() 이런 함수를 만들어서 작성자를 인자로줘서 part를 불러오면 될거 같은데 알려주신 구문을 php 함수로 어디파일에 넣어야 될지를 모르겠네요ㅠㅠ
  • ? profile
    본문에 링크 걸어두신 소스는 스케치북 스킨 기준으로 _read.html, 즉 본문에만 적용됩니다. 리스트에 적용하려면 제가 적어드린 변수정의를 _list_normal.html 등에 걸어주셔야해요.
    본문 밑 리스트에서만 변수가 출력되는 것도 그와 같은 이치 때문입니다. 본문 작성자의 정보로 본문 하단의 리스트가 도배되지 않던가요? 소스를 제 걸로 바꿔보세요.
  • profile ?
    이것저것 막 수정했더니 사이트가 먹통되서 재설치하느라 고생좀 했네요. 그 윤삼님께서 알려주신 코드는 게시판 list화면에서 html이 깨지더라고요. 본문 글 한개를 즐겨찾기 해놨는데 그 글에서는 잘나오고요. 근데 여전히 다른글의 파트명에도 일괄 표시되버리네요
    {@
    $oMemberModel = &getModel('member');
    $member_info = $oMemberModel->getMemberInfoByMemberSrl($oDocument->get('member_srl'));
    }
    구글링해서 위 코드로 하니까 목록화면에서도 안깨지고 {print_r($member_info)} 도 잘 표시되던데 $oMemberModel과 $MemberModel 이 무슨 차인지 모르겠네요. 여전히 파트명은 일괄로 나오지만 ㅠㅠ

    아무래도 document php에 함수를 추가하거나 write_form.html에 그냥 확장변수를 자동으로 들어가게 해야될거 같은 생각이 듭니다 ㅠㅠ
  • profile ?
    으아... 왜 계속 연 문서의 파트명이 일괄 뿌려지나 곰곰히 생각해 보니까 제가 소스를 loop문 바깥에다 넣었었네요ㅠㅠ. <tr loop> 밑에 넣으니깐 잘 나옵니다. 요 며칠간 정신줄을 놓고 살다보니.. 정말정말정말 감사합니다 ㅠㅠ
  • ? profile
    쉽게 말해서 $oDocument는 "현재 보고 있는 문서"를, $Document는 "문서목 전체"를 뜻한다고 보시면 될 거예요. 마찬가지로 $oMemberModel은 "현재 보고 있는 문서에 해당하는 회원 정보"로, $MemberModel은 "전체 회원 정보"로 구분된다고 보면 되겠구요.
    그러니까 제가 써 드린 소스는 loop 안에 넣어야 제대로 작동하겠죠?
  • profile ?
    이게 그런 차이였군요. 삽질좀 하다보니깐 어느정도 구조가 눈에 들어오네요ㅎ 윤삼님이 알려주신대로 활용하면 다른것도 조금씩 커스터마이징 할수 있을거 같습니다. 감사합니다^^