폼 위젯
자료 유형 | 위젯 |
---|---|
간단한 소개 | 게시판을 활용하여 폼(form) 형태 페이지를 출력하는 위젯입니다. 위젯을 통해 작성한 콘텐츠는 지정된 게시판으로 전송됩니다. |
설치 경로 | ./widgets/ap_form |
코어 지원 범위 | Rhymix 2.1 |
PHP 지원 범위 | 기타 |
자료 구분 | 공개 자료 |
라이선스 | GPL v2 |
저장소 URL | https://github.com/cydemo/rx-widget-ap_form |
파일명 | 버전 | 날짜 | 용량 | 다운 |
---|---|---|---|---|
ap_form.1.3.0.zip | 1.3.0 | 2025.02.08 | 34.0KB | 48 |
ap_form.1.2.1.zip | 1.2.1 | 2020.05.30 | 111.5KB | 617 |
ap_form.1.2.zip | 1.2 | 2020.05.28 | 107.4KB | 68 |
ap_form.1.1.2.zip | 1.1.2 | 2020.03.17 | 102.7KB | 117 |
ap_form.1.1.1.zip | 1.1.1 | 2020.03.15 | 101.1KB | 74 |
ap_form.1.1.0.zip | 1.1.0 | 2020.03.14 | 100.4KB | 79 |
ap_form.1.0.1.zip | 1.0.1 | 2020.03.12 | 98.6KB | 78 |
ap_form.zip | 2020.03.12 | 98.6KB | 75 |
위젯 설명
- 게시판을 활용하여 폼(form) 형태 페이지를 출력하는 위젯입니다. 위젯을 통해 작성한 콘텐츠는 지정된 게시판으로 전송됩니다.
- 문의 글 전송, 견적 문의 등을 수행할 수 있습니다.
- '제목+이름+이메일+연락처+내용' 입력을 기본으로 합니다.
- 게시판 분류 및 사용자정의(확장변수)를 활용할 수 있습니다.
- 비밀글 지정, 댓글 허용 등 다양한 옵션을 지원합니다.
- 이런 문의도 있고 해서 과거의 contactfree라는 위젯에 기능을 조금 개선해보자는 취지에서 작업하다가 거의 새로운 위젯을 만들어버렸습니다. 즉, contactfree 위젯의 초확장 버전이라 보시면 되겠습니다;;
1.3.0 업데이트
- 2024-02-08
- 기능 개선
: 라이믹스 2.1.20에 맞춰 버전업 (XE 지원 포기)
: php 8.*에서 나타나는 경고성 에러 요인 수정
: 라이믹스의 신규 확장변수 형식들(국제전화번호, 날짜, 시간, 국가, 언어, 시간대, 파일 등)에 대응
: 라이믹스의 스팸필터 모듈을 활용하여 리캡챠 호출 방식 간소화
: 기존의 아이콘 이미지 파일들을 xeicon으로 대체 (기본 스킨)
1.2.1 업데이트
- 2020-05-30
- 버그 수정 : 라이믹스 국제전화번호 체계 반영으로 기본정보의 전화번호 필드 자동교정 제한
- 기능 개선 : 국가번호가 한국(라이믹스) 또는 언어 모드가 한국(XE)일 경우에만 한국식 전화번호 자동교정 적용
1.2 업데이트
- 2020-05-28
- 기능 개선 : 라이믹스 1.9.9.7 마스터 브랜치 버전 기준에 맞춰 전화번호 체계 변경
- 기능 개선 : 라이믹스 내장 리캡챠 애드온 활용. 위젯에서 리캡챠 설정을 하면 리캡챠 애드온의 설정을 가져와 적용 가능
- 버그 수정 : 제목 자동 지정의 경우, 영어 모드에서 제목이 string이 아니라 object로 저장/출력되는 문제 수정
1.1.2 업데이트
- 2020-03-17
- 별다른 버그가 있지 않는 한 마지막 버전
- 개인정보 안내문 출력 옵션 다양화 (비출력, 직접 입력, 파일 연결) : '파일 연결'은 스킨 내의 privacy 폴더에 html 파일을 올려둔 뒤 위젯 설정에서 지정하면 됨(확장자를 빼고 입력 가능).
- 기존에 개인정보 안내문을 사용하던 관리자는 위젯 변수값 변경으로 인해 '개인정보 안내' 선택 옵션값을 재설정해줘야 합니다.
1.1.1 업데이트
- 2020-03-16
- 라이믹스 회원 전화번호 체계에 맞춤
- 폼 전송 후 현재 페이지 처리시 화면 스크롤을 페이지 최상단이 아니라 위젯 상단으로 이동
- 폼 전송 후 원하는 url로 이동 가능 (페이지 처리방식 옵션 추가)
1.1.0 업데이트
- 2020-03-14
- 기본 스킨(default)의 파일 구조 개선 및 코드 정리
- 본문에 전화번호 기재 (버그 수정)
- 우편번호 유효성 체크 (버그 수정 : postcodify API 사용시)
- 이메일 주소 입력에 필수/옵션 적용
- 내용글(message 필드) 입력에 필수/선택 옵션 적용
1.0.1 업데이트
- 2020-03-12
- 분류를 사용하지 않는 경우 유효성 검사에 걸리는 문제를 수정
- 폼 전송 후 현재 페이지에서 결과값 처리시 이미지가 뜨지 않던 문제 수정
'설정' 설명
1. 게시판 연동
- 게시판을 지정하면 폼 위젯에서 작성한 콘텐츠가 해당 게시판에 저장됩니다.
- 게시판 모듈을 지정하지 않으면 위젯 작동이 중지되고 에러페이지를 출력합니다.
2. 콘텐츠 제목
- 이용자가 직접 제목을 입력할 수도 있고, 위젯 스킨에서 설정된 제목을 뿌려줄 수도 있습니다.
3. 분류(카테고리) 활용
- 분류를 출력 방식을 선택할 수 있으며, 분류번호(category_srl)을 이용해 특정 분류만 모아서 출력하는 것도 가능합니다.
- 분류 번호를 1개만 지정하면 위젯 스킨에서는 분류 폼을 따로 출력하지 않고 콘텐츠는 해당 분류로 자동 귀속됩니다.
4. 문서 비밀번호
- 비로그인 사용자에 한해 콘텐츠의 비밀번호를 랜덤 또는 직접 선택 방식으로 제공합니다.
5. 사용자 정의(확장변수) 활용
- 게시판의 확장변수를 가져와서 폼 문서로 출력이 가능합니다. 분류와 마찬가지로 아예 출력을 하지 않거나 일부만 활용하거나 모두 활용할 수 있습니다.
6. 댓글 허용, 공개/비밀 선택
- 일반적인 게시물과 마찬가지로 사용자가 댓글 허용 여부 및 비밀글 사용 여부를 결정할 수 있습니다.
- 또한 관리자가 댓글을 일괄 허용하거나 일괄 불허할 수 있으며, 콘텐츠를 강제로 공개 또는 비밀로 귀속시킬 수 있습니다
7. 개인정보 안내 및 동의
- 개인 정보를 수집하는 만큼 관련 사항을 선택적으로 출력할 수 있습니다.
- 안내문 제목과 설명란에 개행 문자(\n)를 삽입하면 복수의 안내가 가능합니다. (예. 개인정보 수집 및 이용 동의, 개인정보 제3자 제공 동의 등)
8. 폼 전송 후 페이지 처리
- 폼 전송 후 페이지 처리 방식을 선택할 수 있습니다.
- 1) 현재 페이지에서 입력 사항을 간단히 보여주거나, 2) 콘텐츠 본문으로 바로 이동하거나, 3) 콘텐츠가 저장된 게시판 목록화면으로 이동할 수 있습니다.
몇 가지 팁
분류번호(category_srl)나 확장변수 eid를 몰라도 걱정마세요
- (관리자 페이지 등에서 위젯 코드만 추출하는 방식이 아니라) 위젯 페이지에서 페이지 수정을 통해 위젯 설정을 시도하면...
- 분류나 확장변수를 '모두 활용'으로 선택하고 설정을 저장한 뒤, 다시 설정을 수정하면 대상 게시판에 연계된 분류와 확장변수 목록이 자동으로 입력되어 있는 것을 볼 수 있을 겁니다.
- 여기서 변수값을 선택적으로 추리고 '일부만 활용'으로 바꾸면 위젯 설정에 수고로운 시간을 줄일 수 있습니다.
폼-메일(form mail)로도 사용할 수 있어요
- 게시판 설정에서 '관리자 메일'을 설정해놓으면, 신규 문의가 등록될 경우 메일로 알림을 받을 수 있습니다.
- 우리메일 등을 이용하면 보다 완벽한 형태의 이메일을 받아볼 수도 있습니다. (강추)
- 이래저래 본 위젯이 폼 메일 기능으로도 활용될 수 있을 겁니다.
기능 확장을 고려할 수 있습니다
- 스킨 개발을 통해 위젯 변수를 잘 활용하면 다양한 방식으로 기능을 확장해볼 수 있을 겁니다.
- 예를 들어 자바스크립트 또는 제이쿼리를 활용하여 스킨을 잘 개발하면, 구글식의 다단계 설문조사 같은 것도 구현할 수 있을 겁니다. 또한 게시판 스킨을 재가공해서 저장된 확장변수값을 아우르는 다양한 통계페이지도 생각해볼 수 있습니다.
기타 정보
- 라이믹스 + 크롬에서 개발되었습니다.(1.3.0 버전부터는 라이믹스 2.1.20) 기타 환경에 문제가 있을 경우 댓글로 알려주세요~
- 그 외의 프로세스에 대해서는 직접 사용해보시기를 권장합니다.
- 다음 페이지들에서 실제 작동하는 과정을 체험할 수 있습니다.
- 미리보기
- 최소 옵션 출력 버전 : https://dev.aporia.blog/contact
- 풀 옵션 출력 버전 : https://dev.aporia.blog/test_form

댓글 190
근데 [관리자]로는 글쓰기가 가능하지만, 이외 일반 회원으로 로그인하여 작성하려니 안되네요.
글 입력칸에 마우스를 위치하며 글쓰기로 바뀌지 않고 화살표 그대로 입니다.
입력칸을 클릭해도 안되구요. 그래서 [관리자] 권한으로 접속하면 잘 됩니다. 왜 그럴까요?
--- 환경
PHP 7.0.0p1 (카페24)
라이믹스 1.9.10 (며칠 전 공개된 1.9.x 버전에서는 최신판)
--- 권한 (순서대로)
위젯적용한 페이지 : 모든 사용자 / 로그인 사용자 / 관리자
입력내용 저장될 게시판 : 모든 사용자 / 로그인 사용자 (접근 권한, 목록, 열람, 글 작성, 댓글 작성) / 관리자 (나머지)
그러면 큰 도움이 될 수 있을 것 같습니다.
해당 페이지는 https://loveangel.net/cm10 입니다.
둘의 차이는 라이믹스 버전이고, 이외 PHP와 호스팅 환경은 모두 동일합니다.
아무래도 라이믹스 1.9.10에서 안되는 것 같은데요.
죄송하지만~ 되도록 수정해 주실 수 있는지요?
전체 질답게시판에 올려 문의 드린 결과,
이 현상을 일으킨 건~ 위젯의 문제가 아니라, 쿠팡배너의 문제였네요.
잘되는 위젯에 문제를 제기하여 대답히 죄송합니다. ~ 오늘도 건강하고 행복한 시간되세요. 고맙습니다.
제가 혼자 나섰으면 전혀 몰랐을 거예요;;
https://koco2022.cafe24.com/choice
우와 역시... 확실한 표본이네요👍
폼위젯으로도 만들어주세요 ㅎㅎㅎㅎ
그러고 보니 저도 연습 삼아 type form 사이트의 페이지를 복사해서 적용해본 적이 있었네요.
하다가 말기는 했지만요ㅋ
(제 도메인 주소 뒤에 슬러시437104 붙이면 샘플 보여집니다. XE타운 정책상 자기 도메인은 링크를 하면 안되서 ㅎㅎ;)
저도 폼타입 위젯을 많이 활용하는데 윤삼님 말씀대로 이런 스탭식의 진행이 가능해서
활용이 무궁무진하지요. 다만 작업하기 귀찮아서 그렇지(__);;
맞습니다.
저도 처음엔 공유용으로 만들어보다가 스킨 라이선스 문제도 있고 무엇보다 귀찮아서 하다가 말았었네요ㅎㅎ
https://dev.aporia.blog/test_form_contact
(개발용 도메인이니까 정보 공유차원에서 url 남겨도 괜찮겠죠? 안되는 거면 관리그룹이시니 수정해주셔도 좋습니당)
대강 요런 거였는데, 폼 제출이 됐던 것 같기도 하고 안 됐던 것 같기도 하고... 가물가물하네요ㅋㅋㅋ
잘 사용하겠습니다~~!
위에 이메일 안나오게 하는 방법 좀 알려주실 분 있으실까요 ? ㅜㅜ
혹시 ./widgets/ap_form/skins/default/form.html 에서 25~29행 삭제해보셨나요?
- 25~29행
<!--// 이메일 -->
<div class="ap_item ap_basic" rel="email">
<label for="email_address">{$lang->email}</label>
<input type="email" name="email_address" value="{$logged_info->email_address}" required="required"|cond="!$is_logged && $wi->use_email != 'O'" disabled="disabled"|cond="$is_logged" />
</div>
윗 부분 그대로 삭제하고
14행쯤에 <input type="hidden" name="email_address" value="대충 아무 이메일을 넣어주세요" /> 라고 넣어보시겠어요?
궁금한게 있는데요
전화번호 입력 시 처음 숫자 0 외는 키 입력이 안됩니다.
반드시 0을 쓰고 다른 숫자를 쓰면 되구요
국제번호 사용 ,미사용 마찬가지 입니다.
처음숫자를 아무 숫자를 써도 입력되도록 하고 샆어요
(제가 가진 자료의 버전이 맞다면) js/main.js 446~495행을 삭제해보세요.
$('input[type="tel"]').attr('maxlength', '13').on('input', function() {
으로 시작하는 부분부터입니다.
이렇게 해서 어쩌면 에러가 날 수도 있는데, 만약 그런 상황이 생긴다면 다른 분께 의뢰를 해보시는 것도 좋을 것 같습니다.
$('input[type="tel"]').attr('maxlength', '13').on('input', function() {
위 항목은 보이지 않습니다.
다만
127행,145행,151행에 비슷한 걸로는 있습니다.
$(this).next(phone_number).off('input').attr('maxlength', '13').on('input', function() {
autoCorrect($(this), $(this).val());
알려주신 446행 부터는 아래와 같습니다.
else if ( obj.index()%3 == 1 )
{
if ( obj.val().length < 3 )
{
obj[0].setCustomValidity(error_2);
}
else
{
obj[0].setCustomValidity('');
if ( obj.val().length > 4 )
{
obj.val(obj.val().substring(0, 4));
}
}
}
else if ( obj.index()%3 == 2 )
{
if ( obj.val().length < 4 )
{
obj[0].setCustomValidity(error_2);
}
else
{
obj[0].setCustomValidity('');
if ( obj.val().length > 4 )
{
obj.val(obj.val().substring(0, 4));
}
}
}
}
function setCustomValidityForDatePicker(obj)
{
var error_0 = ( xe.current_lang == 'ko' ) ? '날짜를 선택하세요.' : 'Select a date.';
var error_1 = ( !obj.hasClass('is_required') ) ? '' : error_0;
var error_2 = ( xe.current_lang == 'ko' ) ? 'yyyy-mm-dd 형식이어야 합니다.' : 'It must be in the format "yyyy-mm-dd".';
var date_format = /[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/;
var yyyy, mm, dd;
obj.children('input.date')[0].setCustomValidity(error_1);
폼 위젯 1.2.1 입니다.
관리자 로그인상태에서는 정상으로 뜨는데, 비로그인 유저가 글 작성하려고 메뉴를 선택하면, 접속하지 못하고,
서버오류가 뜹니다.
위에 기타정보 부분
풀 옵션 출력 버전을 클릭해보니, 저와 동일한 오류가 뜨고 있는 것 같네요.
- 풀 옵션 출력 버전 : https://bit.ly/3aRMOGr
제보 감사합니다.
비로그인 이용자의 전화번호가 string 대신 null 값으로 들어가서 생긴 문제 같습니다.
./widgets/ap_form/ap_form.class.php 파일
- 111행을 $num = $logged_info->phone_number ?? '';
- 117행을 $state = $logged_info->phone_country ?? '';
으로 각각 변경해주세요.
빠른 확인 감사드려요.
위와 같이 수정하니 정상입니다.
감사 감사 합니다. ^^
혹시 이와 관련해서 참고할 만한 팁이 있을까요?
그런데 해당 회원의 member_srl을 기준으로 한다는 건 작성자를 (로그인한 자신이 아니라) 해당 회원으로 하신다는 건가요?
네..관리자용으로 각 회원의 회비납부 내역을 게시판에 등록시키려고 하거든요.
게시판에서 회원들은 자기 게시글 보기로 확인 하는 형태로 해볼까해서요.
소스를 들여다 보고 있는데 혹시나 아실까 해서 질문 남겨보았습니다.
어렴풋한 기억에 board.controller.php에서 어떤 값을 넘겨주더라도 member_srl을 $logged_info->member_srl로 고정시켜줬던 것 같은데요. (확실하진 않습니다)
혹시 모르니
- skins/default/form.html의 form 태그 안에 <input type="hidden" name="member_srl" value="{Context::get('member_srl')}" cond="$act === 'dispMemberInfo'" />
- skins/default/filter/insert.xml의 form 태그 안에 <node target="member_srl" />
을 넣고 한번 해보시겠어요?
잘 입력이 되면 좋겠는데 안 되면 애드온 같은 거 만들고 문서등록시에 끼어들어서 member_srl 값을 가로채는 수밖에 없을 것 같긴 합니다.
안녕하세요.
- 발송 완료 후, 결과 메세지에 [확장변수] 지정한 부분들의 제목과 내용이 반응형으로 지원이 되지 않습니다.
확인한번 부탁드립니다.
수고하세요.
- 삼성, 크롬 브라우저에서 체크해 보았습니다.
스킨의 result.html을 보면
<!--// 확장변수 -->
<section cond="$wi->has_extra">
<table class="ap_result_extra">
<tr loop="$wi->target_extra_list => $key, $val">
<th>{$val->name}</th>
<td rel="extra_vars{$val->idx}"></td>
</tr>
</table>
</section>
이라는 부분이 있는데 아마 이쪽의 table 태그 처리된 것을 div로 처리해보시면 어떨까 싶네요. css를 수정하셔도 좋겠구요.
좋아요. 적용 예정입니다. 감사합니다.
최근에 리뉴얼한 자료여서 코어 최신 버전에서도 잘 작동할 겁니다 :)
안녕하세요 윤삼님 폼위젯 너무 잘사용하고있었는데 갑자기 메일이 전송이 안되네요 ㅜㅜ
혹시 라이믹스 최신버전에 맞춰야할까요?
관리자 페이지에서 메일, SMS 및 푸시 알림 관리 모듈 > 메일 발송 내역을 통해 이메일 전송이 원활하게 되고 있는지 확인해보세요.
몇달전 확인할때까지는 관리자메일 란에 입력한 메일로 전송이 잘됬는데 지금은 계속 확인해봐도 안오네요ㅜㅜ
뭐가 문젠지 모르겠어요