SOY CMSマニュアル
SOY CMSを試してみよう!
テンプレートに書いたPHPコードを動かす
SOY CMSの初期設定ではテンプレートにPHPコードを書いてもそのまま表示されるだけでプログラムとして動作しません。
ここではテンプレートに書いたPHPコードをプログラムとして動かしたいときに必要な設定などを説明したいと思います。
テンプレートに書いたPHPコードが動く設定に変更する
設定ファイルの編集
common/config/というディレクトリ(フォルダ)にuser.config.php.sampleというファイルがあります。まずはこれを編集します。
以下のように書かれている箇所を探します。バージョンによって違いがあるかもしれませんが、おおむね12行目~14行目です。
//テンプレートへのPHPの許可、不許可 (true or false)
//デフォルトは不許可 (false)
define("SOYCMS_ALLOW_PHP_SCRIPT",false);
これを以下のように変更します(false → true)。
define("SOYCMS_ALLOW_PHP_SCRIPT",true);
設定ファイルのファイル名を変更
次にファイル名を以下のように変更します。末尾の".sample"を削ってください。
- 変更前
- user.config.php.sample
- 変更後
- user.config.php
設定内容の確認
管理画面トップのバージョン番号の下に Allow PHP Script : true という表示がされたら成功です(初期管理者でログインしているときのみ表示されます)。
PHPが実行されずにソースが表示されてしまう場合は、初期管理者でログインして「ようこそSOY CMSへ」の下にある「キャッシュのクリア」をクリックするか、ページのテンプレートを保存し直してください。
テンプレート内のPHPコードで利用可能な変数
上記の方法でテンプレート内でPHPコードが書けることになりましたが、その中で自動的に使えるようになる変数を説明します。
どの場所でも使える変数
$pageにそのページ内のほとんどの情報が配列の形で入っています。
$pageにどのようなプロパティがあるのかは var_dump($page); で確かめるのが早いです。
ブロック内で使える変数
ブロックIDと同じ名前の変数でそのブロックのデータにアクセスすることができます。
たとえば、<!-- block:id="my_block" -->のように書いていれば、そのブロック内では$my_blockという変数でそのブロックのデータを取得することができます。
これはブログブロックやモバイルブロックでも同様です。たとえば、b_block:id="entry"の内部では$entryでその記事のタイトルや本文などを取得することができます。
さらに繰り返しのあるブロック(ラベルブロックやブログの記事リストブロックなど)では$ブロック名_counter(上記の例だと$my_block_counter)でブロックの繰り返し回数を得ることができます。
データベースのデータに直接アクセスする
SQL文を発行して直接データベースの値をとってくることも可能です。
$db = new SOY2DAO();
$result = $db->executeQuery("select * from Page;");
とすれば、$resultにPageというテーブルの情報がすべて入ります。
$db->executeQuery(...)の前に
$db->setLimit(10);
$db->setOffset(5);
とすれば、5番目のデータから14番目までのデータの計10件のデータを取得することができます。
参考
- 開発ブログ記事
- SOY CMSのページ内でPHPを実行する(クトル -QCTL- ブログ)
- SOY CMS で PHP を使えるようにする方法。(btmup Blog)