자료실

회원 소개 위젯

2018.07.18 15:34
4,715
2
자료 유형 위젯
간단한 소개 특정 회원 그룹에 속한 회원들을 출력하는 위젯입니다. 캐시를 적용하면 회원그룹 링크와 페이지 내비게이션이 출력되지 않으므로 주의하세요.
설치 경로 ./widgets/ap_member_intro
코어 지원 범위 Rhymix 1.9
PHP 지원 범위 기타
자료 구분 공개 자료
라이선스 GPL v2
파일명버전날짜용량다운로드 수
ap_member_intro.0.4.1.zip 0.4.1 2019.02.18 31.3KB 144
ap_member_intro.0.4.0.zip 0.4.0 2018.07.23 30.5KB 73
ap_member_intro.0.3.1.zip 0.3.1 2018.07.19 28.0KB 34

 

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

베타버전 히스토리 : 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

 

윤삼 Lv. 19
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.

댓글 65

  • 2020.04.11 13:43 #1377442
    캬~~ 진짜 이쁘게 만들었네요 ^_^
  • 2020.04.12 03:25 #1377773
    좋은 자료 항상 감사합니다. 포인트 받으셔도 되는데 항상 무료네요.
  • 2020.04.12 23:29 #1378315
    와 좋은 자료 감사드려요!
  • 2020.05.08 00:26 #1395126
    감사해요! 항상 무료네요 감사해요ㅠㅠ
  • 2022.11.15 09:20 #1720127
    이걸 무료로 풀어주시다니 감사합니다!
  • 2023.12.16 12:40 #1799261
    안녕하세요 윤삼님
    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 지원해주실 계획은 없으실까요?
  • 2023.12.16 13:08 #1799264
    저도 버전업을 하긴 해야 하는데... 당장은 힘들 것 같고 이렇게 호환성 이슈 알려주시면 힘닿는대로 패치를 해보겠습니다.
    이따 짬 날 때 한번 열어서 확인해볼게요.
  • 2023.12.16 13:13 #1799268
    언제나 감사합니다 윤삼님! 즐거운 주말되세요!!
  • 2023.12.16 14:45 #1799276

    해당 파일 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;
            }
        }
    }

     

  • 2023.12.17 00:01 #1799307
    해결 했습니다!
    감사합니다 윤삼님!
  • 2024.11.29 06:08 #1847447
    혹시 최근 문서에서 특정 mid 게시판의 최근 글만 가져오려고 시도 중인데요.
    간단한 팁으로 해결이 가능한 부분이면 도움을 좀 받을 수 있을까요?
  • 2024.11.29 14:56 #1847523

    ap_member_intro.class.php 파일 118행쯤에 $obj->member_srl = $val->member_srl;라는 부분이 있는데 그 밑에다가
    $obj->module_srl = '게시판 번호';
    라고 추가해보세요.

    그리고 queries/getDocumentListByMemberSrl.xml 파일이 있는데, 그 파일의 <condition operation="equal" column="member_srl" var="member_srl" filter="number" notnull="notnull" pipe="and" />이라는 부분 아래에
    <condition operation="equal" column="module_srl" var="module_srl" filter="number" pipe="and" />
    라고 추가해보세요.

    이렇게 하면 될 것 같은데 한번 시도해보시고 말씀해주세요.

  • 2024.11.30 02:20 #1847566
    감사합니다.
    알려주신 팁 대로 적용하니 원하던 대로 작동됩니다. 잘 사용하겠습니다

    복수의 게시판도 혹시 적용 될까 아래와 같은 방법으로 시도해봤는데 안되는게 정상인거죠 ^^;;
    //특정게시판 mid입력
    $obj->module_srl = '164,167,214';
  • 2024.11.30 03:00 #1847573
    그러면
    <condition operation="in" column="module_srl" var="module_srl" filter="number" pipe="and" />
    으로 해보세요.

    혹시 이것만으로 안 된다면 $obj->module_srl을 배열로 넘겨야 될지도 몰라요.
    $obj->module_srl = [164,167,214];
  • 2024.11.30 06:16 #1847602
    //특정게시판 mid입력
    $obj->module_srl = '164,167,214';

    <condition operation="in" column="module_srl" var="module_srl" filter="number" pipe="and" /> 이 부분만 추가 하니 원했던 대로 지정한 게시판에서만 작동됩니다.
    감사합니다. :)