위젯

회원 소개 위젯

추천 수 2 댓글 60
Extra Form
자료 소개 특정 회원 그룹에 속한 회원들을 출력하는 위젯입니다. 캐시를 적용하면 회원그룹 링크와 페이지 내비게이션이 출력되지 않으므로 주의하세요.
설치 경로 ./widgets/ap_member_intro
테스트 환경 Rhymix 1.x
라이선스 GPL v2
이름 버전 날짜 다운수
ap_member_intro.0.4.1.zip 0.4.1 2019-02-18 124
ap_member_intro.0.4.0.zip 0.4.0 2018-07-23 71
ap_member_intro.0.3.1.zip 0.3.1 2018-07-19 32

 

베타버전으로 공개했던 위젯을 정식 버전으로 공개합니다.

베타버전 히스토리 : https://xetown.com/resources/1019561 https://xetown.com/rxe_file/1020511 https://xetown.com/board/1021565

 


 

0.4.1 업데이트(2019-02-18)

- ajax 호출시 로딩 이미지 출력

- ajax 호출시 에러 발생할 경우 에러 메시지 출력

 


 

0.4.0 업데이트(2018-07-23)

- 팔로우/팔로워 항목은 구름이님의 구독 모듈을 사용할 경우 구독 팔로우/팔로워로 표시되며, 그렇지 않을 경우 커뮤니케이션 모듈의 친구 팔로우/팔로워로 표시됩니다. (구름이님께서 직접 코드와 DB 쿼리를 제공해주셨습니다!)

- 팔로우/팔로워의 출력 개수를 설정할 수 있게 했습니다.

- 팔로우/팔로워의 출력 순서는 무작위(랜덤)으로 설정했습니다.

- 개인정보 노출을 최소화하기 위해 불러오는 변수를 최적화했습니다.

- 위젯 클래스 파일의 소스를 최대한 간략하게 정리를 해봤습니다.

- 아, 그리고 최근글/댓글 불러올 때 비밀글과 임시저장글, 그리고 비밀댓글은 불러오지 않게 했습니다. (달콤한인생님)

 


 

회원그룹을 선택해서 선택된 그룹의 회원과 약간의 동향을 소개해주는 위젯입니다.

위젯 설정을 중심으로 자료 소개를 드리겠습니다.

 

0. 스킨 및 캐시 설정

0.png

- 스킨 : 현재 위젯에는 ap_list라는 제목의 기본 스킨이 포함되어 있습니다. 별도의 스킨을 제작하셔서 사용 및 공유하시면 좋습니다.

- 캐시 : 캐시 값을 0 이상으로 설정하시면 위젯 활용에 일정 정도 제약이 있을 수 있습니다(이와 관련해서는 아래 부분에서 언급하도록 하겠습니다). 다만 사이트 속도를 감안하면 캐시 설정을 하시는 게 좋습니다. 개인적으로는 사이트 이용자들이 자주 방문하는 페이지에서는 캐시를 설정해서 쾌적하게 운영하고, 별도의 페이지로 회원을 소개하고자 하는 경우에는 캐시 값을 0으로 해서 다양한 기능을 제공해주는 게 좋다고 생각하고 있습니다.

 

 

1. 헤더 설정

1.png

- 헤더 설정을 하면 별도의 위젯 스타일 없이 위젯에 관한 설명을 시도할 수 있습니다. 두 항목에 아무 것도 입력하지 않으면 기본 스킨에서는 헤더 부분을 노출하지 않도록 되어 있습니다.

- 기본 스킨을 기준으로 위 그림과 같이 입력하면 다음과 같은 결과로 출력됩니다.

2.png

 

 

2. 목록 설정

3.png

- 출력 대상 회원 그룹 : 사이트 내에서 어떤 그룹을 불러들일 것인지 선택합니다. 기본 스킨에서는 여기서 선택한 그룹들이 아래 그림과 같이 탭 메뉴 형식으로 출력됩니다. 단, 캐시 값이 설정되어 있으면 탭 메뉴는 출력되지 않으므로 유의하셔야 합니다.

4.png

- 목록수 : 한 화면에 몇 명의 회원을 보여줄 것인지 결정할 수 있습니다.

- 페이지수 : 목록수보다 불러들인 회원수가 많으면 페이지 내비게이션이 작동합니다. 이때 페이지수에 입력한 값에 따라 페이지 링크의 개수를 조절할 수 있습니다. 기본 스킨에서는 아래 그림과 같이 페이지 내비게이션을 제공하고 있습니다. 단, 이때도 캐시값이 설정되어 있으면 페이지 내비게이션이 출력되지 않으므로 유의하셔야 합니다.

5.png

- 정렬 방법 : 수집한 회원 리스트를 어떤 방식으로 정렬할지 결정합니다. 제공되는 옵션으로는 이름, 가입일, 최근 로그인 일자, 무작위(랜덤) 등이 있습니다.

- 이름 유형 : 정렬 방법으로 '이름'을 선택했다면, 이 이름의 유형을 닉네임, ID, 사용자 이름 중 하나로 골라야 합니다. 이 세 가지 항목은 개인정보 문제도 있고 기능상 중복적이므로 사이트 운영자가 원하는 것 중 하나만 택해서 출력하도록 제한을 뒀습니다.

- 정렬 순서 : '정렬 방법'에서 리스트 정렬의 기준을 잡았다면 여기서는 이를 오름차순으로 할 것인지 내림차순으로 할 것인지 결정합니다.

 

 

3. 출력 및 작동

6.png

- 회원그룹 탭 메뉴 보기 : 스킨 상단의 그룹별 탭 메뉴의 출력을 강제적으로 제어할 수 있습니다. 그러나 캐시 값이 설정되어 있으면 이 옵션과 무관하게 탭 메뉴는 출력되지 않습니다.

- 페이지 내비게이션 보기 : 스킨 하단의 페이지 내비게이션의 출력을 강제적으로 제어할 수 있습니다. 그러나 캐시 값이 설정되어 있으면 이 옵션과 무관하게 페이지 내비게이션은 출력되지 않습니다.

- 표시 항목 및 순서 : 회원 리스트에서 출력할 항목의 옵션과 그 순서를 지정할 수 있습니다. 현재 프로필 이미지, 이름(닉네임, ID, 사용자이름 중 하나), 최근 글, 최근 댓글, 이메일 주소, 홈페이지, 블로그, 생일, 회원가입일, 최근 로그인 날짜, 소속된 회원 그룹, 기타 사용자정의 회원 확장 정보, 회원 서명, 팔로우(해당 회원이 지정한 친구), 팔로워(해당 회원을 친구로 지정한 회원) 등이 제공됩니다. - 참고로 최근 글과 최근 댓글은 가장 최신의 1건만 골라서 출력하도록 되어 있습니다. 또한 팔로우, 팔로워 기능은 향후 구름이님의 구독모듈과 연계할 방법을 찾고 있습니다.

- 프로필 이미지 가로/세로 최대 크기 : 프로필 이미지의 최대 크기(max-width, max-height)를 지정할 수 있습니다. 아무것도 입력하지 않으면 관리자 페이지에서 지정한 프로필 이미지의 최대 크기로 제한됩니다. 참고로 프로필 이미지가 없는 경우 기본 스킨에서는 다음과 같이 메트로섹슈얼한 범용 이미지를 출력하도록 되어 있습니다.

no_profile.png

- 최근 문서 섬네일 출력, 섬네일 이미지 가로/세로 크기 : '표시 항목 및 순서'에서 '최근 글'을 표시 항목으로 뒀을 경우, 해당 문서의 섬네일을 출력할 수 있습니다. 섬네일 이미지의 크기에 제한을 둘 수 있으며, 제한을 두지 않으면 기본값 80px로 제한됩니다.

- 출력할 회원 확장정보 : 이 위젯에서는 회원의 사용자정의 확장 정보도 출력이 가능합니다. 사이트에서 설정되어 있는 확장변수 중 어느 것을 출력할지 선택할 수 있습니다. 확장변수의 id를 쉼표 단위로 입력하면 됩니다.

- AJAX 사용 : 이 기능을 사용하면 회원그룹 탭 메뉴와 페이지 내비게이션의 페이지 링크를 클릭했을 때 페이지 전체를 새로고침하지 않고 위젯 영역만 내용을 바꿔줍니다. 물론 위젯에 캐시 값을 설정했다면 ajax 호출은 되지 않습니다.

 

 

0. 미리보기

- 별 내용은 없지만 참고용으로 둘러보시면 좋을 것 같습니다.

- https://dev.aporia.blog/member_intro

 

제작자 윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile
    안녕하세요 윤삼님
    php8.0 버전 업그레이드 이후

    서버 오류 TypeError #0 "count(): Argument #1 ($value) must be of type Countable|array, null given" in widgets/ap_member_intro/ap_member_intro.class.php on line 51

    아래와 같은 에러가 발생되서요 ㅜㅜ

    혹시 php 8.0 지원해주실 계획은 없으실까요?
  • profile profile
    저도 버전업을 하긴 해야 하는데... 당장은 힘들 것 같고 이렇게 호환성 이슈 알려주시면 힘닿는대로 패치를 해보겠습니다.
    이따 짬 날 때 한번 열어서 확인해볼게요.
  • profile profile
    언제나 감사합니다 윤삼님! 즐거운 주말되세요!!
  • profile profile

    해당 파일 49~58행을
    아래와 같이 바꿔보시고 테스트해주실 수 있을까요?

     

    // 회원 모듈 사용자정의 불러오기
    $existing_extra_keys = $oMemberModel->getJoinFormList();
    $extra_keys = array();
    $selected_extra_keys = array_map('trim', explode(',', $args->extra_keys));
    if ( !empty($existing_extra_keys) )
    {
        foreach ( $existing_extra_keys as $srl => $val )
        {
            if ( in_array($val->column_name, $selected_extra_keys) )
            {
                $extra_keys[$srl] = $val;
            }
        }
    }

     

  • profile profile
    해결 했습니다!
    감사합니다 윤삼님!
  • profile
    이걸 무료로 풀어주시다니 감사합니다!
  • profile
    감사해요! 항상 무료네요 감사해요ㅠㅠ
  • profile
    와 좋은 자료 감사드려요!
  • profile
    좋은 자료 항상 감사합니다. 포인트 받으셔도 되는데 항상 무료네요.
  • profile
    캬~~ 진짜 이쁘게 만들었네요 ^_^
  • profile
    감사합니다.
    어떻게 사용하는 진 모르겠지만 잘 활용 해보겠습니다.
  • ?
    감사합니다 멋진자료 잘 사용하겠습니다.
  • profile
    감사합니다.
    소중하게 사용하겠습니다
  • ?
    너무 좋습니다.
    최근문서 출력할때 특정게시판 글은 제외할수 없나요?
    1:1 문의 게시판 글이 떠서 제외하고 싶은데
  • ? profile
    배포 초기에 피드백 주셨으면 좋았을 텐데 지금은 따로 기능개선을 하거나 구체적 정보를 드리기가 어려운 상황입니다.
    문서를 가져오는 함수에서 예외설정을 두는 방식으로 개조를 하셔야 할 것 같습니다;;
  • profile
    감사합니다.
  • profile
    항상 좋은자료 공개해주시는 윤삼님 감사합니다.
    혹시 회원확장변수를 커스텀해서 사용하고 싶은데 첫번째 회원 확장정보만 따로 가져와서 보고 싶으면 어떻게 해야할지 알려주실 수 있을까요?
  • profile profile
    스킨을 보시면 확장변수 가져오는 부분이 있을 텐데 첫번째 키값 기준으로 변수를 불러오면 될 거예요 :)
  • profile profile
    <div class="ap_member_intro_extra" cond="$option === 'extra' && count($item->extra_vars)" loop="$item->extra_vars => $eid, $var">
    * {$var['title']} : {$var['value']}
    </div>

    이부분이 확장정보 가져오는 곳 같은데 어떻게 해야 각각 불러와질지 모르겠네요
  • profile profile
    변수 구조가 그랬군요 (가물가물)

    {array_values($item->extra_vars)[0]['title']} : {array_values($item->extra_vars)[0]['value']}

    이렇게 해보시겠어요?

    아니면 eid 기준으로 뽑을 수도 있겠습니다. 예컨대 첫번째 확장변수의 eid가 ox라면...

    {$item->extra_vars['ox']['title']} : {$item->extra_vars['ox']['value']}

    이렇게요.
  • profile profile
    친절한 답변 갑사합니다^^ 제가 뭔가 잘못하고 있는지 안되네요 ㅎ; 이렇게 시간내서 답까지 달아주셔서 정말 감사드립니다. 오늘도 행복하루 되세요~^^
  • profile
    진심으로 감사드립니다 ^^
  • profile
    잘쓰겠습니다.
  • ?
    감사합니다. 잘 사용하도록 하겠습니다.^^
  • profile
    좋아요... 깔끔하고 ^^
  • ?
    회원목록 출력기능이 필요했는데...감사합니다.
  • ? profile
    아, 이게 수요가 아예 없는 건 아니었군요. 다행입니다;;
  • profile ?
    회원목록 출력이 필요해서 고쳐쓰고 있습니다. ^^ 회원기본정보에 확장변수 출력정보.
    최고관리자는 엑셀저장 기능도 향후 보강해주신다면 더 좋겠습니다.
  • ? profile
    짬날 때마다 제작 중인 회원탐색기 모듈이 있는데, 공부 좀 해보고 엑셀 출력 기능도 넣어봐야겠네요. 새로운 도전, 좋아합니다ㅋㅋ
  • profile
    회원검색과 병행해서 페이지를 만들고 싶은데요.
    출력된 회원의 프로필이미지,닉네임을 클릭하면 즉시 썸씽페이지로 연결 가능하게 하면 어떨까요?
  • profile profile
    썸씽 모듈 설정을 불러오면 완벽하긴 한데, 당장 그럴 순 없으니 일단 미봉책으로 위젯 스킨 파일 intro.html을 수정해줘야 할 것 같습니다.
    24행을 <a href="{getUrl('mid', 'profile', 'smember', $item->name)}">{htmlspecialchars($item->name)}</a>으로 바꿔보세요~
  • profile profile
    일단 스킨에서는 링크를 걸었습니다 ㅋ
  • profile profile
    onclick이랑 class 속성도 지워야 하는 것 같더라구요.
  • profile profile
    아.. 닉네임쪽 확인을 안했었네요. 마저 처리해봐야겠습니다.
  • profile profile
    일단 class를 유지하면서 최선인게
    <a href="#" onclick="window.open('/@{htmlspecialchars($item->name)}');return false;" class="nName member_{$item->member_srl}">{htmlspecialchars($item->name)}</a>
    이런식 인듯 하네요. 뭐 썸씽모듈 활동내역페이지 새창이 잘 뜹니다. 회원메뉴 레이어팝업이 뜨긴 하지만요~
  • profile profile
    네! nName은 구름이님이 구독모듈 관련해서 소스를 직접 주신 거여서 유지하는 게 좋을 거 같아요.
  • profile profile
    nName 은 별 영향을 안줄거구요. member_{$item->member_srl} 이게 코어에서 회원메뉴가 뜨게 되는 class 인데 이걸 빼버리면 해결은 가능하지만 그룹 아이콘 같은 것이 사라지고 그냥 텍스트 닉네임이 출력되어서 선택의 기로에 서야 합니다 ㅋ

    위젯의 php나 js 에서 해당부분을 바꿔치기해야 그룹아이콘을 유지하면서 회원메뉴를 안뜨게 하고 원하는 링크만 동작하게 할 수 있을것 같아요.

    구독모듈위젯이 그러한 옵션이 들어가 있기 합니다.
  • profile profile
    아 그룹 아이콘도 있었죠. 사용을 안 하다보니 이렇게 잘 몰라요ㅋ
  • profile profile
    꼼수대장인가 봅니다 ㅋ
    #popup_menu_area{display:none !important;}
    이걸로 회원메뉴 안뜨고 회원활동내역으로 이동하게 했습니다 ㅋ
  • profile profile
    꼼수라뇨ㅋㅋㅋ 어쩌면 유일한 방법일 수 있을 거예요. 꼭 참고할게요.
  • ?
    아주 잘되용~~
  • ? profile
    구름이님 덕분에 완성도가 높아졌어요 흙흙;;
  • profile
    업뎃 감사합니다!
  • profile profile
    비밀글 지적해주신 거 신의 한 수였어요 :D
  • profile
    감사한 마음으로 잘 쓰겠습니다..고맙습니다 ^^
  • profile profile
    0.4.0으로 업데이트 했으니 참고해주세요~
  • profile
    좋은 자료 감사합니다. 받아서 사용해보려고 하는데

    미리보기 처럼 설명문같은것을 달려면 어떻게 해야 될까요?? ^^;
  • profile profile
    데모 페이지에 있는 것 말씀이시죠?
    그거라면 헤더 설정 부분에 텍스트를 넣으시면 돼요.
    혹시 다른 문의사항 있으시면 언제든 말씀주세요~
  • profile profile
    해봤는데 잘안되서 다시 여쭤봅니다. ㅜㅜ
    여성캐릭터 이미지 밑부분에 설명 나오는거를 해보고싶은데
    그게 헤더부분 인가요??
  • profile profile
    아, 회원 서명 부분 말씀이신가요? 회원 서명을 가져온 거예요.
    해당 위젯은 회원을 소개해주는 거지, 캐릭터 소개는 아닌데;;;
    데모 페이지 구성 때문에 가라로 회원 만들면서 서명 부분에 딱히 넣을 게 없어서 그렇게 한 거거든요.
  • profile profile
    아.. 감사합니다 ^^
  • ?
    감사합니다. 잘 사용하겠습니다.
  • ? profile
    네, 부디 유용했으면 좋겠네요 :)
  • ?
    너무 좋아요~~~ 대문에 걸어 넣고 잘 쓰고 있습니다.
  • ? profile
    대문이라니ㄷㄷ 영광입니다ㅜ
  • ?
    와,,,감사합니다. 정말 필요한 기능인데, 고맙습니다. ^^
  • ? profile
    네, 잘 써주세용~
  • profile
    감사히 사용하겠습니다. 호옥시 회원을 랜덤으로 출력하는 옵션은 안될,, 물론 지금도 너무너무 좋습니다!ㅋㅋㅋ
  • profile profile
    정렬 방법을 '무작위(랜덤)'로 해보세요~
  • profile profile
    네. 감사합니다.