baserCMSで簡単に独自の設定を盛り込む3つの方法

やあどうも。ぼくです・ω・
※この記事は baserCMS Advent Calendar 2013 の22日目の記事です。
再び登場してみました。
もう少しで今年も終わっちゃいますよん。=[ 'ω' ] トウフー

先ずはbaserCMS3のご紹介

baserCMSを知らない方もいると思うんで、ここで紹介しておきます。
この辺です。

今回のお題目

baserCMSを扱う上で、ちょっとラクしたいことがありませんか?
ありますよね?
私は良くあります。
例えば、以下のようなケースが挙げられます。

  • 同じ文言を色んな箇所で使い回したいとき
  • 同じURLを色んな箇所で使い回したいとき
  • プログラムの中で、設定値として持たせておいてすぐに変更できるようにしときたいとき

。。。といったような感じです。

で、ここで肝心なのは、何もプログラムを作るときのみに限らない点です。
具体的には、テーマ内のビュー、つまりテンプレートを作成する際にも使う事ができます。

baserCMS公式サイトでは、続々と3系に対応したテーマが出てきてるみたいですね。
こうしたテーマを試しにさわってるときにもお試しできますよ。

独自の設定を持たせたい方法:その1

★Config ディレクトリ内に設定ファイルを用意する

ここでは試しに、制作しているサイトを www.hogehoge.orz と仮定して、制作するテーマをドメイン名に合わせて /app/webroot/theme/hogehoge としていることにします。

先ず、/app/Config 内に、任意のphpファイルを用意します。
/app/Config/hogehoge.php
中身はこんな感じ。

$config['Hogehoge'] = array(
	'text' => array(
		'title1' => 'ほげほげ',
		'title2' => 'ふがふが'
	),
	'url' => array(
		'link1' => 'http://www.google.co.jp/',
		'link2' => 'http://basercms.net/'
	),
	'moge' => array(
		'moga1', 'moga2', 'moga3', 'moga4', 'moga5'
	)
);

次に、/app/Config/bootstrap.php に、以下の記述を追記します。
赤文字の箇所が追記箇所です。

/**
 * app の設定ファイルを読み込む
 */
Configure::load('setting');
Configure::load('hogehoge');

これで出来上がりです。

あとはテーマ内の任意のビュー(テンプレート)で、以下のようにすると設定している文字列が表示されもうす。

<?php echo Configure::read('Hogehoge.text.title1') ?>

「Hogehoge.moga」については foreach で取り出して利用できます。

これだけでサイト独自の設定を持たせる事ができます。
試しにやってみてくださいね?

独自の設定を持たせたい方法:その2

★テーマ内の Config ディレクトリ内に設定ファイルを用意する

先ず、/app/webroot/theme/hogehoge/Config/bootstrap.php 内に、任意の設定を記述します。
中身はさっきと同じ。

$config['Hogehoge'] = array(
	'text' => array(
		'title1' => 'ほげほげ',
		'title2' => 'ふがふが'
	),
	'url' => array(
		'link1' => 'http://www.google.co.jp/',
		'link2' => 'http://basercms.net/'
	),
	'moge' => array(
		'moga1', 'moga2', 'moga3', 'moga4', 'moga5'
	)
);

では表示させてみましょう。
先と同じようにテーマ内のビューに書いてみます。

<?php echo Configure::read('Hogehoge.text.title1') ?>

。。。でねぇ!!( ̄□ ̄;)!!

そうです。出ません。

というワケで、先の設定に追記します。
赤文字の箇所が追記箇所です。

$config['Hogehoge'] = array(
	'text' => array(
		'title1' => 'ほげほげ',
		'title2' => 'ふがふが'
	),
	'url' => array(
		'link1' => 'http://www.google.co.jp/',
		'link2' => 'http://basercms.net/'
	),
	'moge' => array(
		'moga1', 'moga2', 'moga3', 'moga4', 'moga5'
	)
);
Configure::write('Hogehoge', $config['Hogehoge']);

これで出来上がりです。

あとはテーマ内の任意のビュー(テンプレート)で、以下のようにすると設定している文字列が表示されもうす。

<?php echo Configure::read('Hogehoge.text.title1') ?>

/app/Config に独自設定ファイルを置いた場合と異なり、こちらではその設定を設定として有効化する際の Configure::write() が必要です。
この点に注意です。

独自の設定を持たせたい方法:その3

★/app/Config 内の setting.php に設定内容を記述する

/app/Config/setting.php は、baserCMSのパッケージに同梱されているファイルです。
こちらに設定を書いても、先の2つの方法と同様に自由に呼び出す事ができます。

どうしてでしょうか?
「方法:その1」で、以下のような記述がありました。

/**
 * app の設定ファイルを読み込む
 */
Configure::load('setting');
Configure::load('hogehoge');

緑色の文字の箇所をよくよく見てみると、追記した箇所と同じ形式で書いてありますね。
つまり「その1」で紹介したことと同様のことができそうだということがわかります。

まとめ

紹介した3つの方法は、どれも基本的に同じことやってます。
では、どれがもっとも良い方法なのでしょうか?

40秒ですきにしなっ!!  by ドー○さん

これはそのプロジェクトの運用・管理次第で使い分けると良いかもしれませんね。
独自の追加プログラム(app 内に独自のコントローラを置いたりする場合)を利用する際は「その1」。
テーマのみで利用する場合は「その2」。
といった感じでしょうか。
でもこの手の設定ファイルは、できるだけ1箇所に収めていた方が良さそうです。
ソコココに分散させるよりは、1箇所に集約しといた方が良いです。

最後に。。。

baserCMSには、ほんとに便利な機能や仕組みが最初から備わっています。
今回ご紹介した内容が、誰かの「ちょっとべんり」になったら良いなー。

ではでは、次の担当はどなたになることでしょうね?
Somebody Anybody Yo!! ろしくお願いしまーす丶(・ω・)ノ

baserCMS Advent Calendar 2013 - Adventar
■ 昨年の baserCMS Advent Calendar 2012 - Adventar

baserCMS関連リンク

baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』
公式公開中のテーマ一覧
公式公開中のプラグイン一覧
baserCMSユーザーマニュアル

▲ to Top

トラックバック(0)

▲ to Top