포럼
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
모듈 확장(Module Extend) - API 추가
2014.06.16 12:28
작업 중인 게시판에 리스트를 동적으로 추가하는 기능이 필요해서 모듈 확장에 AJAX 호출에 사용되는 api도 포함시켰습니다.
insertModuleExtend로 api를 등록해주는 것이 핵심이 되겠습니다.
게시판의 기본 api는 출력에 문서 별로 정의된 확장 변수를 포함시키지 않습니다.
아래 예는 기본 api를 확장해 문서 별로 정의된 확장 변수를 추가시킨 것입니다.
[myboard.class.php]
class myboard extends ModuleObject { function checkUpdate() { $oModuleController = getController('module'); if ( !$oModuleModel->getModuleExtend( 'board','view','' ) ) { $oModuleController->insertModuleExtend('board','myboard','view',''); } if ( !$oModuleModel->getModuleExtend( 'board','api','' ) ) { $oModuleController->insertModuleExtend('board','myboard','api',''); } } }
[myboard.view.php]
require_once( _XE_PATH_.'/modules/board/board.class.php' ); require_once( _XE_PATH_.'/modules/board/board.view.php' ); class myboardView extends boardView { function init() { $class_path = ModuleHandler::getModulePath('board'); $this->setModulePath($class_path); parent::init(); } function dispBoardContent() { $output = parent::dispBoardContent(); if ($output && !$output->toBool()) return $output; } }
[myboard.api.php]
require_once( _XE_PATH_.'/modules/board/board.class.php' ); require_once( _XE_PATH_.'/modules/board/board.api.php' ); class myboardAPI extends boardAPI { // 나만의 확장변수 const MY_EXTRA_VAR_IDX = 1; const MY_EXTRA_VAR_EID = 'myvar1'; function arrangeDocumentList( $oModule ) { $document_list = Context::get('document_list'); $arranged_document_list = $oModule->get('document_list'); $i = 0; foreach( $document_list as $document ) { $val = $document->getExtraValue( myboardAPI::MY_EXTRA_VAR_IDX ); $arranged_document_list[$i]->{myboardAPI::MY_EXTRA_VAR_EID} = $val; $i++; } } function dispBoardContentList( &$oModule) { parent::dispBoardContentList ( $oModule ); $this->arrangeDocumentList( $oModule ); } }
[myboard_list.html]
... jQuery(function($){ var totalPage = {$page_navigation->total_page}; var curPage = {$page_navigation->cur_page}; $( '#나의버튼' ).click( function() { if ( curPage < totalPage ) { curPage++; var params = { page : curPage }; $.exec_json("myboard.dispBoardContentList", params, function( data ) { if ( data.error == 0 ) { for ( var i in data.document_list ) { var doc = data.document_list[i]; // 확장변수 사용하기 var myvar1 = doc.myvar1; ... } } }); }); } }); });
댓글 2
-
XE
2014.06.16 22:13
-
산하2
2014.06.17 10:54
맞습니다 ^^ 저는 확장변수 이외에도 여러가지 기능들을 구현해야해서요. 위 예는 저처럼 나중에 포럼에서 도움 받고자 하는 분들을 위해 하나의 예로서 정리해둔 것입니다.
해당 기능은 modulde extends를 통한 별도 모듈 보다는 코어(게시판 모듈)에 적용되는 것이 좋을 것 같네요.