はじめに
CodeIgniter3 からMODx RevolutionのAPIを利用する方法についてまとめました。
実装方法
CodeIgniter側において、以下のライブラリファイルを作成します。 なお、MODx Revolution,CodeIgniter3はいずれもインストールされているものとします。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $modx_dir = 'modxのインストールディレクトリ/'; require_once $modx_dir . 'config.core.php'; require_once MODX_CORE_PATH.'model/modx/modx.class.php'; class Lib_modx { var $modx; public function __construct() { $this->modx = new modX(); $this->modx->initialize('web'); $this->modx->getService('error','error.modError', '', ''); } }
APIへのアクセス例
MODx上の特定のリソースのコンテンツ(content)を取得する(以下の場合はID=1のリソースを参照する)
class Example extends CI_Controller { public function index() { $this->load->library('lib_modx'); $page = $this->lib_modx->modx->getObject('modResource', 1); echo $page->get('content'); } }
ID=1の子リソースのIDを取得する
class Example extends CI_Controller { public function index() { $this->load->library('lib_modx'); var_dump($this->lib_modx->modx->getChildIds(1)); } }
ID=1の子リソースのオブジェクトを取得して配列で返す
class Example extends CI_Controller { public function index() { $this->load->library('lib_modx'); $query = $this->lib_modx->modx->newQuery('modResource'); $query->where(array( 'published' => true, 'deleted' => false, 'id' => 1 )); $resources = $this->lib_modx->modx->getCollection('modResource',$query); foreach ($resources as $resource) { $resource_array = $resource->toArray(); $result[] = $resource_array; } var_dump($result); } }