
DX 글쓴이 프로필 (dx-author-profile) 설명서
버전 1.3.2 · DXCMS 플러그인 · PHP 5.6 이상 · DesignOneX License 1.0
게시글 본문과 이전/다음글 목록 사이에 글쓴이의 프로필 카드를 보여주는 플러그인입니다. 카드에는 레벨과 경험치 진행률, 게시글·댓글 수, 포인트, 자기소개, 가입일, 최근 접속, 같은 회원의 최근 글과 최근 댓글(탭), 웹사이트와 SNS 링크가 표시됩니다. 카드 색은 라이트 · 다크 · 투명 모드로 바꿀 수 있고, 방문자가 [모드] 버튼으로 직접 고를 수도 있습니다. 테마와 게시판 스킨 파일은 수정하지 않습니다.
1. 설치
dx-author-profile_v1.3.2.zip을 사이트 루트에 풉니다. 압축 안의 경로가plugins/dx-author-profile/…로 되어 있어 그대로 덮어쓰면 됩니다.- 관리자 > 플러그인에서 DX 글쓴이 프로필을 활성화합니다.
- 회원이 쓴 게시글 하나를 열어 본문 아래에 카드가 나오는지 확인합니다.
별도의 DB 테이블을 만들지 않으므로 migrate.php 실행은 필요 없습니다. 설정값은 코어의 dx_settings 테이블에 저장됩니다.
2. 카드 구성
| 영역 | 내용 |
|---|---|
| 아바타 | 프로필 이미지(없으면 이름 첫 글자). 둘레의 링이 다음 레벨까지의 진행률을 레벨 색으로 표시하고, 오른쪽 아래에 레벨 아이콘이 붙습니다. |
| 이름 · 레벨 칩 | 회원 이름과 Lv.8 전문가 형태의 레벨 표시 |
| 버튼 | 모드: 카드 색 고르기(라이트·다크·투명) / 프로필: 코어 프로필 모달 열기 / 작성글 보기: 코어 작성글 검색 열기 |
| 자기소개 | 회원이 마이페이지에 작성한 소개글 |
| 가입 · 접속 | 가입일과 가입 후 경과일, 최근 접속 시각 |
| 활동 수 | 게시글 · 댓글 · 포인트 · 경험치 |
| 경험치 바 | 다음 레벨 이름, 남은 경험치, 진행률(%). 최고 레벨이면 "최고 레벨에 도달했습니다" |
| 최근 글 / 최근 댓글 탭 | 같은 회원의 최근 글(게시판 이름, 날짜)과 최근 댓글(댓글 요약, 원글 제목, 날짜). 댓글을 누르면 원글의 해당 댓글 위치로 이동합니다. |
| 링크 | 웹사이트 · 블로그 · GitHub · YouTube · Instagram · X · Facebook |
표시되지 않는 경우
- 비회원이 쓴 글
- 탈퇴했거나 이용이 정지된 회원(
status가 1이 아닌 회원)의 글 - 관리자 설정에서 프로필 카드 표시를 끈 경우
- 적용 게시판을 지정했는데 현재 게시판이 목록에 없는 경우
3. 관리자 설정
관리자 사이드바의 게시판 확장 > 글쓴이 프로필, 또는 주소 /admin/author-profile로 들어갑니다.
프로필 카드 표시
끄면 모든 게시판에서 카드를 숨깁니다. 플러그인 자체는 켜진 상태로 유지되므로 설정을 잃지 않고 잠시 숨길 때 사용합니다.
표시할 항목
| 항목 | 끄면 사라지는 부분 |
|---|---|
| 레벨과 경험치 | 아바타 링, 레벨 아이콘, 레벨 칩, 경험치 수, 경험치 바 |
| 활동 수 | 게시글 · 댓글 · 포인트 · 경험치 숫자 줄 전체 |
| 포인트 | 활동 수 줄의 포인트 칸 |
| 자기소개 | 소개글 |
| 최근 글 | 하단의 최근 글 탭 |
| 최근 댓글 | 하단의 최근 댓글 탭 |
| 링크 | 하단 링크 아이콘 |
목록 개수는 1~5개 중에서 고르며, 최근 글과 최근 댓글에 똑같이 적용됩니다.
최근 글과 최근 댓글이 둘 다 있으면 탭으로 나뉘어 표시되고, 한쪽만 있으면 탭 없이 제목과 목록만 나옵니다. 둘 다 없으면 하단 영역이 링크만 남거나 사라집니다.
카드 모드
테마와 관계없이 이 카드만의 색을 정합니다. 사이트 전체 다크모드와는 별개입니다.
| 모드 | 모양 |
|---|---|
| 테마 따라가기 (기본) | 사이트 테마의 색과 다크모드를 그대로 따릅니다 |
| 라이트 | 테마가 어두워도 항상 밝은 카드 |
| 다크 | 테마가 밝아도 항상 어두운 카드 |
| 투명 | 배경 없이 얇은 선만. 글자색은 주변 글자색을 따라가 어떤 배경 위에서도 어울립니다 |
- 기본 모드: 방문자가 아직 고르지 않았을 때 보이는 모드입니다. 관리자 설정의 라디오 버튼에서 고릅니다.
- 카드에 [모드] 버튼 표시: 켜면 카드의 버튼 줄에 [모드] 버튼이 나오고, 방문자가 목록에서 라이트 · 다크 · 투명 · 테마 따라가기를 직접 고릅니다. 선택은 그 방문자의 브라우저(
localStorage, 키dxap-mode)에 저장되어 다음 방문에도 유지되고, 열려 있는 다른 탭에서도 따라 바뀝니다. 끄면 버튼이 사라지고 저장된 선택은 무시한 채 기본 모드로 고정됩니다. - 투명 모드의 목록은 배경이 비치면 읽기 어려우므로 항상 불투명한 밝은 색으로 표시합니다.
- 키보드: 목록에서 방향키 · Home · End로 이동, Esc로 닫기.
모드 목록 위치 (모바일)
PC에서는 [모드] 버튼이 카드 위쪽 오른쪽에 있어 목록이 아래로 열립니다. 모바일(560px 이하)에서는 버튼이 카드 맨 아래 줄로 내려가므로, 목록이 카드 밖으로 잘리지 않게 공간을 재서 위로 열립니다(v1.3.2). 화면 크기를 바꾸면 다시 계산합니다.
적용할 게시판
- 모든 게시판: 게시글 보기 화면 전체에 표시
- 선택한 게시판만: 체크한 게시판에서만 표시
미리보기
설정 화면 오른쪽에 지금 로그인한 관리자 본인의 프로필로 카드가 표시됩니다. 저장된 설정 기준이므로, 항목을 바꾼 뒤에는 설정 저장을 눌러야 미리보기에 반영됩니다.
4. 데이터 출처
| 표시 항목 | 출처 |
|---|---|
| 이름, 프로필 이미지, 자기소개, 가입일, 최근 접속, 포인트, 경험치, 링크 | dx_members |
| 레벨 번호 · 이름 · 아이콘 · 색상, 레벨별 필요 경험치 | 코어 DxPoint + dx_level_config |
| 게시글 수 | dx_posts (status = 1) |
| 댓글 수 | dx_comments (status = 1) |
| 최근 글 | dx_posts + dx_boards |
| 최근 댓글 | dx_comments + dx_posts + dx_boards |
레벨 계산
레벨은 회원의 누적 경험치를 코어의 DxPoint::calcLevel()로 계산한 값입니다. 경험치를 줄 때 코어가 쓰는 계산과 같으므로 다른 화면의 레벨 표시와 일치합니다.
레벨 이름, 아이콘, 색상, 필요 경험치를 바꾸려면 관리자 > 레벨 설정(/admin/levels)에서 수정합니다. 카드의 링 · 칩 · 경험치 바 색이 함께 바뀝니다. 레벨 색이 노랑이나 연두처럼 밝으면 칩의 글자색을 자동으로 어둡게 바꿔 읽기 쉽게 합니다.
최근 글에 나오는 글
다음 조건을 모두 만족하는 글만 나옵니다. 비공개 정보가 노출되지 않도록 기본값을 보수적으로 잡았습니다.
- 게시 상태인 글 (
status = 1) - 비밀글이 아닌 글 (
is_secret = 0) - 사용 중이면서 누구나 읽을 수 있는 게시판의 글 (
read_level = 0) - 지금 보고 있는 글은 제외
최근 댓글에 나오는 댓글
- 게시 상태이면서 비밀댓글이 아닌 댓글 (
status = 1,is_secret = 0) - 원글이 게시 상태이고 비밀글이 아닌 댓글
- 누구나 읽을 수 있는 게시판의 댓글 (
read_level = 0) - 본문은 HTML 태그를 지우고 80자까지 요약해서 보여주며, 긴 댓글은 두 줄에서 줄임표로 자릅니다. 이미지나 이모티콘만 있어 글자가 없는 댓글은 건너뜁니다.
링크
회원 정보의 웹사이트, 블로그, SNS 주소 중 값이 있는 것만 표시합니다. http:// 또는 https:// 주소만 허용하며, 주소에 프로토콜이 없으면 https://를 붙입니다. 링크는 새 창으로 열리고 rel="noopener nofollow ugc"가 붙습니다.
5. 캐시
회원 정보, 게시글 수, 댓글 수, 최근 글, 최근 댓글은 회원별로 3분 동안 DxCache에 저장됩니다. 새 글을 쓰거나 프로필을 수정한 뒤 최대 3분 동안은 이전 값이 보일 수 있습니다.
관리자 설정을 저장하면 이 플러그인의 캐시(dxap: 키)가 바로 비워집니다.
6. 동작 방식
| 시점 | 훅 | 하는 일 |
|---|---|---|
| 게시글 보기 준비 | dx_board_view_context |
글쓴이 확인, 표시 대상 여부 판단, 프로필 데이터 준비 |
<head> |
dx_head (20) |
assets/profile.css 로드 — 카드를 표시할 때만 |
| body 하단 | dx_body_bottom (20) |
카드 마크업 출력 (hidden 상태) |
| body 하단 | dx_body_bottom (21) |
assets/profile.js 로드 |
| 관리자 | dx_admin_top (1) |
사이드바 링크 추가, /admin/author-profile 설정 화면 |
카드 위치
스킨에는 본문과 이전/다음글 사이에 훅이 없기 때문에, 카드를 body 하단에 숨긴 상태로 출력한 뒤 profile.js가 제자리로 옮깁니다.
- 본문 카드(
.dx-view-card)를 찾습니다. - 바로 뒤에 설문 블록이 있으면 설문 다음을 기준점으로 삼습니다.
- 기준점 바로 다음(이전/다음글 목록 앞)에 카드를 넣고 표시합니다.
basic · gallery · category 스킨 모두 본문 카드에 .dx-view-card를 쓰므로 공통으로 동작합니다. 본문 카드를 찾지 못하는 스킨에서는 카드가 숨겨진 채로 남아 화면이 깨지지 않습니다.
테마 호환
- 테마에
dx_head훅이 없으면 카드 마크업 바로 앞에서 CSS를 출력합니다. - 테마에 코어 프로필 모달(
dxOpenProfile)이 없으면 프로필 · 작성글 보기 버튼을 자동으로 숨깁니다.
7. 플러그인 활성/비활성
- DXCMS 10.1.1 이상 (코어 플러그인 상태 필터 적용): 비활성 플러그인은 코어가 아예 로드하지 않습니다. 플러그인 자체 검사는 건너뜁니다.
- 그 이전 코어:
plugin.php첫머리에서dx_plugins.status를 직접 확인하고, 비활성이면 훅을 하나도 등록하지 않습니다.
8. 디자인과 다크모드
"테마 따라가기" 모드에서는 색을 모두 테마 변수로 쓰므로 다크모드 엔진이 별도 설정 없이 인식합니다. 라이트 · 다크 · 투명 모드는 카드 안의 색 변수(--dxap-bg, --dxap-line, --dxap-ink, --dxap-mute)를 고정값으로 바꿔 테마와 관계없이 보이게 합니다.
| 변수 | 쓰는 곳 |
|---|---|
--bg-card |
카드 배경 |
--border |
테두리, 구분선, 링 · 경험치 바의 빈 부분 |
--text-main |
이름, 본문 글자, 숫자 |
--text-muted |
라벨, 날짜, 보조 문구 |
--hover-row |
최근 글 · 최근 댓글 목록의 마우스 오버 |
--p |
버튼 오버, 키보드 포커스 표시 |
--font-head |
숫자 (Space Grotesk, 고정폭 숫자) |
회원 레벨 색(--dxap-lv)은 링, 레벨 칩, 경험치 바, 선택된 탭의 밑줄, 링크 오버에만 씁니다.
- 카드가 화면에 들어올 때 링과 경험치 바가 한 번 채워집니다. 브라우저의 "동작 줄이기" 설정이 켜져 있으면 애니메이션 없이 바로 표시합니다.
- 640px 이하 화면에서는 아바타와 이름을 한 줄에 두고, 나머지 내용은 카드 전체 폭으로 펼칩니다.
테마에 맞춰 바꾸기
카드 모양을 사이트에 맞게 조정하려면 테마 CSS에서 .dxap 클래스를 덮어씁니다. 플러그인 파일을 직접 고치면 업데이트할 때 변경 내용이 사라집니다.
/* 예: 카드 모서리와 여백 조정 */
.dxap { border-radius: 12px; }
.dxap-main { padding: 20px 24px; }
/* 예: 포인트 숫자 색 */
.dxap-stats dd { color: var(--p); }
9. 파일 구조
plugins/dx-author-profile/
├── manifest.php 플러그인 정보
├── plugin.php 활성 확인, 훅 등록
├── core/
│ └── data.php 설정 조회·저장, 레벨 계산, 프로필 데이터
├── views/
│ └── card.php 카드 마크업
├── assets/
│ ├── profile.css 카드 스타일
│ └── profile.js 카드 위치 이동, 카드 모드, 진행률 애니메이션, 버튼, 탭
└── admin/
├── index.php 설정 화면
├── admin.css
├── admin.js
└── sidebar.js 관리자 사이드바 링크
인라인 <style> · <script>와 인라인 이벤트 속성(onclick 등)은 사용하지 않습니다.
저장되는 설정 (dx_settings, setting_group = dx-author-profile)
| 키 | 기본값 | 설명 |
|---|---|---|
dxap_enabled |
1 |
카드 표시 |
dxap_boards |
(빈 값) | 적용 게시판 키, 쉼표 구분. 비우면 전체 |
dxap_show_level |
1 |
레벨과 경험치 |
dxap_show_stats |
1 |
활동 수 |
dxap_show_point |
1 |
포인트 |
dxap_show_bio |
1 |
자기소개 |
dxap_show_recent |
1 |
최근 글 |
dxap_show_comments |
1 |
최근 댓글 |
dxap_show_links |
1 |
링크 |
dxap_recent_count |
3 |
최근 글 · 최근 댓글 개수 (1~5) |
dxap_picker |
1 |
카드에 방문자용 [모드] 버튼 표시 |
dxap_mode |
auto |
기본 카드 모드 (auto · light · dark · transparent) |
10. 문제 해결
카드가 나오지 않습니다. 관리자 > 플러그인에서 활성 상태인지, 설정 화면에서 프로필 카드 표시가 켜져 있는지, 적용 게시판에 현재 게시판이 포함되는지 확인합니다. 비회원 글이나 탈퇴 회원의 글에는 표시되지 않습니다.
카드가 댓글 아래나 페이지 맨 아래에 보입니다. 사용 중인 스킨의 본문 영역에 dx-view-card 클래스가 없는 경우입니다. 스킨 본문 <article>에 dx-view-card 클래스를 추가하면 제자리에 들어갑니다.
숫자가 바로 바뀌지 않습니다. 3분 캐시 때문입니다. 즉시 확인하려면 관리자 설정 화면에서 설정 저장을 한 번 누르면 캐시가 비워집니다.
레벨이 다른 화면과 다르게 보입니다. 카드는 누적 경험치로 레벨을 다시 계산합니다. 관리자가 회원 레벨 숫자만 직접 바꾸고 경험치는 그대로 두었다면 차이가 날 수 있습니다. 회원의 경험치를 해당 레벨의 필요 경험치 이상으로 맞추면 일치합니다.
최근 글이나 최근 댓글에 특정 게시판의 내용이 나오지 않습니다. 읽기 권한이 설정된 게시판(read_level이 0이 아닌 게시판), 비밀글, 비밀댓글은 목록에서 제외됩니다.
모바일에서 [모드] 목록이 안 보입니다. v1.3.1 이하에서는 모바일에서 목록이 카드 아래로 열려 카드 밖으로 잘렸습니다. v1.3.2 이상으로 올리면 위로 열립니다. 올린 뒤에도 그대로라면 브라우저 캐시를 지우거나 새로고침해 주세요(CSS · JS 주소에 버전이 붙어 있어 보통은 자동으로 갱신됩니다).
방문자가 고른 모드가 적용되지 않습니다. 관리자 설정에서 카드에 [모드] 버튼 표시가 꺼져 있으면 방문자의 선택은 무시되고 기본 모드로 고정됩니다. 브라우저의 사이트 데이터(localStorage) 저장이 막혀 있어도 선택이 유지되지 않습니다.
프로필 · 작성글 보기 버튼이 없습니다. 사용 중인 테마에 코어 프로필 모달이 포함되어 있지 않아 버튼을 자동으로 숨긴 것입니다.
11. 삭제
관리자 > 플러그인에서 삭제합니다. 이 플러그인은 자체 테이블이 없으므로 "파일만 삭제"로 충분합니다. dx_settings에 남은 dxap_ 설정값은 다시 설치하면 그대로 이어서 쓰입니다.
라이선스
Copyright © DesignOneX — designonex.com · All Rights Reserved.
DesignOneX License 1.0 — https://designonex.com/notice/view/1787577858493247
무료로 사용하고 수정할 수 있으며 고객사 프로젝트에 설치해 운영할 수 있습니다. 재배포와 판매는 금지됩니다. 소스코드의 저작권·라이선스 표시는 삭제하거나 바꾸지 마세요.