baserCMS 「BcColors」テーマのススメ その2

- 2024/1/4 に更新
昨年末に、うっかり同名の記事を削除してしまい、以下は、改めて編集し直したものです。「baserCMS 「BcColors」テーマのススメ」 で、「BcColors」テーマの不具合の解消について触れました。続いて「その2」では、勝手な改良点の具体的な改修方法や手順をお話しするつもりでしたが、思いのほか興味のある方がいらっしゃらないようなので、勝手な改良点については、またの機会(ご要望など)があればそのとき記事にしようかと思います。
というわけで、今回は、「その2」と題して「BcColors」テーマのカスタマイズ、サイト運用時の注意点について話したいと思います。
カスタマイズ、サイト運用時の注意点。
まず、「BcColors」テーマは、グローバルメニュー(グローバルナビ)やフッターメニューについて、一般的なテーマと少し違った設計がされています。
通常、グローバルメニューを設計する場合、baserCMSで用意されているBcBaser->globalMenu()関数を使って、テーマフォルダ/Elements/global_menu.phpを呼び出すか、あるいは、BcBaser->contentsMenu()関数を使うのが一般的です。というのも、BcBaser->globalMenu()関数を利用すると、管理画面上の「公開ページのメニューより除外する」チェックボックスを設定することで、公開状態のコンテンツリストからメニューとして表示、非表示するコンテンツを管理(コントロール)することができるため、サイトメニューの運用が確かに楽になります。
ですが「BcColors」テーマのグローバルメニューの場合は、BcBaser->link()を使ってメニューリストを個別にHTMLコードで記述した/Elements/globalnavi.php(以下のコード)を独自に作成され、呼び出されています。
<?php
/**
* グローバルナビとソーシャルボタン
*/
?>
<a id="PageTop"></a>
<div id="TopWrap">
<div class="wrapper">
<div id="BtnMenu">
<?php $this->BcBaser->img('sp/common/btn_menu.png', array('alt'=>'MENU')); ?>
</div>
<nav id="GlobalNavigation">
<ul class="clearfix">
<li class="dropdown-item"><?php $this->BcBaser->link('home', '/') ?></li>
<li class="dropdown-item"><?php $this->BcBaser->link('about', '/about') ?></li>
<li class="dropdown-item"><?php $this->BcBaser->link('service', '/service/') ?>
<ul class="dropdown-list">
<li><?php $this->BcBaser->link('service1', '/service/service1') ?></li>
<li><?php $this->BcBaser->link('service2', '/service/service2') ?></li>
<li><?php $this->BcBaser->link('service3', '/service/service3') ?></li>
</ul>
</li>
<li class="dropdown-item"><?php $this->BcBaser->link('works', '/works/') ?></li>
<li class="dropdown-item"><?php $this->BcBaser->link('contact', '/contact/') ?></li>
</ul>
</nav>
<div id="SocialLinks">
<ul>
<li><a href="https://www.facebook.com/basercms" target="_blank"><?php $this->BcBaser->img('common/header/icn_facebook.png', array('alt'=>'Facebook', 'class'=>'Over')); ?></a></li>
<li><a href="https://twitter.com/basercms" target="_blank"><?php $this->BcBaser->img('common/header/icn_twitter.png', array('alt'=>'twitter', 'class'=>'Over')); ?></a></li>
<li><a href="https://plus.google.com" target="_blank"><?php $this->BcBaser->img('common/header/icn_google.png', array('alt'=>'google+', 'class'=>'Over')); ?></a></li>
</ul>
</div>
</div>
</div><!-- /#TopWrap -->
グローバルメニュー(グローバルナビ)に表示したいコンテンツリストをいちいちHTMLコードで記述するのは、一見面倒な気もしますが、一般的にグローバルメニューで表示する項目数は、多くて7項目程度(それ以上多くなると逆にユーザーが情報を把握しにくくなる)ということを考えると、個別にコードを書いてもさほど面倒でもないのかもしれません。意外にこの方が合理的なのかもしれません。
次に、「BcColors」テーマのフッターメニューですが、ここではBcBaser->globalMenu()関数が使われていて、BcBaser->globalMenu()関数からテーマフォルダ/Elements/global_menu.phpを呼び出し、コンテンツリストが表示されています。そのため、「公開ページのメニューより除外する」チェックボックスの設定が可能です。表示スペースが許すのであれば、グローバルメニューで表示したコンテンツリスト以外のコンテンツをサイトマップ的に表示させるような使い方でしょうか。
2階層のリストを表示したければ、<?php $this->BcBaser->globalMenu(2) ?>
とし、レイアウト等はcssで整えます。
「BcColors」テーマにおけるフッターメニューが、一般的なテーマのそれと少し違う点は、表示するコンテンツリストが「contents」テーブルの「title」フィールドの値ではなく、「name」フィールドの値をキーとした参照配列の変数$linkLabelの値をコンテンツリスト名として出力するように、「BcColors」テーマ内の/Elements/global_menu.php(「baserCMS 「BcColors」テーマのススメ 」記事を参照ください。) に独自の改修が加えられている点です。
例えば、「name」フィールドが「about」という値のケースで、出力するリスト表示では「company」としたいような場合、以下のように記載します。
$linkLabel = [
'about' => 'company'
];
なお、前回の「baserCMS 「BcColors」テーマのススメ 」 の記事で示した「BcColors」テーマの/Elements/global_menu.phpには、フライングですが「BcColors」テーマのススメ 3」で紹介するつもりの勝手な改良がすでに加わっていて、参照配列の変数$linkLabelにキー(「name」フィールドの値)が記載されていない場合は、「name」フィールドの値をそのままコンテンツリスト名として出力するようにしています。
最後に、余談ですが、文字通りのサイトマップを出力するためにbaserCMSではBcBaser->sitemap()関数が用意されていますが、このBcBaser->sitemap()関数は、contents_menu.phpが参照されているため、上述した「公開ページのメニューより除外する」チェックボックスの設定が出力されるコンテンツリストに影響します。ちなみに「BcColors」テーマでは、サンプルデータの「sitemap」ページ内で利用されています。
私見ですが、サイトマップは公開状態のコンテンツが全て表示される方がピンとくるので、「公開ページのメニューより除外する」チェックボックスの設定がBcBaser->sitemap()関数の出力結果に影響してしまうというのは、違うように思っています。よって、以下のようにテーマフォルダ/Elements/contents_menu.phpから条件文の記述をコメントアウトしてみるというのも一考かと。
ちなみに、BcBaser->contentsMenu()関数は、ウィジェットエリアで利用可能なコアウィジェットの「ローカルナビゲーション」オプションでも利用されていますし、そのほかにも利用されているケースがあるかもしれません。その場合、上記の変更が意図せず影響してしまいますので注意が必要です。その辺りもご承知おきくださいませ。
以上が、「BcColors」テーマにおけるグローバルメニュー、フッターメニュー、サイトマップ等のメニューリスト出力周りの事情めいたお話でした。
この辺りの事情を事前に承知していると、「BcColors」テーマのカスタマイズやサイト運用がぐんとわかりやすくなると思います。