어제 스쿄님이 회원정보 페이지(member_info.html)에서 간단한 현황을 표기하고 싶다 하셨는데,

https://xetown.com/questions/1386519

제가 왜 이러는지는 모르겠지만 갑자기 자극을 받아서 xml 쿼리랑 코드를 짜봤습니다.

 

목차

 

 

0. 이 팁이 활용될 수 있는 곳 ⇪ 목차

- 이 팁은 사이트 전역에 걸친 회원 개인의 활동 현황을 나타내는 데 활용될 수 있습니다.

- 구체적으로 다음과 같은 경우에 해당합니다.

  • 회원이 작성한 총 게시글수 또는 댓글수
  • 회원이 다른 게시글이나 댓글에 시도했던 추천 횟수, 비추천 횟수, 신고 횟수
  • 회원이 작성한 게시글이나 댓글 중 추천, 비추천, 신고 등을 받았던 게시글 또는 댓글의 개수
  • 회원이 작성한 게시글이나 댓글이 받았던 추천, 비추천, 신고 등의 총 횟수

- 아마도 다음과 같은 상황에서 활용될 수 있을 것입니다.

  • 회원정보 보기 페이지에서 자신 또는 다른 회원의 현황을 나타내고 싶을 경우 : 예.  https://xetown.com/index.php?mid=tips&act=dispMemberInfo&member_srl=38796 (스샷은 없어요ㅜ 그냥 이런 화면 안에 디스플레이한다는 뜻)
  • 게시글 본문 페이지에서 게시글 작성자의 현황을 나타내고 싶을 경우 : 예. https://xetown.com/tips/1386849#comment_1386906 (웹지기님 스샷 감사해요~)

- 또... 레이아웃 회원 현황 부분에 넣거나 위젯으로도 제작이 가능할 것 같은데, 제작자분들이라면 이 정도 팁은 얼마든지 활용하실 수 있겠지요 :)

 

 

1. 쿼리 XML 파일 저장하기 ⇪ 목차

- 먼저 이곳 게시물에 첨부한 압축파일 queries.zip을 다운로드합니다. queries.zip

- 압축을 풀고 queries라는 이름 그대로 스킨 폴더의 하위폴더로 넣습니다.

  • [회원정보 보기라면] ./modules/member/skins/{사용중인 스킨 이름}/queries
  • [게시글 작성자 현황 보기라면] ./modules/board/skins/{사용중인 스킨 이름}/queries

- 라는 폴더로 모두 12개의 xml 파일을 저장하는 겁니다.

 

 

2. 회원번호와 쿼리 파일 경로 지정 ⇪ 목차

- 이번에는 위에서 언급한 두 가지 경우의 수에 따라 살짝 다른데요

 

- [회원정보 보기 페이지의 경우] ./modules/member/skins/{사용중인 스킨 이름}/member_info.html 상단(또는 적당한 곳)에 다음의 코드를 삽입합니다.

{@
$_member_srl = $memberInfo['member_srl'];
$query_path = 'member/skins/' . $member_config->skin;
}

 

- [게시판 본문 페이지의 경우] ./modules/board/skins/{사용중인 스킨 이름}/_read.html 상단(또는 적당한 곳)에 다음의 코드를 삽입합니다.

{@
$_member_srl = $oDocument->get('member_srl');
$query_path = 'board/skins/' . $module_info->skin;
}

 

- 여기서 지정한 기본 변수를 가지고 게시글수, 댓글수, 추천/비추천/신고의 개수와 횟수 등을 불러오게 됩니다.

 

 

3. 필요한 변수 만들기 ⇪ 목차

- 이상과 같이 준비가 되면 위에서 지정한 회원번호($_member_srl)와 쿼리 xml 파일을 통해 필요한 변수를 만들 수 있습니다.

- 아래와 같은 구문을 위의 2번에서 삽입한 코드 바로 아래에 삽입합니다.

 

1) 작성 글수와 댓글수 가져오기

{@
// 해당 회원이 작성한 게시글수
$total_document_count = getModel('document')->getDocumentCountByMemberSrl($_member_srl);
 
// 해당 회원이 작성한 댓글수
$total_comment_count = getModel('comment')->getCommentCountByMemberSrl($_member_srl);
}

- 이렇게 해서 총 작성 글수와 댓글수를 가져올 수 있습니다.

 

2) 여타 활동 내역 현황을 뽑아내기 위한 객체 생성

{@
$args = new stdClass;
$args->member_srl = $_member_srl;
}

- 이후의 변수들을 만들고 가져오려면 $args라는 인수? 매개변수?가 반드시 필요합니다.

- 아래의 3)부터 나오는 변수들을 만드시려면 반드시 잊지 말고 꼭 적어주셔야 합니다.

 

3) 회원이 실행한 추천, 비추천, 신고의 횟수

{@
// 해당 회원이 추천한 문서의 개수 = 문서에 대한 추천 횟수
$output = executeQuery($query_path . '.getVotingCountByMemberSrlInDocument', $args);
$voting_document_count = ( !$output->toBool() || !$voting_document_count ) ? 0 : $output->data->count;
 
// 해당 회원이 추천한 댓글의 개수 = 댓글에 대한 추천 횟수
$output = executeQuery($query_path . '.getVotingCountByMemberSrlInComment', $args);
$voting_comment_count = ( !$output->toBool() || !$voting_comment_count ) ? 0 : $output->data->count;
 
// 해당 회원이 비추천한 문서의 개수 = 문서에 대한 비추천 횟수
$output = executeQuery($query_path . '.getBlamingCountByMemberSrlInDocument', $args);
$blaming_document_count = ( !$output->toBool() || !$blaming_document_count ) ? 0 : $output->data->count;
 
// 해당 회원이 비추천한 댓글의 개수 = 댓글에 대한 비추천 횟수
$output = executeQuery($query_path . '.getBlamingCountByMemberSrlInComment', $args);
$blaming_comment_count = ( !$output->toBool() || !$blaming_comment_count ) ? 0 : $output->data->count;
 
// 해당 회원이 신고한 문서의 개수 = 문서에 대한 신고 횟수
$output = executeQuery($query_path . '.getAccusingCountByMemberSrlInDocument', $args);
$accusing_document_count = ( !$output->toBool() || !$accusing_document_count ) ? 0 : $output->data->count;
 
// 해당 회원이 신고한 댓글의 개수 = 댓글에 대한 신고 횟수
$output = executeQuery($query_path . '.getAccusingCountByMemberSrlInComment', $args);
$accusing_comment_count = ( !$output->toBool() || !$accusing_comment_count ) ? 0 : $output->data->count;
}

- 이렇게 해서 해당 회원이 다른 사용자가 작성한 게시글 또는 댓글에 취한 추천, 비추천, 신고의 건수를 가져올 수 있습니다.

- $output으로 시작하는 쿼리실행문과 그에 대응하는 각 변수들이 짝을 이루고 있음에 주의하셔야 합니다.

- 자, 다음부터는 이게 말이야? 막걸리야? 싶은 언어의 향연이 시작되니 주의하셔야 해요. 집중집중.

 

4) 회원이 추천받은 글수 및 그 글들이 추천받은 횟수

{@
$output = executeQuery($query_path . '.getVotedCountForMemberSrlInDocument', $args);
// 해당 회원이 작성한 게시글 중 추천받은 게시글수
$voted_document_count = ( !$output->toBool() || !$voted_document_count ) ? 0 : $output->data->count;
// 해당 회원이 작성한 게시글들이 추천받은 횟수
$voted_document_sum = ( !$output->toBool() || !$voted_document_sum ) ? 0 : intval($output->data->sum);
}

- 추천받은 게시글수($voted_document_count)는 회원이 작성한 글들 중에서 추천받은 글의 개수입니다.

- 게시글들이 추천받은 횟수($voted_document_sum)는 회원이 작성한 글들이 추천받은 건수의 총합입니다. 따라서 한 문서 안에서 추천을 2회 이상 받은 적이 있다면, $voted_document_count보다 $voted_document_sum이 더 클 수밖에 없습니다.

- 아래에 나오는 5) ~ 9) 역시 같은 형식으로 이뤄졌으니 지금 설명을 잘 염두에 두시면 되겠습니다.

 

5) 회원이 추천받은 댓글수와 그 댓글들이 추천받은 횟수

{@
$output = executeQuery($query_path . '.getVotedCountForMemberSrlInComment', $args);
// 해당 회원이 작성한 댓글 중 추천받은 댓글수
$voted_comment_count = ( !$output->toBool() || !$voted_comment_count ) ? 0 : $output->data->count;
// 해당 회원이 작성한 댓글들이 추천받은 횟수
$voted_comment_sum = ( !$output->toBool() || !$voted_comment_sum ) ? 0 : intval($output->data->sum);
}

 

6) 회원이 비추천받은 글수 및 그 글들이 비추천받은 횟수

{@
$output = executeQuery($query_path . '.getBlamedCountForMemberSrlInDocument', $args);
// 해당 회원이 작성한 게시글 중 비추천받은 게시글수
$blamed_document_count = ( !$output->toBool() || !$blamed_document_count ) ? 0 : $output->data->count;
// 해당 회원이 작성한 게시글들이 비추천받은 횟수
$blamed_document_sum = ( !$output->toBool() || !$blamed_document_sum ) ? 0 : intval($output->data->sum);
}

 

7) 회원이 비추천받은 댓글수와 그 댓글들이 비추천받은 횟수

{@
$output = executeQuery($query_path . '.getBlamedCountForMemberSrlInComment', $args);
// 해당 회원이 작성한 댓글 중 비추천받은 댓글수
$blamed_comment_count = ( !$output->toBool() || !$blamed_comment_count ) ? 0 : $output->data->count;
// 해당 회원이 작성한 댓글들이 비추천받은 횟수
$blamed_comment_sum = ( !$output->toBool() || !$blamed_comment_sum ) ? 0 : intval($output->data->sum);
}

 

8) 회원이 신고당한 글수 및 그 글들이 신고당한 횟수

{@
$output = executeQuery($query_path . '.getAccusedCountForMemberSrlInDocument', $args);
// 해당 회원이 작성한 게시글 중 신고당한 게시글수
$accused_document_count = ( !$output->toBool() || !$accused_document_count ) ? 0 : $output->data->count;
// 해당 회원이 작성한 게시글들이 신고당한 횟수
$accused_document_sum = ( !$output->toBool() || !$accused_document_sum ) ? 0 : intval($output->data->sum);
}

 

9) 회원이 신고당한 댓글수와 그 댓글들이 신고당한 횟수

{@
$output = executeQuery($query_path . '.getAccusedCountForMemberSrlInComment', $args);
// 해당 회원이 작성한 댓글 중 신고당한 댓글수
$accused_comment_count = ( !$output->toBool() || !$accused_comment_count ) ? 0 : $output->data->count;
// 해당 회원이 작성한 댓글들이 신고당한 횟수
$accused_comment_sum = ( !$output->toBool() || !$accused_comment_sum ) ? 0 : intval($output->data->sum);
}

 

 

4. 유의사항 ⇪ 목차

- 물론 이 모든 변수를 다 활용하실 일은 아마 없을 겁니다. 그때그때 필요한 경우에만 꺼내서 활용하시면 되니까요.

- 다만, 이때 주의사항이 있습니다.

  • 전체 게시글수($total_document_count)와 전체 댓글수($total_comment_count)의 경우에는 변수 그대로 사용해도 무방하지만,
  • 그외의 변수들을 생성하실 때는 위에서 하이라이트됐던 2행과 3행을 반드시 먼저 써주셔야 합니다. 이 부분이죠.
$args = new stdClass;
$args->member_srl = $_member_srl;

 

- 이 부분만 유의하신다면 사용하지 않을 변수들은 $output~~~ 로 시작하는 문단 단위로 삭제해서 적용하시는 걸 권장합니다.

- 만약 필요하지 않은 변수들을 그대로 방치한다면, 변수 생성을 위해 그만큼 db가 고생을 해야 하니까요.

- 즉, 위에서 4) ~ 9)에서 생성되는 변수들은 각각의 바로 앞에 있는 $output = executeQuery($query_path ~~~~); 에 포함된 쿼리들로부터 생성되는 변수입니다.

- 따라서 4) ~ 9) 각 항목들에서 두 변수 중에 하나만 사용한다 하더라도 같이 묶여 있는 $output = executeQuery($query_path . '.get~~~~~', $args); 이 부분은 반드시 존재해야 합니다.

- 하지만 만약 각 항목의 두 변수 모두 사용하지 않는다면 $output = ~~~ 부분은 아예 필요가 없기도 합니다.

-> 이하의 변수들 모두 같은 형식으로 생성되기 때문에 반드시

 

 

5. 각 변수에 대한 설명 ⇪ 목차

- 이제 각 변수들을 해당하는 html 페이지에서 초콜릿처럼 꺼내먹으면 됩니다.

- 가령,

  • 회원정보 페이지에서 해당 회원의 전체 게시글수를 출력하고 싶다면,
    작성한 문서수 : {$total_document_count}
  • 게시판 본문에서 게시글 작성자가 작성했던 댓글들이 여태껏 받았던 추천의 총 횟수를 출력하고 싶다면,
    총 추천 수 : {$voted_comment_sum}

... 이라고 하면 되는 거죠.

- 이상의 변수들에 대해 다시 한번 정리해보겠습니다.

 

$total_document_count

해당 회원이 작성한 게시글수

$total_comment_count

해당 회원이 작성한 댓글수

 

$voting_document_count

해당 회원이 추천한 게시글수

$voting_comment_count 해당 회원이 추천한 댓글수
$blaming_document_count

해당 회원이 비추천한 게시글수

$blaming_comment_count 해당 회원이 비추천한 댓글수
$accusing_document_count

해당 회원이 신고한 게시글수

$accusing_comment_count 해당 회원이 신고한 댓글수

 

$voted_document_count

해당 회원이 추천받은 게시글 개수

$voted_document_sum

해당 회원의 게시글들이 추천받은 횟수

$voted_comment_count

해당 회원이 추천받은 댓글 개수

$voted_comment_sum

해당 회원의 댓글들이 추천받은 횟수

 

$blamed_document_count

해당 회원이 비추천받은 게시글 개수

$blamed_document_sum

해당 회원의 게시글들이 비추천받은 횟수

$blamed_comment_count

해당 회원이 비추천받은 댓글 개수

$blamed_comment_sum

해당 회원의 댓글들이 비추천받은 횟수

 

$accused_document_count

해당 회원이 신고당한 게시글 개수

$accused_document_sum

해당 회원의 게시글들이 신고당한 횟수

$accused_comment_count

해당 회원이 신고당한 댓글 개수

$accused_comment_sum

해당 회원의 댓글들이 신고당한 횟수

 

 

- 이상입니다. ... 끝~!

Atachment
첨부

윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • ?
    커뮤니티 사이트에서 활용가치가 충분 할듯 합니다. ^^
  • ? profile

    비추천이랑 신고는 제가 잘 쓰지 않는 기능이어서 쿼리에 오류가 있을 수도 있으니,
    혹시 사용하시게 되면 알려주세요~

  • profile
    우와.. 알짜배기 팁이네요.~ 추천합니다.
  • profile profile
    필요할 때 꺼내 쓰세요~ ㅎㅎㅎ
  • profile

    좋은 팁 감사합니다. 저희는 서명 대신에 글 쓴이 정보를 출력해주고 있는데 정보를 계속 추가하려고 했는데 추천 문서수 와 총 추천 수를 우선 추가해 주었습니다.

     

    스크린샷(153).png

  • profile profile

    게시판 본문에 넣으셨나보군요. 이것도 괜찮은 것 같습니다. 역시bb

  • ?
    좋은 팁도 그렇지만 참 대단하신 마음가짐을 가지고 계시네요. 그런 부분을 배우게 되는 것도 이 커뮤니티에 매일 들어오는 이유가 아닌가 싶네요. 행복한 하루 되세요~ 고맙습니다.
  • ? profile
    저렇게 db나 캐시에서 데이터 빼오는 퀘스트를 보면 저도 모르게 흥분을 해요ㅜㅜㅜ
  • ?
    최고에요. 너무 감사드려요. 인사 먼저 크게 올리고 해보고 오겠습니다~
  • ?

    아....염치없지만...

    추천 받은 문서수
    신고 받은 문서 수 등만 있는데

    댓글에도 가능할까요? 추천받은 댓글수 등등~

     

    아...추천 받은 문서수 가 아니라 추천 받은 횟수가 댓글 추천 받은 것 까지 총합인건가요?

  • ? profile
    아 맞습니다. 문서 기준이에요.
    댓글도 한번 들여다봐야겠네요 :D
  • profile ?

    아..문서만 기준이면
    $voted_count 와 $voted_sum 나 신고 받은 수나 신고 받은 횟수 합의 숫자 차이가 현재 없어야 하는게 맞겠죠?

  • ? profile
    sum이 더 많아요. 문서 하나에 추천이 여러개라서요
  • profile ?

    아~ 추천 받은 문서수 자체와 총 추천횟수군요~ 감사합니다~

  • ? profile

    댓글도 적용은 했는데, 시간상 직접 시연은 못해봤어요.
    하지만 구도가 문서랑 똑같아서 작동에는 문제가 없을 것 같습니다.

    쿼리 폴더 파일 전체 교체하시고, html에 들어갈 php 구문도 싹 다 갈아엎어주세요. 그리고 시연을...

  • profile ?
    예 해보겠습니다. !! 산삼보다 좋은 윤삼!
  • profile ?

    너무 잘 됩니다!!!! ^^ 수고 많으셨습니다.

     

    ps. 전 다른 이유로 게시물 본문에는 이용을 할 생각이 없지만, 그래도 검색해서 오실분들을 위해 본문에 적용할 쿼리 구문을 몇자 같이 적어 두시면 다른 글 찾아 볼 필요 없이

    완전체 팁이 될듯 합니다. 아..제목도 수정 해야 하나.. T.T

  • ? profile
    앗싸, 다행입니다!!!
  • ? profile
    다른 모듈에서도 충분히 사용할 수 있을 텐데 말씀하신대로 RXE에 익숙하지 않은 분들한테는 아무래도 어려움이 있겠네요.
    한번 시도해보겠습니다!
  • ? profile

    저는 본문에 넣으려고 그냥 귀찮아서 쿼리파일 경로 자체를 스킨까지 픽스해버려서 넣었습니다.
    $args->member_srl = $oDocument->getMemberSrl();
    $query_path = 'board/skins/comely_board/';

    그리고 조회할 회원번호는 당연히 문서 작성자의 회원번호로 바꿨구요.

  • profile ?
    수고하셨습니다~
  • profile profile
    감사합니다~
    복붙해서 문서 업그레이드 할게요!!
  • profile
    ㅋㅋㅋ 넘 재밌고 유쾌하시네요!
    유용한 정보 감사합니다.
    배워서 남줘보려고 몇년째 보는데, 실력이 안느네요 ㅠㅠ
  • profile profile
    합치면 정이 되는 것 아니겠습니까 하하하하;;;
  • ?
    넘나 유용하게 잘 적용했습니다! ㅎㅎ
    근데 한가지, 추천받은 댓글수가 0일때 그 댓글이 추천받은 횟수란은 0으로 뜨지 않고 그냥 공백으로 나오는데 해결책이 있을까요?
  • ? profile

    헐 그렇던가요?
    그럼 일단 궁여지책으로
    {$voted_comment_count ? $voted_comment_count : 0}
    같은 식으로 해보세요ㅜㅜㅜ

     

    덧. 잘 되는지도 일러주시면 감사하겠습니다.

  • profile ?
    잘 됩니다 ㅎㅎ 궁여지책이어도 잘 작동하니 대만족이에용 ^^
  • ? profile
    말씀해주셨던 부분 반영해서 수정했으니 참조해주세요.
    https://xetown.com/tips/1386849#user_content_03
    수정사항 반영하시면 {$voted_comment_count}으로 그냥 사용해도 될 겁니다.
  • profile ?
    고생하셨습니다 ^^
  • ?
    음... 쿼리를 페이지 출력때마다 20번이나 추가로 날리면.. 부담이 상당할텐데요...
    이런 코드는 속도 생각하시면 화면 출력할때마다 쿼리를 20번씩 날리는 식으로 구현하면 안됩니다.
    어차피 이 정보들은 추천/비추천할때만 갱신되니까 추천/비추천을 했을때 동작하도록 구현하는게 맞는 방향입니다.
    그래서 회원정보에 적당히 빈 필드를 추가해서 거기에다가 저장해놓는 식으로 하는거죠. 화면 출력할때는 회원정보에 포함된 정보를 읽어서 출력만 하는거구요.
  • ? profile

    네, 안 그래도 그 부분이 걸려서 20개나 다 쓰는 걸 권장하진 않았습니다. https://xetown.com/tips/1386849#user_content_04

    처음엔 2개짜리로 시작했는데 점점 불어나더니...ㅋㅋㅋ
    말씀하신 방식으로 누군가 애드온이나 모듈을 만들어주신다면 좋을 것 같아요 ㅜㅜㅜㅜ

  • profile ?
    이미 구현 자체는 다 해놓으신거라서... XE의 모듈 제작 방식에 맞춰서 배치만 다시하면 되는 작업인데 한번 직접 해보시는게 어떨까요? 보아하니 이정도 작업을 혼자 하실 수 있을 정도라면 XE 모듈 제작 방법만 배우면 꽤 의미있는 발전이 될겁니다.
  • ? profile
    이게 저한테 필요한 기능이면 할 수도 있을 텐데 저는 딱히 커뮤니티 운영자는 또 아니어서요. 동기 부여가 잘 안 돼요;;; 그냥 팁으로 쓰다가 일이 너무 크게 번졌네요ㅎㅎ 서드파티 개발은 다른 뜻있는 분께 패스하겠습니다 :D
  • ?
    윤삼님~ 질문 하나만 해도 될까요?ㅠ pc스킨인 스케치북 스킨에서는 정상적으로 출력되는데, 모바일 스킨(neon mobile board)에서는 아래처럼 바꿔줘도 출력값이 0으로만 출력이 되네요. 혹시 다른 코드를 넣어줘야 할게 있나요? 쿼리 폴더도 pc랑 동일하게 넣은 상태입니다.
    {@
    $_member_srl = $oDocument->get('member_srl');
    $query_path = 'board/m.skins/' . $module_info->skin;
    }
  • ? profile
    그러고 보니 모바일 스킨 생각을 못했었네요.
    지금 바로 확인은 못하는데요.
    어쨌든 xml파일을 모바일 스킨 폴더에 넣으신 거죠?
    경로 변경은 잘 된 것 같은데, $module_info->skin 말고 $module_info->mskin 도 해보셨나요?
    모바일 스킨은 왠지 mskin일 것 같은 느낌이...
  • ? profile

    아, 그리고 xml 파일이 pc 스킨에 이미 있는 상황이라면 그냥
    $query_path = 'board/skins/' . $module_info->skin;
    으로 하셔도 될 것 같은데요.
    왠지 느낌이 그래요;;;

  • profile ?
    흠.. $query_path = 'board/skins/' . $module_info->skin; 로 pc랑 동일하게 하면 안되구, $module_info->mskin도 안 되네용 ㅠㅠ
  • ? profile
    0으로만 출력되는 문제 저는
    !$output->toBool() || !$voting_document_count

    이런 부분에서 || !$voting_document_count 이부분을 날렸습니다.

    그런 대신 출력하는 부분에서

    {number_format($변수)} 로 처리해 줘서 값이 없을때 공란을 0으로 표시되게 해주었습니다.
  • profile ?
    현재 값이 없을 때 공란뜨는 문제는 0으로 표기되게끔 되어 있는 상태입니다. 문제는 모바일쪽에서 그냥 값이 0으로만 표기된다는 점이네요.
  • ? profile

    $query_path = 'board/m.skins/' . $module_info->mskin;
    으로 해도 안 된다는 거죠? mskin 이요.

     

    그리고 만약 $query_path = 'board/m.skins/' . $module_info->mskin; 으로 하신 거라면

    쿼리 xml 파일과 폴더가 해당 경로에 있어야 해요.

  • ? profile

    그러니까요. 제가 말씀 드린 대로 고치면 값이 있으면 출력이 되고 없으면 공란으로 바뀝니다.
    공란 문제를 해결하려면 변수 출력 방법을 제가 말씀 드린대로 고치시면 된다는 것입니다.

    지금 코드로는 저 같은 경우 댓글 쪽만 무조건 0이 출력되어서 고쳤습니다.

     

    그리고 쿼리 경로는 어차피 PC 스킨으로 그냥 두셔도 되는거구요.

  • profile ?
    넵 그렇게 해도 0으로만 표기됩니다. 쿼리 폴더도 pc랑 동일한 위치에 모바일도 따로 넣었습니다. 근데 작성글과 작성댓글은 정상적으로 뜨네요... 제 모바일스킨 ream.html 코드문제일수도 있을꺼 같아요. 이리저리 시도중입니다. ㅎㅎ;
  • ? profile

    제가 말씀드린 코드는 지워 보셧나요? 0을 출력하는 조건문에서 "|| 블라블라" 이부분이요.

  • profile ?
    해 봤는데 똑같습니다. 모바일 스킨의 read.html 다른 코드 문제 때문일듯 해요. pc랑 동일한 코드인데 모바일에서만 문제가 있는걸 보면....쩝
  • ? profile

    php로 쿼리를 날리는거라 스킨 문제라기보다는 뭔가 실수가 있거나 오류가 있을 것 같습니다.

     

    모바일 스킨에 적당한 곳 

    $query_path

    보다 아래에 

     

    { $query_path }

    라고 출력을 해보세요. 어떤 경로로 나오는지요.

  • profile ?
    어렵네요 ㅠ 코알못의 한계입니다. 잠정보류중 ㅠ
  • ? profile
    디버깅은 제가 말씀 드린 식으로 한단계씩 찾아가는 겁니다. 포기 하지 마세요. 해보면서 늡니다.
    { $query_path }

    해서 쿼리 경로가 제대로라면
    다음은
    {$_member_srl}
    해서 글쓴이 회원번호가 맞는지

    이게 다 맞다면 쿼리 하는 코드가 틀렸거나 해당 경로에 쿼리파일이 없거나 입니다.
  • profile ?
    { $query_path } 를 출력하니까 board/skins//USE_DEFAULT/ 요렇게 뜨네요.. 뭔가 잘못된거 같네요;
  • ? profile

    자 첫번째 원인을 찾았습니다. 이제 이것부터 해결하고 보면 다음 진도가 나가는 겁니다.

    $query_path = 'board/skins/pc스킨경로/' 로 직접 수동으로 넣어보세요.

  • profile ?
    {@
    $_member_srl = $oDocument->get('member_srl');
    $query_path = 'board/m.skins/' . $module_info->mskin;
    }
    이렇게 입력하니까 board/m.skins/neon_mobile_board 로 올바르게 뜨긴하는데, 출력값은 여전히 0이에요.
  • ? profile

    {$_member_srl}

    은 디버깅으로 찍어 봤나요?

    해당 폴더 아래에 쿼리폴더를 만들고 거기에 쿼리파일은 다 넣으셨죠?

    그리고 쿼리한 코드는 어떻게 쿼리하셨는지요?

     

    || !$voting_document_count 이부분은 다 지워주세요. 테스트를 위해서 

  • profile ?
    {$_member_srl} 도 정상적으로 회원번호 뜨고 쿼리폴더도 넣었습니다. 글구 말씀하신 부분 다 지우고 {number_format($변수)} 식으로 넣었는데도 여전히 0으로 뜹니다 ㅎㅎ;
  • ? profile

    그러니까 이후 쿼리하는 부분 전체를 코드를 보여주시고

    쿼리파일을 업로드하신 경로를 쿼리파일폴더명까지 다 알려줘보세요.

  • profile ?
    {@
    $_member_srl = $oDocument->get('member_srl');
    $query_path = 'board/m.skins/' . $module_info->mskin;
    }
    쿼리부분이고,
    업로드 경로는 'modules/board/m.skins/neon_mobile_board/queries' 입니다.
  • ? profile

    쿼리하는 코드가 없는데요?

    지금 적어주신 코드는 기본 회원번호,쿼리폴더 경로 선언까지만 한겁니다.

  • ? profile
    {@
    $args = new stdClass;
    $args->member_srl = $_member_srl;

    원하는 쿼리 목록
    }

    이거는 요?
  • ?
    이거 말씀하시는거죠? 게시글 추천횟수랑 댓글 추천횟수만 씁니다.
    {@
    // 해당 회원이 작성한 게시글수
    $total_document_count = getModel('document')->getDocumentCountByMemberSrl($_member_srl);

    // 해당 회원이 작성한 댓글수
    $total_comment_count = getModel('comment')->getCommentCountByMemberSrl($_member_srl);

    $args = new stdClass;
    $args->member_srl = $_member_srl;

    // 해당 회원이 작성한 게시글들이 추천받은 횟수
    $voted_document_sum = ( !$output->toBool() ) ? 0 : intval($output->data->sum);

    // 해당 회원이 작성한 댓글들이 추천받은 횟수
    $voted_comment_sum = ( !$output->toBool() ) ? 0 : intval($output->data->sum);
  • ? profile

    이렇게나 대화를 많이 나누시다니ㄷㄷ
    저한테 바로 댓글 남기지 않는 이상 알림이 안 뜨게 돼 있나봅니다.

    그나저나 쿼리 실행문을 빼먹으셨네요.

    $voted_document_sum 앞에
    $output = executeQuery($query_path . '.getVotedCountForMemberSrlInDocument', $args);

    $voted_comment_sum 앞에
    $output = executeQuery($query_path . '.getVotedCountForMemberSrlInComment', $args);
    이 각각 안 들어갔어요.

  • ? profile
    쿼리는 어디다가.... ㅜㅜ
  • ? profile
    제가 팁 해설을 알기 쉽게 전달하지 못한 거 같아요.
    본문을 다시 손을 봐야겠습니다ㅜㅜ