はじめに
CodeIgniter3 からMODx RevolutionのAPIを利用する方法についてまとめました。
実装方法
CodeIgniter側において、以下のライブラリファイルを作成します。
なお、MODx Revolution,CodeIgniter3はいずれもインストールされているものとします。
application/libraries/Lib_modx.php
<?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のリソースを参照する)
application/controller/Example.php
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を取得する
application/controller/Example.php
class Example extends CI_Controller {
public function index() {
$this->load->library('lib_modx');
var_dump($this->lib_modx->modx->getChildIds(1));
}
}
##ID=1の子リソースのオブジェクトを取得して配列で返す
application/controller/Example.php
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);
}
}