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>