현재 라이믹스 기본 content 위젯을 사용중이며, 요기 웹스택님이 올려주신 모듈인 회원 칭호 모듈을 content 위젯에서도 표시되게하고 싶어서 개조중에 있는데

https://xetown.com/download/1707204

이 모듈의 title.html에서 아래 코드를 통해 보여지는 회원칭호를

 

<!--@if($title->type == 'text')-->

    {@ $style = 'style="' . $title->option . ';"'; }

    <span class="mt mt-text" {$style}>

        <span>{$title->content}</span>

    </span>

 

content 위젯 통합 게시판 화면의 아래 그림처럼 닉네임 옆에 출력되도록 하고 싶은데

 

screenshot.png

 

닉네임 옆에 출력되는 뱃지는 title.html 파일이 담당합니다.

$title 변수는 해당 칭호의 정보가 담깁니다.

$title->type 에 따른 분기를 통해 칭호 타입을 구분하여 작성하는 것을 권장합니다.

$title->option 에 칭호의 옵션이 담깁니다. 사용자가 스킨을 변경할 것을 고려하여 간결하게 활용하는 것을 권장합니다.

$member_srl 변수는 해당 칭호를 사용하는 회원의 번호가 담깁니다. 회원의 정보를 획득하기 위해서는 스킨 내부에서 쿼리를 실행해야 합니다.

 

 

위에 스킨 제작 방법까지 친절하게 적어주셨지만

고수분들이 올려주시는 팁으로 작게 수정만해서 쓰는 수준이라 뭐가 예약된 변수고 함수인지 검색해도 나오지가 않고

(https://rhymix.org/manual/reference/index 빈문서 ㅠㅠ)

그래서 근본적으로 다른 모듈에서 받아온 변수값을 또다른 위젯이나 모듈에서 사용하는 방법을 몰라서 하루 종일 헤메고 있습니다

 

일단 검색신공을 통해  기본위젯의 html 코드에서 

 

{@
    $oTitle= &getModel('member_title');
    $Title= $oTitle->getTitle("설정");
}

 

대강 요런식으로 {$title->content} 값을 받아와보려 했는데 어림도 없었습니다 

"설정"값에는 뭐가 들어가야하는지도 아직도 감이 안오구요

 

이 모듈뿐만 아니라 다른 추가모듈에서 예시와 같은 $title->content 값을 어떻게 위젯의 html에서 받을 수 있는지 알고싶습니다 (받아오기만 한다면 어디에 넣어야 할지는 알고 있습니다!)

 

도와주세요!

 

 

  • profile

    https://github.com/rx-apps/member-title/blob/fcbdc933a88a47acd736da63655a242c3f10ffa0/member_title.model.php#L14
    getTitle() 괄호 안에 숫자가 들어가야 하는 것 같은데요?

    그리고 회원별 칭호를 가져온다면 정황상 getMemberTitle(int $member_srl) 함수를 쓰는 게 낫지 않나요?
    https://github.com/rx-apps/member-title/blob/fcbdc933a88a47acd736da63655a242c3f10ffa0/member_title.model.php#L34-L52

    {@
    $oMemberTitle= &getModel('member_title');
    $member_title = $oMemberTitle->getMemberTitle($member_srl);
    }

    이렇게 해서 $member_title을 쓰면 될 것 같은데, 그러려면 $member_srl 자리에 사용하시는 위젯에서 활용되는 회원번호 변수를 넣어주면 될 것 같습니다.
    $item->member_srl 이라든가 $val->member_srl 이라든가 $document->member_srl 같은 게 되겠죠?

     

    아참 그리고 $member_title을 print_r로 찍어서 어떤 정보가 나오는지 먼저 확인해보세요.

    <pre>{print_r($member_title, true)}</pre>

     

    참고로 {@ debugPrint($member_title)} 로도 볼 수 있는데  debugPrint의 내용은 관리자 페이지에서의 디버그 설정에 따라 다양한 곳에서 확인할 수 있습니다

  • profile profile
    헛 자세한 설명 정말 감사드립니다! print_r 아무리 찍어도 안나오길래 좌절하고 있었는데 알려주신 코드로 응용해서 다시 해보겠습니다!
  • profile profile
    윤삼님 말씀해주신대로 비슷하게 코드를 짜서 넣어보려고 했는데
    디버깅부터가 안되서 난감합니다 ㅠㅠ

    $item 선언부 아래에 디버깅 관련된 명령어를 넣고 새로고침 해봐도 화면이랑 html 상에 아무런 정보가 안나오거나 404 오류를 내뿜거나 하는데 어찌해야할까요 ㅠ

    <!--@else if($v=='nickname')-->
    <a <!--@if($item->getMemberSrl())-->href="#" onclick="return false;" class="author member_{$item->getMemberSrl()}"<!--@elseif($item->getAuthorSite())-->href="{$item->getAuthorSite()}" target="_blank" rel="noopener" class="author member"<!--@else-->href="#" onclick="return false;" class="author member"<!--@end--> >{$item->getNickName($widget_info->nickname_cut_size)}</a>


    {@debugPrint($item)}
    {@print_r($item)}
    {@var_dump($item)}

    {debugPrint($item)}
    {print_r($item)}
    {var_dump($item)}

    설정에서 패널 디버깅옵션은 다 설정했는데 화면 출력 디버깅 하고 싶습니다 ㅠㅠ
  • profile profile

    관리자 페이지에서 디버그 설정을 했는데 관리자 화면 패널에 debugPrint 함수의 결과물이 나오지 않는다면, 해당 내용이 조건문에 걸리지 않아서 그럴 걸 수도 있겠네요.

  • profile profile
    검색해봐도 맞는 디버깅 코드인것 같은데 어디서 뭔가 꼬였나보네요 라이믹스부터 재설치해서 해보겠습니다 감사합니다
  • profile profile
    코드를 보니 일반적인 콘텐츠 위젯의 기본 스킨 같은데요.
    혹시 파일을 잘못 골랐다거나 테이블형을 선택하고 목록형 부분에서 print_r을 시도했거나 하는 건 아니겠죠?
  • profile profile
    헛 대박.. 진짜로 확인해보니 테이블형 위젯 선택해놓고 목록형 부분에서 디버깅하고 있었습니다 ㅠㅠ
    감사합니다 드디어 디버깅 할 수있게 됐네요 살려주셔서 감사합니다
  • profile profile
    네 다행입니다ㅎㅎ
  • profile profile

    혹시 시간 되실때 이 코드에서 뭐가 잘못된건지 한번만 봐주실 수 있을까요

    {@

    // 요게 기본위젯에서 member_srl 구하는 코드고
    $num_srl = $item->getMemberSrl()

    // 아래는 윤삼님이 적어주신 코드이고 제가봐도 추가하거나 뺄게 없어보이는데

    // 모듈명도 똑같고 함수명도 똑같고 $num_srl도 int값인거
    // var_dump로 확인했는데 이대로 실행하면 계속 404오류 또는 흰색 화면만 나타납니다
    // 제가 알기론 코드가 잘못되서 실행조차 안될때 이런 현상인 것으로 아는데
    // 아무리봐도 코드는 수정할게 없어보여서 뭘 잘못쓴건지 모르겠습니다

    $oMemberTitle= &getModel('member_title');
    $member_title = $oMemberTitle->getMemberTitle($num_srl);
    }

    <pre>{print_r($member_title, true)}</pre>

  • profile profile
    앞부분에 {@ 가 없네요?
  • profile profile
    {@
    $num_srl = $item->getMemberSrl()
    $oMemberTitle= &getModel('member_title');
    $member_title = $oMemberTitle->getMemberTitle($num_srl);
    }

    이게 풀 코드인데 이렇게 쓰면 안되고 줄마다
    {@ $num_srl = $item->getMemberSrl() } 처럼 처리해줘야할까요?
  • profile profile

    아, 있군요. 죄송합니다. 주석 처리된 코드인지 몰랐어요ㅎㅎ
    $num_srl = $item->getMemberSrl() 끝에 ; 가 있어야 할 것 같구요.
    $oMemberTitle도 print_r 로 찍어보셨나요?

     

    그리고 $oMemberTitle= &getModel('member_title');

    이것도 어쩌면 $oMemberTitle= &getModel('Member_title'); 일지 모르겠습니다.

  • profile profile

    $oMemberTitle print_r로 찍어보면 아래처럼 모듈이름이 member_title로 잘 들어와있습니다

    $oMemberTitle->getMemberTitle($member_srl);

    [module] =member_title
    [module_info] =
    [origin_module_info] =
    [module_config] =
    [module_path] =/var/www/myserver/modules/member_title/
    [xml_info] =
    [module_srl] =

    이하 쭈루룩 잘 찍혀있는거 보면 2번째 줄까진 문제 없는것 같습니다

     

    세번째줄은 넣으면 404오류가 나오길래 세번째줄은 {@  ~~~ } 구문에 입력 안하고

    <pre>{print_r($oMemberTitle->getMemberTitle($num_srl), true)}</pre>


    이렇게 해서 찍어봤더니 member_title 값이 아닌 다른 오브젝트가 또 나오는데
    이걸 토대로 다른 함수를 한번 더 돌려야 되는게 맞겠죠?


    stdClass Object
    (
    [member_srl] =4
    [title_srl] =246
    [last_update] =20221029204152
    )

  • profile

    {@
    $num_srl = $item->getMemberSrl();
    $oMemberTitle = &getModel('member_title');
    $member_title_info = $oMemberTitle->getMemberTitle($num_srl);
    $member_title = $oMemberTitle->getTitle($member_title_info->title_srl);
    }
    이렇게 하시고

    <pre>{print_r($member_title, true)}</pre>
    찍어보세요.

     

    아마 stdClass Object로 관련 변수가 주루룩 나올 텐데

    $member_title->title 같은 식으로 필요한 변수를 골라 쓰시면 될 겁니다.

  • profile profile

    오 늦은시간에 감사드립니다

    윤삼님이 주신 코드를 돌려봤는데

    {@
    $num_srl = $item->getMemberSrl();
    $oMemberTitle = &getModel('member_title');
    $member_title_info = $oMemberTitle->getMemberTitle($num_srl);

    위 3번째까진 member_srl이랑 title_srl이 포함되 오브젝트가 출력되었는데
    네번째부턴 404오류를 뿜뿜하고 있습니다

    $member_title = $oMemberTitle->getTitle($member_title_info->title_srl);
    }



    아래는 윤삼님 코드랑 비슷하게 만들어서 제가 시험해본 코드인데 결과가 똑같이 404 입니다ㅠㅠ

    {@
    $num_srl = $item->getMemberSrl();                           //member_srl 값 가져오기
    $oModule= &getModel('member_title');                      //member_title 모듈 장착
    $oKeys = $oModule ->getMemberTitle($num_srl);    //멤버타이틀 함수 실행

     

    $okeys 리턴값

    stdClass Object
    (
    [member_srl] =4
    [title_srl] =246
    [last_update] =20221029204152
    )

     


    $title_key = $oKeys -> title_srl;                                  //title_srl값 가져오기

    위의 코드까지해서 member_srl과 title_srl까지 추출은 잘 되는데
    getTitle 함수와 getTitleHtml을 시도해보려고 한줄 더 추가하여
    아래처럼 썼는데

    1차시도 - $the_title = $oModule ->getTitle($title_key)
    2차시도 - $the_title = $oModule ->getTitleHtml($title_key, $num_srl)
    }

    <pre>{print_r($the_title, true)}</pre>

     

    역시 var_dump로 찍어봐도 $title_key와 $num_srl 모두 int값이 맞구요
    여전히 404에러 뿜뿜하며 칭호가 나오질 않습니다

  • profile profile
    https://github.com/rx-apps/member-title/blob/fcbdc933a88a47acd736da63655a242c3f10ffa0/queries/getTitle.xml#L1
    여기에 오타가 있어서 그랬던 것 아닐까 싶습니다.
    하이라이트된 행에서 id값을 getTitle로 바꿔보세요.

    해당부분은 @웹스택 님께서도 확인해주시면 좋을 것 같습니다.
  • profile profile
    그냥 나중에 모듈 하나 만들 실력이 되면 그때가서 다시 처음부터 빌드해봐야겠습니다 도와주셔서 감사합니다! 윤삼님한테 배운 방법으로 다른 것들은 커스터마이징 하기 더 쉬워졌습니다!
    시간 많이 뺏어서 죄송하네요 도와주셔서 감사합니다!
  • profile profile
    xml 파일 오타 수정해도 안 되던가요? 흐음..
    암튼 즐거운 코딩생활 되셔요!