묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
1번 게시판 본문에서 2번 게시판의 정보를 불러오기
2014.05.06 05:12
* 해당 내용은 게시판 스킨에서 read.html or read_document.html 에 해당하는 내용입니다.
1번 게시판에서
2번 게시판의 정보를 불러오고 싶습니다.
단순히 불러오는 것이 아니라
확장변수 조건에 맞는 경우 불러오게 하고 싶습니다.
즉 2번 게시판의 root라는 확장변수 값이 apple인 게시물을 불러오는 것이지요..
우선 해당 기능은 구현하긴 했습니다만...(잘되긴 합니다.)
뭐랄까... 너무 여러번 쿼리를 날리는 것 같아서... 이래도 되는 건지...
선구자분들의 의견을 듣고 싶습니다.
문제가 없으면 상관 없을텐데.. 아무튼... 해당 코드를 다듬을 수 있는지 궁금합니다.
$prd->getExtraEidValueHTML('확장변수ID');
이런식으로 사용하는 건 안되더군요..-_-;;
가장 좋은 방법은.. $document_list처럼 다른 게시판 정보를 출력할 것을 담을 수 있다면
가장 베스트이지 않을까.. 합니다만..
해당 방법을 모르겠군요..ㅡ.ㅜ.
고견 부탁드립니다.
{@ //대상 게시판 mid $parent_mid = 'test'; $oDB = &DB::getInstance(); $query = $oDB->_query('select module_srl from xe_modules where mid="'.$parent_mid.'"'); $module = $oDB->_fetch($query); //게시판 srl값 $module_srl = $module->module_srl; //타겟 eid(확장변수id) $target_eid = 'root'; // 뽑아올 확장변수 값의 기준.. $target_id = 'apple'; $oDB = &DB::getInstance(); // 확장변수에서 모듈값, 확장변수 id, 확장변수 값 비교해서 가져오기 $query = $oDB->_query('select document_srl from xe_document_extra_vars where module_srl="'.$module_srl.'" and eid="'.$target_eid.'" and value="'.$target_id.'"'); // 가져온 값을 target_document로 저장 $target_document = $oDB->_fetch($query); } <!-- target_document를 출력하기 위해 뿌림 --> <!--@foreach($target_document as $document_srl => $cont)--> {@ $oDB = &DB::getInstance(); // 게시판 문서 정보를 가져옴 $query = $oDB->_query('select * from xe_documents where document_srl="'.$cont->document_srl.'"'); $prd = $oDB->_fetch($query); // 확장변수 cv의 값을 가져옴 $query = $oDB->_query('select value from xe_document_extra_vars where document_srl="'.$cont->document_srl.'" and eid="cv"'); $cv = $oDB->_fetch($query); $cv = $cv->value; // 확장변수 thumb 값을 가져옴 $query = $oDB->_query('select value from xe_document_extra_vars where document_srl="'.$cont->document_srl.'" and eid="thumb"'); $thumb = $oDB->_fetch($query); $thumb = $thumb->value; // 확장변수 cvlink 값을 가져옴 $query = $oDB->_query('select value from xe_document_extra_vars where document_srl="'.$cont->document_srl.'" and eid="cvlink"'); $cvlink = $oDB->_fetch($query); $cvlink = $cvlink->value; // cvlink값이 있으면 cv를 링크로 감싸줌 if($cvlink) $cv = '<a href="'.$cvlink.'" />'.$cv.'</a>'; } <div class="list"> <p> <img src="{$thumb}" /> </p> <p>{$prd->title} ({$cv})</p> <p>{$prd->content}</p> </div> <!--@end-->
조금 소스를 줄여봤습니다..
foreach를 이용해서~ if으로 처리했는데.. 역시 이것도 뭐랄까 깔끔하다는 느낌은 나지 않네요..ㅡ.ㅜ
{@ //대상 게시판 mid $parent_mid = 'test'; $oDB = &DB::getInstance(); $query = $oDB->_query('select module_srl from xe_modules where mid="'.$parent_mid.'"'); $module = $oDB->_fetch($query); //게시판 srl값 $module_srl = $module->module_srl; //타겟 eid(확장변수id) $target_eid = 'root'; // 뽑아올 확장변수 값의 기준.. $target_id = 'apple'; $oDB = &DB::getInstance(); // 확장변수에서 모듈값, 확장변수 id, 확장변수 값 비교해서 가져오기 $query = $oDB->_query('select document_srl from xe_document_extra_vars where module_srl="'.$module_srl.'" and eid="'.$target_eid.'" and value="'.$target_id.'"'); // 가져온 값을 target_document로 저장 $target_document = $oDB->_fetch($query); } <!-- target_document를 출력하기 위해 뿌림 --> <!--@foreach($target_document as $document_srl => $cont)--> {@ $oDB = &DB::getInstance(); $query = $oDB->_query('select * from xe_documents where document_srl="'.$cont->document_srl.'"'); $prd = $oDB->_fetch($query); $query = $oDB->_query('select value, eid from xe_document_extra_vars where document_srl="'.$cont->document_srl.'"'); //해당 게시판의 확장변수를 가져옴 $extra = $oDB->_fetch($query); } <!-- foreach로 반복으로 돌려서~ --> <!--@foreach($extra as $eid => $exvar)--> <!-- 원하는 값을 매칭해서 변수로 저장~ --> <!--@if($exvar->eid=='cv')--> {@ $cv = $exvar->value; } <!--@else if($exvar->eid=='cvlink')--> {@ $cvlink = $exvar->value; $cv = '<a href="'.$cvlink.'" />'.$cv.'</a>'; } <!--@else if($exvar->eid=='thumb')--> {@ $thumb = $exvar->value; } <!--@else--> <!--@end--> <!--@end--> <div class="list"> <p> <img src="{$thumb}" /> </p> <p>{$prd->title} ({$cv})</p> <p>{$prd->content}</p> </div> <!--@end-->
댓글 2
-
sejin7940
2014.05.06 08:16
-
애니즌
2014.05.06 17:13
오오오오오!!
답변 감사합니다 ! 모듈을 호출해서 하면 되는 것이였군요...+_+ 신기합니다!!
덕분에 많이 배워갑니다 ! 사랑합니다 > . < !!
가장 좋은 방법은 위젯으로 만드는거지만 (특정확장변수 검색하여 목록 출력하는 위젯)
그냥 소스로 간단히 처리하려면... (대략적으로 짠겁니다. 상세한건 조율하시면 될거예요)
(XE 만들어져있는 함수들을 적극적으로 이용하는게 편합니다. 굳이 쿼리로 일일이 다 돌리는것보다)
{@
$args_target->search_target = 'extra_vars1'; // 타겟 확장변수 (eid 가 아닌 확장변수 순서를 이용해 extra_vars번호 로 지정)
$args_target->search_keyword = 'apple'; // 타겟 확장변수 값
$args_target->mid = 'cart'; // 타겟 게시판 mid
$args_target->list_count = '20'; // 추출 개수
$oModuleModel = &getModel('module');
$target_module_info = $oModuleModel->getModuleInfoByMid($args_target->mid);
$args_target->module_srl = $target_module_info->module_srl;
$oDocumentModel = &getModel('document');
$output_target = $oDocumentModel->getDocumentList($args_target);
}
<!--@foreach($output_target->data as $no_target=>$oTarget)-->
{@
$cv=$oTarget->getExtraEidValue('cv');
$thumb=$oTarget->getExtraEidValue('thumb');
$cvlink=$oTarget->getExtraEidValue('cvlink');
}
<!--@if($cvlink)-->{@$cv = '<a href="'.$cvlink.'" />'.$cv.'</a>';}<!--@end-->
<div class="list">
<p> <img src="{$thumb}" /></p>
<p>{$oTarget->getTitle()} ({$cv})</p>
<p>{$oTarget->getContent(false)}</p>
</div>
<!--@end-->