Rhymix CMS
Rhymix CMS 게시판 글 목록 가져오기
비너발트
2025. 2. 4. 02:29
기존 제로보드XE에서 Rhymix 1.. 버전에서 2 버전으로 업데이트되면서 굉장히 많은 변화가 생겼습니다 사실상 기존 XE개발 레퍼런스를 봐도 개발이 어려울 정도로 달라진 것 같은데 이젠 Rhymix Git을 보고 찾아야 할 지경에 이르렀습니다
옛날 방식으로 호출하니 에러를 뱉어내는..! 개선되어 좋다가도 다시 공부를 할 생각 하니 암담하지만 좋습니다 오랜만에 보는 PHP코드지만 코어를 살펴보니 굉장히 많이 변했으면서도 불필요한 코드가 사라지고 좀 더 짧은 코드로 결과를 만들 수 있게 변경된 점이 보였습니다
특정 게시판의 글들을 모두 가져오는 방법
$args = new stdClass(); //빈 객체 생성
$args->module_srl = 121; // 가져올 게시판 모듈번호
$args->list_count = 8; // 가져올 게시글 수
$args->sort_index = 'regdate'; // 정렬 기준: 등록일(regdate)
$args->order_type = 'desc'; // 내림차순 정렬(최신 글 우선)
$list = executeQuery('document.getDocumentList', $args)->data;
var_dump($list);
exit;
document 모듈에서 제공하는 queries 폴더의 getDocumentList.xml 쿼리를 실행시켜 특정번호의 게시판의 게시물 가져오는 코드입니다 아래의 xml을 참조하면 더 상세한 조건으로 게시물을 가져올 수 있습니다
<query id="getDocumentList" action="select">
<tables>
<table name="documents" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="in" column="module_srl" var="module_srl" filter="number" />
<condition operation="notin" column="module_srl" var="exclude_module_srl" filter="number" pipe="and" />
<condition operation="in" column="category_srl" var="category_srl" pipe="and" />
<condition operation="equal" column="is_notice" var="s_is_notice" pipe="and" />
<condition operation="in" column="member_srl" var="member_srl" pipe="and" />
<condition operation="in" column="status" var="statusList" pipe="and" />
<group pipe="and">
<condition operation="more" column="list_order" var="division" pipe="and" />
<condition operation="below" column="list_order" var="last_division" pipe="and" />
</group>
<group pipe="and">
<condition operation="search" column="title" var="s_title" />
<condition operation="search" column="content" var="s_content" pipe="or" />
<condition operation="like_prefix" column="user_name" var="s_user_name" pipe="or" />
<condition operation="like_prefix" column="user_id" var="s_user_id" pipe="or" />
<condition operation="like_prefix" column="nick_name" var="s_nick_name" pipe="or" />
<condition operation="like" column="email_address" var="s_email_address" pipe="or" />
<condition operation="like" column="homepage" var="s_homepage" pipe="or" />
<condition operation="like" column="tags" var="s_tags" pipe="or" />
<condition operation="equal" column="member_srl" var="s_member_srl" pipe="or" />
<condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
<condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />
<condition operation="less" column="blamed_count" var="s_blamed_count" pipe="or" />
<condition operation="more" column="comment_count" var="s_comment_count" pipe="or" />
<condition operation="more" column="trackback_count" var="s_trackback_count" pipe="or" />
<condition operation="more" column="uploaded_count" var="s_uploaded_count" pipe="or" />
<condition operation="like_prefix" column="regdate" var="s_regdate" pipe="or" />
<condition operation="like_prefix" column="last_update" var="s_last_update" pipe="or" />
<condition operation="like_prefix" column="ipaddress" var="s_ipaddress" pipe="or" />
</group>
<group pipe="and">
<condition operation="more" column="last_update" var="start_date" pipe="and" />
<condition operation="less" column="last_update" var="end_date" pipe="and" />
<condition operation="more" column="regdate" var="start_regdate" pipe="and" />
<condition operation="less" column="regdate" var="end_regdate" pipe="and" />
</group>
</conditions>
<navigation>
<index var="sort_index" default="list_order" order="order_type" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
<offset var="offset" />
</navigation>
</query>
특정 게시물만 가져오기
$argss = new stdClass(); //빈객체
$argss->document_srl = 124; // 가져올 게시글번호
$list = executeQuery('document.getDocument', $argss)->data; //XML 쿼리 실행
var_dump($list);
exit;
<query id="getDocument" action="select">
<tables>
<table name="documents" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="document_srl" var="document_srl" filter="number" notnull="notnull" />
</conditions>
</query>
특정 게시물만 여러 개 가져오기
$oDocumentModel = getModel('document');
$obj = new stdClass();
$obj->document_srl = [123,124];
$test = $oDocumentModel->getDocuments($obj->document_srl);
var_dump($test);
exit;
이번 코드는 좀 다른 게 작성해 보았는데요 기존 executeQuery('document.getDocument', $argss)->data; 로 가져오던 결괏값을 getModel로 document 객체를 통으로 가져와서 query를 실행시키는 방법도 있습니다 한 로직에서 여러 query를 사용해야 한다면 이 방법이 훨씬 편합니다
<query id="getDocuments" action="select">
<tables>
<table name="documents" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="in" column="document_srl" var="document_srls" notnull="notnull" />
</conditions>
<navigation>
<index var="list_order" default="list_order" order="order_type" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
</query>