LoginSignup
0
1

More than 5 years have passed since last update.

CodeIgniter3でMODx RevolutionのAPIを利用する

Last updated at Posted at 2016-05-27

はじめに

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);
	}
	
}

参考サイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1