Zend Frameworkをconcrete5内で使いたい
今回は、独自テーマのdefault.php内から呼び出す想定
HTTPでGETを送信してみる
- 前提として、既存システムはリクエストを受けつけるとJSONを返すAPIサービスの機能を持っている
// concrete5のLoaderは指定のクラスが見つかると、そのインスタンスを返してくれる
$json = Loader::helper('json');
// 3rdparty以下のライブラリだと、concrete5のディレクトリ構成や命名規則に準拠していないので
// インスタンスを返してくれる保証はない。
// この場合、Zend_Http_Clientがクラス名なのでインスタンスはかえってこない。
Loader::library('3rdparty/Zend/Http/Client');
$client = new Zend_Http_Client('http://example.com/api/test', array(
'maxredirects' => 0,
'timeout' => 30
));
// Zend_Http_Responseがかえってくるので、bodyを取得
$body = $client->request(Zend_Http_Client::GET)->getBody();
// JSONはPHPオブジェクトにデコードされる
$json = $json_helper->decode($body);
コアをオーバーライドするときは同じディレクトリ構造とファイル名で
blocks/page_list/templates/blog_index.php // 正常にオーバーライド
blocks/page_list/tmeplates/blog_index/view.php // 同名のカスタムテンプレートが追加されてしまう
独自に追加するブロックなどのディレクトリ構造は局所化重視
// 管理方法が統一できるし、タスクツールとの相性も良くなる
blocks/autonav/templates/bootstrap/view.php
blocks/autonav/templates/bootstrap/view.css
// sass側も同じ構造で用意する
sass/blocks/autonav/templates/bootstrap/view.sass