웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
테이블명.xml
core 파일 수정
xe/classes/db/DBMysql_innodb.class.php <- 이것은 각 DB 종류에 따라 그 파일을 수정해야합니다.
$prefix 로 시작하는 것 하고 그 밑에 내용 두줄을 위와 같이 교체 해주세요.
원리는 위에 지정한 테이블명과 접근하려는 테이블명이 같을 경우 xe_ 등의 말머리를 출력하지 않게 하는 겁니다.
그렇게 때문에 본인의 DB에 xe_documents 라는 테이블과 documents 라는 테이블이 있을 경우 테이블명이 동일하기 때문에
이런 경우를 제외하고는 다 뽑는게 가능하다고 봅니다.
좀 더 간편한 방법이 없을까 하지만 아직 실력이 이것 밖에 안되네요 ^^
XE용 query xml 방식으로 일반 테이블도 접근 처리 하기
2009.06.18 17:44
이 부분은 약간의 코어 소스 수정과 변수 선언을 해주셔야 합니다.
보통 개인 DB 건드리고 출력할 용도가 게시판, 위젯, 애드온 등이 되겠는데요.
이 팁에서는 게시판을 기준으로 설명하겠습니다.
준비물 : 팁, xml파일, func_include 애드온, class.php
사전지식 : func_include 애드온을 이용한 함수 사용법
class.php
class 클래스명 {
function init(){
Context::set('getTable',array('테이블명1','테이블명2'));
}
function getTable(){
$output = executeQueryArray('board/skins/스킨명.테이블명', $obj);
// 오류가 생기면 그냥 무시
if(!$output->toBool()) return;
return $output->data;
}
}
function init(){
Context::set('getTable',array('테이블명1','테이블명2'));
}
function getTable(){
$output = executeQueryArray('board/skins/스킨명.테이블명', $obj);
// 오류가 생기면 그냥 무시
if(!$output->toBool()) return;
return $output->data;
}
}
테이블명.xml
<query id="테이블명" action="select">
<tables>
<table name="테이블명" /> <- 이곳 본인의 테이블명 적으시면 됩니다.
</tables>
<columns>
<column name="*" />
</columns>
</query>
<tables>
<table name="테이블명" /> <- 이곳 본인의 테이블명 적으시면 됩니다.
</tables>
<columns>
<column name="*" />
</columns>
</query>
게시판스킨 임의의 html 파일에 아래를 선언
<!--@if($func_check)-->
{@ func_include('modules/board/skins/스킨명/php/class.php') }
{@ 클래스명::init() }
{@ $tables = 클래스명::getTable() }
<!--@end-->
<!--@foreach($tables as $key => $val)-->
내용
<!--@endforeach-->
{@ func_include('modules/board/skins/스킨명/php/class.php') }
{@ 클래스명::init() }
{@ $tables = 클래스명::getTable() }
<!--@end-->
<!--@foreach($tables as $key => $val)-->
내용
<!--@endforeach-->
core 파일 수정
xe/classes/db/DBMysql_innodb.class.php <- 이것은 각 DB 종류에 따라 그 파일을 수정해야합니다.
/**
* @brief insertAct 처리
**/
function _executeInsertAct($output) {
// 테이블 정리
foreach($output->tables as $key => $val) {
$prefix = (!@in_array($key, Context::get('getTable')))? $this->prefix:false;
$table_list[] = '`'.$prefix.$val.'`';
}
.... 중략
/**
* @brief updateAct 처리
**/
function _executeUpdateAct($output) {
// 테이블 정리
foreach($output->tables as $key => $val) {
$prefix = (!@in_array($key, Context::get('getTable')))? $this->prefix:false;
$table_list[] = '`'.$prefix.$val.'` as '.$key;
}
....중략
/**
* @brief deleteAct 처리
**/
function _executeDeleteAct($output) {
// 테이블 정리
foreach($output->tables as $key => $val) {
$prefix = (!@in_array($key, Context::get('getTable')))? $this->prefix:false;
$table_list[] = '`'.$prefix.$val.'`';
}
....중략
/**
* @brief selectAct 처리
*
* select의 경우 특정 페이지의 목록을 가져오는 것을 편하게 하기 위해\n
* navigation이라는 method를 제공
**/
function _executeSelectAct($output) {
// 테이블 정리
foreach($output->tables as $key => $val) {
$prefix = (!@in_array($key, Context::get('getTable')))? $this->prefix:false;
$table_list[] = '`'.$prefix.$val.'` as '.$key;
}
....중략
* @brief insertAct 처리
**/
function _executeInsertAct($output) {
// 테이블 정리
foreach($output->tables as $key => $val) {
$prefix = (!@in_array($key, Context::get('getTable')))? $this->prefix:false;
$table_list[] = '`'.$prefix.$val.'`';
}
.... 중략
/**
* @brief updateAct 처리
**/
function _executeUpdateAct($output) {
// 테이블 정리
foreach($output->tables as $key => $val) {
$prefix = (!@in_array($key, Context::get('getTable')))? $this->prefix:false;
$table_list[] = '`'.$prefix.$val.'` as '.$key;
}
....중략
/**
* @brief deleteAct 처리
**/
function _executeDeleteAct($output) {
// 테이블 정리
foreach($output->tables as $key => $val) {
$prefix = (!@in_array($key, Context::get('getTable')))? $this->prefix:false;
$table_list[] = '`'.$prefix.$val.'`';
}
....중략
/**
* @brief selectAct 처리
*
* select의 경우 특정 페이지의 목록을 가져오는 것을 편하게 하기 위해\n
* navigation이라는 method를 제공
**/
function _executeSelectAct($output) {
// 테이블 정리
foreach($output->tables as $key => $val) {
$prefix = (!@in_array($key, Context::get('getTable')))? $this->prefix:false;
$table_list[] = '`'.$prefix.$val.'` as '.$key;
}
....중략
원리는 위에 지정한 테이블명과 접근하려는 테이블명이 같을 경우 xe_ 등의 말머리를 출력하지 않게 하는 겁니다.
그렇게 때문에 본인의 DB에 xe_documents 라는 테이블과 documents 라는 테이블이 있을 경우 테이블명이 동일하기 때문에
이런 경우를 제외하고는 다 뽑는게 가능하다고 봅니다.
좀 더 간편한 방법이 없을까 하지만 아직 실력이 이것 밖에 안되네요 ^^
태그 연관 글
- [2019/03/18] 포럼 XE 레이아웃 제작 일주일 코스
- [2019/01/18] 묻고답하기 모바일에서 서 레이아웃 비정상 문의드려요
- [2018/12/31] 묻고답하기 슬라이드 위젯 삽입 후 메뉴가 안보이네요 고수님들 부탁드립니다 *6
- [2018/11/21] Blog [XE3] XE Store 사업설명회 행사 안내 - 2018년 12월 5일 *2
- [2018/03/28] 묻고답하기 $oMail->setSender Sender 이메일 발신자가 공백으로 나옵니다. *3
제목 | 글쓴이 | 날짜 |
---|---|---|
로그인 후 그룹별로 다른 페이지로 가기 - 업데이트판 v1.5 [19] | 무대포2 | 2009.06.24 |
XE용 query xml 방식으로 일반 테이블도 접근 처리 하기 [1] | 라르게덴 | 2009.06.18 |
로그인 페이지 만드는 방법 [5] | 산토 | 2009.06.12 |
BGM 가로스크롤바 없애는 방법.. | 청개굴이 | 2009.06.03 |
별도 페이지 로그인방법 | cornet | 2009.05.21 |
게시판에서 헤더와 풋부분을 붙이면 이미지 출력이 되지 않아요.. [2] | 율이★ | 2009.05.19 |
까페 아이디 삭제후 동일 아이디로 생성하는 방법 | 키스메리 | 2009.05.15 |
내가 작성 한 글에 대한 일괄 삭제/이동/복사 권한 주기
[2]
![]() | 개돌 | 2009.05.15 |
XpressEngine 1.2.2용 배경음악 틀 [4] | 마빈박사359 | 2009.05.10 |
1.2.2 업데이트 이후 위젯이 출력안되시는 분들 [1] [1] | 반도체맨 | 2009.05.01 |
사랑비BGM 플레이기 설치하고 제어하기 [2] | 스유군 | 2009.04.28 |
XE 위키에 최근 접속 페이지 정보 출력
![]() | 개돌 | 2009.04.27 |
BNU님의 Planner XE 1.2 버젼(일정관리)
[9]
![]() | 개돌 | 2009.04.21 |
다양한 언어로 홈페이지 서비스하기 - 무식한 방법 [4] | 멀리서 | 2009.04.21 |
홈페이지 타이틀이 $user_lang->home ,freeboard등으로 나오는 문제 수정방법(자체해결) [1] | 정박사닷컴 | 2009.04.18 |
페이지 및 게시판 메뉴 경로
[2]
![]() | 자반튀김 | 2009.04.15 |
게시판에서 확장 변수를 쓰는 경우 1.2.0 이상 버전으로 업그레이드하기 전에 패치하시기 바랍니다.
[5]
![]() | mooo | 2009.04.14 |
주민등록 입력 폼 1.2.0
[55]
![]() | 개돌 | 2009.04.10 |
IIS + PHP + MySQL5 설치 시 버젼 주의 [1] | 개돌 | 2009.04.10 |
요청하신 모듈을 찾을 수 없습니다 문제해결 방법 [2] | 반도체맨 | 2009.04.09 |
추천합니다. ^^