WordPressユーザーのbaserCMS覚え書き


サブメニュー(主としてサイドバー)をモジュール化する

WordPress

該当する関数(テンプレートタグ)はありませんが、あえていうなら、テンプレートのモジュール化を可能とする get_template_part() が該当するでしょう。

関数リファレンス/get template part - WordPress Codex 日本語版

baserCMS(3系)

$this->BcBaser->setSubMenus( $submenus )

[setSubMenus] サブメニューを設定する|baserCMS 3系関数リファレンス

メモ

サイドバーなどに表示するサブメニューをモジュール化し、条件に応じて表示する内容を切り替えたい場合に使えそうな関数です。公式サイトの関数リファレンスにもあるように、モジュール化したファイル群は /app/webroot/theme/{使用中のテーマ}/Elements/submenus/ ディレクトリ内に配置します。

たとえば、/app/webroot/theme/nada-icons/Elements/submenus/ 内に2つのファイル(モジュール)を置いたとしましょう。

/app/webroot/theme/nada-icons/Elements/submenus/foo.php

<p><?php echo 'I am foo!' ?></p>

/app/webroot/theme/nada-icons/Elements/submenus/bar.php

<p><?php echo 'You are bar!' ?></p>

2つのファイルを呼び出すには、/app/webroot/theme/nada-icons/Layouts/default.php に下のようなコードを記述します。

<?php $this->BcBaser->setSubMenus(array('foo','bar')) ?>
<?php $this->BcBaser->element('submenu') ?>

1行目で、$this->BcBaser->setSubMenus() により、baserCMS内部で保持されている配列 $subMenuElements に2つのファイル名がセットされます。

2行目では、$this->BcBaser->element() が /lib/Baser/View/Elements/submenu.php を呼び出し、さらにその中で foo.php と bar.php が呼び出され

<p>I am foo!</p>
<p>You are bar!</p>

というHTMLソースが出力されることになります。

『nada icons』テーマには Elements/submenu.php が含まれていないためbaserCMS側のものが呼び出されますが、テーマディレクトリの Elements/  内に submenu.php を置けば、そちらの方が優先して読み込まれます。submenu.php にカスタマイズを加えたいときは /lib/Baser/View/Elements/submenu.php をテーマディレクトリの方にコピーするとよいでしょう。