묻고답하기
회원가입폼 관련 몇가지 질문드립니다 (고수님들 도움요청요~~)
2009.08.19 01:23
1. 관리자모드에서 가입폼관리 가면 기본가입폼은 수정이나 추가할수 없고 새로운 입력폼만 관리할 수 있도록 되어있던데..
왜 기본가입폼은 수정이 안돼게 되어있는거죠? 저만 그런건지 제가 메뉴를 못찾는건지..
2. 그래서.. 해당 파일(멤버모듈에 singup_form.html 이더군요)에 가서 일일히 수정하긴 하는데.. 힘들기도 하고..
뭐 예컨대 각 입력란 하단에 ex) 아이디는 3자이상 <== 이 문구좀 수정하려고 하는데 도저히 못찾겠네요.. ^^;
왜 이런부분들이 수정이 안되게 되어있는지... 아니면 제가 못찾는것인지? 궁금하네요
3. 이것도 정말 궁금한건데요.. xe에 mysql 쿼리문은 대체 어디에 있는건지.. 정말 못찾겠네요
회원가입폼에 특정한 입력란을 추가해서 가입완료버튼 누를때 컬럼값을 추가해줘야 되는데...
어디에 mysql_query 문이 있는건지.. 정말 파일들 웬만한거 다 뒤져봐도 제 눈엔 안보이네요..^^;
분명 insert into ~~ 이런식의 sql문이 있을텐데 말이죠.. ㅋ
4. 회원들 전화번호를 sql문으로 좀 셀렉팅 하려고 하는데 어떤 테이블인지 모르겠네요.. 테이블명이 뭔지..
마지막으로..
5. 멤버모듈 폴더에 가보면 스킨과 tpl 폴더 이렇게 2개가 있던데... 안에 파일 내용물도 얼추 비슷하고..
이 2개 폴더의 차이점이 뭔가요?
댓글 3
-
khongchi
2009.08.19 03:00
-
바이블인사이드
2009.08.19 03:30
와.. .정말 지금껏 답변 받은 것중에 손가락 꼽을만큼 최고네요
정말로 제대로 답변을 해주셨네요
공부도 많이 되었습니다.. 제가 초보라 그런지 많이 모르긴 모르네요
늦은 새벽녘에 시간내셔서 길게 답변해주셨는데.. 정말 감사드립니다
예전에 컴퓨터 무지 잘하는 친구가 있었는데(친하진 않고 이름만 아는정도)
이름이나 알아놓자는 마음에 회원정보를 보던 중 그 친구와 이름이 똑같아서
순간 깜짝 놀랬거든요 근데 동명이인이더라고요 ^^
앞으로도 종종 뵙겠습니다~~
재차 감사드립니다
-
khongchi
2009.08.19 08:28
다행히 제가 아는 내용이고.. 질문도 이해하기 쉽고..(답변달기힘들만큼 이해하기 어려운 질문도 많음) 암튼 도움이 되셨으면 합니다^^
1. 기본가입폼은 수정할 수 없습니다. 회원정보는 xe_member라는 DB테이블에 기록이 되는데요. 기본가입폼에 있는 사항들은 각각 하나의 컬럼을 차지하고 있습니다. 따라서 기본가입폼을 수정하려면 DB테이블에 컬럼을 수정한다는 것이고, 그것은 DB의 스키마를 변경하는것이지요. 따라서 기본가입폼을 수정하는 것은 추천하지 않습니다.(일단, 스키마를 바꾸면 앞으로의 XE업그레이드, 또 배포되는 다른 모듈이나, 위젯등의 프로그램에서 일일이 해당부분을 수정해주어야 할지도 모릅니다.) 직접 DB테이블에 컬럼을 추가하여 전화번호필드를 생성하신 분을 보았는데요. 역시나 다른모듈이나 위젯등과 호환성에 문제가 있더라구요.
5. 5번 먼저 알려드리면 skin폴더에 있는 파일들이 실제로 쓰이는 파일들입니다. 회원과 관련된 메뉴(회원정보보기,회원정보수정,회원가입폼 등등)들은 사용자가 원하는 스킨을 사용할수 있는데요. 회원관리>기본설정에 가시면 가장 아래에 스킨을 선택할 수 있습니다. 따라서 선택한 스킨을 수정하셔야 합니다. tpl폴더와 skin폴더가 중복되는 이유는 기존에는 tpl폴더를 사용하다가 XE가 업그레이드 되면서 skin을 적용하도록 변경되어서 그런게 아닐까 생각됩니다.
2. 5번질문에서 보셨다시피 일단 tpl폴더가 아닌 skin폴더의 sign_up.html파일을 건드리셔야 하구요.
XE는 언어를 선택할수 있도록 되어 있죠. 만약 "아이디는 3자이상"이라고 그냥 적어놓는다면 언어선택에서 영어를 선택해도 "아이디는 3자이상"이라고 한글로 보여질 것입니다. 이러면 안되겠죠? 따라서 XE에서는 lang이라는 변수로 언어마다 달라져야 하는 문자열은 따로 관리합니다. "사용자 ID는 3~20자 사이의 영문+숫자로 이루어져야 하며 영문으로 시작되어야 합니다" 이 문자열에 해당하는 변수는 $lang->about_user_id이구요. 이 변수는 module/member/lang폴더 안에 각각의 언어마다 각각의 파일로 들어 있습니다. 보시면 쉽게 이해가 가실거에요.
3. xe의 mysql쿼리문은 각각의 module의 폴더안에 queries폴더(member모듈은 modules/member/queries)에 xml형식으로 들어있습니다. sql문이 직접 적혀 있는 것은 아니구요. 일정한 형식으로 변환되어 xml형태로 적혀 있습니다(한번 열어보세요). 이렇게 사용하는 이유는 대충 감은 오나 설명은 못드리겠네요. 여러DB에서의 상호운용성이 한가지 이유가 되겠네요.^^
xml파일 하나가 쿼리 하나인데요. php파일에서는 이 쿼리를 사용하기 위해서 excuteQuery, excuteQueryArray와 같은 함수를 호출해서 사용합니다.
참고로 각 모듈들은 각각의 디비테이블을 가지고 있죠, member모듈 같은 경우는 xe_member...로 시작하는 테이블들이죠. 이 테이블들의 정보(스키마)는 각모듈의 schemas 폴더안에 적혀있습니다.
4. 회원들 전화번호같은 경우는 기본입력폼에 없죠. 아마 회원관리>가입폼관리에서 추가를 해주셨을 겁니다.
이곳에서 추가해준 필드들은 모두 xe_member테이블의 extra_vars라는 db의 컬럼에 들어갑니다.
php에서 extra_vars의 필드의 값을 추출하는 방법은 질문게시판/팁공유게시판을 검색하세요.
저는 제로보드나 그누보드 같은 것은 써보지 못해서 위와 같이 복잡한 구조가 XE만 그런건지 다른 것들도 그런건지는 모르겠습니다. 하지만 쓰다보면 왜 이렇게 복잡한 구조를 가져야 하는지 이해가 되더라구요^^