회원가입 | 고객센터 |
DESIGNONEX
dxcms.kr
DX빌더
DX마켓
Service
PR리그
Q&AN
지식공유N
공지사항
통계
로그인 회원가입
고객센터
일반게시판

출석 도장 게시판

D DX
2026.06.24 02:00(수정됨) 59 0 15





1. 파일 구성

설치 패키지(attendance-skin-v1.5.0.zip)의 파일 목록과 역할입니다.
 
파일 경로 역할
boards/skins/attendance/list.php 달력형 출석 현황, 개근왕, 오늘 출석 목록, 포인트 안내 모달
boards/skins/attendance/view.php 개인 출석 달력, 연속/최장 출석 통계, 날짜 클릭 메시지
boards/skins/attendance/write.php 출석 도장 찍기 폼 (한 줄 메시지 입력)
boards/skins/attendance/assets/style.css 전체 UI 스타일
boards/skins/attendance/skin.json 스킨 메타 정보
extend/middle/10_attendance_point.php dx_after_write 훅 — 포인트 지급 및 만근 체크
 
  📂 설치 방법
1. ZIP 압축 해제 후 아래 두 폴더를 서버에 복사합니다.
   • boards/skins/attendance/  →  서버의 boards/skins/attendance/ 에 복사
   • extend/middle/10_attendance_point.php  →  서버의 extend/middle/ 에 복사
2. 관리자 → 게시판 관리 → 게시판 추가
   • 스킨: attendance 선택 후 저장
3. 설치 완료! 첫 접근 시 dx_attendance 테이블이 자동 생성됩니다.


2. 데이터베이스

스킨은 DXCMS 코어 테이블 외에 dx_attendance 테이블 1개만 추가로 사용합니다.
별도 DB 작업 없이 스킨 첫 접근 시 자동으로 생성됩니다.
 

dx_attendance 테이블

컬럼 타입 설명
id BIGINT AUTO_INCREMENT, PK
member_id INT 회원 ID (외래키)
board_id INT 게시판 ID
post_id BIGINT 출석 게시글 ID
attend_date DATE 출석 날짜 (YYYY-MM-DD)
message VARCHAR(255) 출석 한 줄 메시지 (선택)
created_at DATETIME 출석 등록 시각
 
  🔑 UNIQUE KEY
UNIQUE KEY uk_att (member_id, board_id, attend_date)
→ 동일 회원이 같은 게시판에 같은 날 중복 출석을 DB 레벨에서 차단합니다.

* 포인트 지급 로직은 extend/middle/10_attendance_point.php 의 dx_after_write 훅에서 처리됩니다.
* 포인트 이력은 DXCMS 기존 point_log 테이블에 함께 기록됩니다.
 


3. 포인트 지급 시스템

 
구분 설명 지급 포인트 중복 지급
📌 일일 출석 매일 1회 출석 도장 찍기 +10P 하루 1회
🏆 월 만근 보너스 해당 월 전일 출석 완료 시 +100P 월 1회
 

일일 출석 (+10P)


출석 도장 찍기 버튼 → write.php → dx_after_write 훅 → 포인트 지급 순서로 처리됩니다.
  • 하루 1회만 인정 (UNIQUE KEY로 중복 방지)
  • DxPoint::add(member_id, 'attend', 10, 'post', post_id, 메모) 호출
  • 포인트 타입: attend
 

월 만근 보너스 (+100P)


해당 월 마지막 날 출석 시 자동으로 만근 여부를 체크합니다.
  • 체크 조건: 오늘이 해당 월 마지막 날 (date('t') === date('j'))
  • 이번 달 출석 횟수 = 이번 달 전체 일수 일 때 만근 판정
  • point_log 에서 attend_perfect 타입 + 해당 연월 기록 확인 → 중복 지급 방지
  • DxPoint::add(member_id, 'attend_perfect', 100, ...) 호출
  • 포인트 타입: attend_perfect
 
  💡 포인트 타입 커스터마이징
extend/middle/10_attendance_point.php 파일에서 아래 값을 직접 수정할 수 있습니다.

  • 일일 출석 포인트: DxPoint::add(..., 10, ...) 에서 10 변경
  • 만근 보너스 포인트: DxPoint::add(..., 100, ...) 에서 100 변경
 

4. 화면 구성

 

4-1. 목록 페이지 (list.php)

  • 헤더: 이번 달 출석 통계 + 포인트 안내 모달 버튼
  • 출석 버튼: 오늘 미출석 시 [출석 도장 찍기] 버튼 표시, 출석 완료 시 [오늘 출석 완료!] 뱃지
  • 개근왕: 이번 달 출석 횟수 상위 5명 pill 형태 표시, 만근 시 뱃지 노출
  • 달력: 이전/다음 월 이동, 날짜 셀에 출석자 아바타 표시 (최대 5명 + 나머지 +N)
  • 오늘 출석 목록: 오늘 출석한 회원 이름 + 메시지 + 도장 아이콘
  • 포인트 안내 모달: 일일 +10P / 만근 +100P 안내, 유의사항 포함
 

4-2. 출석 찍기 페이지 (write.php)

  • 오늘 날짜 표시
  • 한 줄 메시지 입력 (선택, 최대 100자)
  • 제출 시 글 제목: YYYY년 MM월 DD일 닉네임 출석
  • 이미 출석한 경우 목록으로 자동 리다이렉트
 

4-3. 개인 달력 페이지 (view.php)

  • 프로필 카드: 아바타, 닉네임, 총 출석 / 현재 연속 / 최장 연속 / 이번 달 통계
  • 만근 달성 시 배너 표시 (해당 월)
  • 개인 달력: 출석한 날 🏷️ 도장 아이콘, 날짜 클릭 → 해당일 메시지 패널 슬라이드
  • 오늘 메시지: 오늘 출석 시 메시지 1건 표시


5. 권한 및 설정

 

게시판 레벨 설정


관리자 → 게시판 관리에서 아래 항목을 설정합니다.
 
설정 항목 권장 값 설명
스킨 attendance attendance 스킨 선택
글쓰기 권한 회원만 (레벨 1) 비로그인 출석 방지
읽기 권한 모두 (레벨 0) 달력은 누구나 볼 수 있음
댓글 사용 비활성 출석 게시판 특성상 불필요
추천 사용 선택 선택 사항


6. 자주 묻는 질문 (FAQ)


Q. 출석을 했는데 포인트가 지급되지 않아요.
A. 다음 항목을 확인해 주세요.
  • extend/middle/10_attendance_point.php 파일이 서버에 정확히 업로드 되었는지 확인
  • class_exists('DxPoint') — DxPoint 클래스가 존재하는지 확인 (DXCMS v8.1.0 이상 필요)
  • 게시판 스킨이 attendance 로 설정되어 있는지 확인
  • PHP 에러 로그 확인 (Windows IIS: D:\www_dxcms\php_error.log)

Q. dx_attendance 테이블이 생성되지 않아요.
A. 다음 항목을 확인해 주세요.
  • DB 계정에 CREATE TABLE 권한이 있는지 확인
  • list.php 상단의 _att_ensure_table() 함수가 정상 실행되는지 PHP 로그 확인
  • 직접 생성이 필요한 경우: 설명서 2장의 테이블 구조를 참고하여 수동 생성

Q. 만근 보너스가 중복 지급되었어요.
A. point_log 테이블에서 아래 조건으로 중복 레코드를 확인하고 삭제해 주세요.
SELECT * FROM dx_point_log WHERE type='attend_perfect' AND member_id=?;

Q. 출석 메시지가 저장되지 않아요.
A. write.php 폼의 content textarea 가 정상적으로 값을 전달하는지 확인해 주세요.
  • 브라우저 개발자 도구 → Network → write/ 요청 → Payload에 content 값이 있는지 확인
  • DXCMS content 필드는 빈 값 제출 시 에러 — 공백 1자 이상이 전달되어야 함

Q. 달력 이전/다음 달 이동이 안돼요.
A. URL 파라미터 year, month 로 이동합니다. 예: /attendance/list?year=2026&month=5
첨부파일 1개 회원전용 100P

댓글15

D
DX 2026.06.24 02:01

이번 작업은 기존 여분필드를 활용하는 방식이 아니라, 별도의 데이터베이스 테이블을 생성하여 사용하는 구조로 제작하였습니다.
별도 DB를 직접 수동으로 구성하실 필요는 없도록, 필요한 테이블은 자동으로 생성되게 처리해두었습니다.

조금이나마 구현 방식이나 확장 작업에 도움이 되었으면 좋겠습니다.

여유당 2026.06.24 09:21

DX님 감사합니다.
이 스킨은 써~~~~비스 인가요?

포인트 차감이 없습니다.  앗~~싸!

D
DX 2026.06.24 09:23
ㅎㅎㅎㅎ 아니요.
-100인데요 제가 포인트 설정을 하지 않았습니다. ㅎㅎ
D
DX 2026.06.24 09:24
감사합니다. 
수정해놨습니다.ㅎㅎ
여유당 2026.06.24 09:29

일찍 일어난 새가 좋은 먹이를 구했습니다.
미리보기 3클릭 이어서 다른 분도 다운 받은 줄 알았는데 아니었나요.

이제 확인하니 다운로드가 1 이네요
특별서비스 감사합니다. ㅎㅎ

D
DX 2026.06.24 09:33
ㅎㅎㅎ 여유당님 블로그 때문에 솔직히 맘에 걸렸는데 
이걸로 보답했다고 생각하겠습니다. ^^ 감사합니다.
여유당 2026.06.24 09:48
어찌하다 오늘 DX님 블로그에 접속한 것 같은데 상단에 제 닉이 있어서 이건 뭐지? 했는데
이걸 말씀 하시는 건가요?  지금은 DX님 블로그 링크가 안 보여서 추가 확인은 못했는데...

감사합니다.
오늘도 행복한 하루 보내십시요.
D
DX 2026.06.24 10:42
^^ 여유당님 블로그 하나 만드세요 
초기 프로젝트라 어설프지만 개설 신청만 해주시면 됩니다.

https://designonex.com/blogadmin
안졸리니졸리 2026.06.24 11:16
오 대박^^
저는 한발 늦었군요
열심히 하신 특별 서비스 축하 드립니다 
여유당 2026.06.24 14:25

졸리님 반갑습니다.
최근 몇일 안보여서 기다리고 있었는데...

DX님을 위해서 어쩔 수 없이 신고 했습니다.
저만 특별서비스 받고 다른 분들의 혜택을(?) 막아서 죄송합니다. ㅠㅠ

포인트 더 채워서 다음에 적용할때 받아야지 생각하고 있다가
어찌하다 보니 무심결에 눌렀는데 포인트 차감이 안되더라고요... ㅎㅎ
나이를 먹어가니 생각과 행동이 따로 놀때가 많습니다. 오늘은 그 덕분에 행운이 찾아왔습니다.

졸리님에게도 행운이 가득하시길.......

안졸리니졸리 2026.06.24 18:08

여유당님 별 말씀을요 ^^
당연히 그렇게 하셔야죠 저라도 그랬을겁니다
지금 사용후기 올려볼려고 조끔씩 홈페이지 만드느라 접속이 제대로 못했습니다
소스 파악 조금씩 하고 있는데 이제 조금씩 보여서 해보고 있습니다
막코딩이라 작업속도가 늦는데 그래도 조금씩 만들다보면 사용후기 올릴정도 나오지 않을까 싶네요
그럼 좋은날되세요 ^^

k
kakao_494928 2026.06.27 21:17
초보자는 참 어렵씁니다 많이 배워야 하는데 어떻게 배워야 하는지 
아무말 못하고 묵묵히 읽고만 보고 배워야 겠네요
즐거운 밤 되세요
D
DX 2026.06.27 21:53
지금은 제가 많은 작업 때문에 완전 초보자 가이드를 만들지 못하고 있습니다.
시간이 되면 완전 초보자 가이드를 만들어 보도록 하겠습니다.
다만 언제까지라고 딱 약속은 못드리겠네요.
즐거운 밤 되세요. 
k
kakao_494928 2026.07.06 22:52
감사합니다 잘 받아서 설치 하였습니다 홈페이지가 살아나는 것 같아요 고맙씁니다
D
DX 2026.07.07 00:27
감사합니다. ^^ 잘되신다니 제가 더 기분이 좋습니다.
로그인 후 댓글을 작성할 수 있습니다.
Skin 7
41
전체 회원
1,173
전체 게시글
2,155
전체 댓글
45
오늘 방문
50,227
전체 방문
1
현재 접속
인기글 7일 이내
최신글
최신댓글
내 플레이리스트
플레이리스트가 비어있습니다
스튜디오 게시판에서
플레이리스트에 담기 버튼을
눌러보세요
목록
목록