Novius OS でXMLや JSON出力をする方法です。Novius OS では、アプリケーションを作成して、コンテンツを管理します。アプリケーションは「WordPressのカスタム投稿タイプとカスタムフィールドを一緒にしたもの」と考えてください。
コンテンツを編集する
Novius OS では、アプリケーションごとに編集画面が作られます。下の画像は、飲食店のメニューを想定したサンプルケースです。
上の画面から、メニュー項目をいくつか追加して公開すると、下の画像のように出力することができます。
見たまま編集ではないですが、その代わりに、提供開始日などの補足情報(管理用に使う情報)を登録することができます。
XMLやJSONで出力する
XMLやJSONで出力する方法は、FuelPHPのRestコントローラが用意されています。Novius OSはFuelPHPベースで構築されているので、このRestコントローラを使うことができます。
しかし、現時点では、Novius OS同梱のアプリケーションマネージャで作成した場合、Restコントローラを使うようにはなりません。なので、コードを少し書き換えることになります。具体的にはこんな感じです。
https://github.com/ounziw/recipe/blob/first-commit/classes/controller/front/menu.ctrl.php#L40 辺りです。
if ($this->format != 'html') { $this->main_controller->setHeader('Content-Type', $this->_supported_formats[$this->format]); return $this->main_controller->sendContent($this->response($this->_display_list_menu())); } else { return $this->display_list_menu(); }
通常はView::forge(…)でビューを作成します。そこを、ヘッダー情報を変更してデータを送信するように変更します。上のコードでは、
display_list_menu: View::forge()を呼び出す
_display_list_menu: View::forge()を呼び出さずにデータを返す
にしています。
こうすると、xmlやjson形式で出力できます。
フロントエンドでAjaxを使って表示を書きかえる、iPhone/androidアプリにデータをプッシュする、外部ウェブサービスとつなぐ、といったとき、xmlやjson形式で出力できると便利です。
.htaccessの変更
.jsonや.xml等のURLでのアクセスを適切に処理するため
RewriteRule ^.+(\.html|/)$ /htdocs/novius-os/front.php [QSA,PT]
を、
RewriteRule ^.+(\.html|\.json|\.xml|\.csv|/)$ /htdocs/novius-os/front.php [QSA,PT]
に変更します。
デフォルト機能にするかどうか
FuelPHPフレームワークの機能を使ってxml/json出力を行うコードです。なので、デフォルト機能にする、という案も考えられます。あるいはアプリケーション作成時に、「xml/json出力も可能にする」といったオプションを用意しても良いかもしれません。