SOY CMSでどのページでも使えるブログのサイドバーを作ってみた


SOY CMSの仕様で最初から気になり続けていた問題がある。

それは検索結果ページを設ける時にサイドバーのカテゴリ一覧等のb_blockを使用することが出来ない

ということ。


今回はこの問題を解決すべく、

<!-- cms:module="common.blogparts" cms:page="*" -->で囲った箇所では、

指定のブログページのb_blockが使用できるというモジュールを追加しました。




詳しく説明すると、

あるブログページ用の検索結果ページを作成する際、

検索結果ページは新たに標準ページで作成しなければならない。


そうなると、あるブログページでしか使用できないb_block:id="category"等のサイドバーで使用するようなパーツが使用できなくなる。


このようなパーツは標準仕様であるblockをいくら工夫しても実装することができなかったので、

手動で変更することが余儀なくされていた。


以前は全ページ共通のモジュールの作成方法を紹介していたが、

これだとPHPの記述があまりにも多すぎて躊躇する方もいました。


というわけで、

冒頭にある通り、指定のブログページのb_blockを使用することができるcms:module="blogparts"というモジュールを追加しました。


使い方は、

はじめに他ページでb_blockを使用したいブログページのIDを調べます。



ブログページの詳細画面を開き、



アドレスバーの末尾にある数字を記録しておきます。


続いて、

検索結果の記事一覧ページを表示するために標準ページを作成します。

プラグインブロック等で検索結果を表示するブロックを設けた後、

ブログ記事の検索フォームを設置する - SOY CMSを使ってみよう



ブログページのb_blockに該当する箇所のHTMLをコピーします。

この時、該当する箇所の上下に


<!-- cms:module="common.blogparts" cms:page="4" -->
<!--カテゴリーの記述-->
<li>
	<h2>カテゴリー</h2>
	<ul>
		<!-- b_block:id="category" カテゴリーリスト出力 -->
		<li><a href="#" title="" cms:id="category_link"><!-- cms:id="category_name" -->ダミーカテゴリー<!-- /cms:id="category_name" --></a> (<!-- cms:id="entry_count" -->00<!-- /cms:id="entry_count" -->) </li>
		<!-- /b_block:id="category" カテゴリーリストここまで -->
	</ul>
</li>
<!--/カテゴリーの記述-->

<!--アーカイブの記述-->
<li>
	<h2>アーカイブ</h2>
	<ul>
		<!-- b_block:id="archive" 月別アーカイブ出力-->
		<li><a href="#" title="" cms:id="archive_link"><!-- cms:id="archive_month" cms:format="F Y" -->February 2008<!-- /cms:id="archive_month" --></a> (<!-- cms:id="entry_count" -->00<!-- /cms:id="entry_count" -->)</li>
		<!-- /b_block:id="archive" -->
	</ul>
</li>
<!--/アーカイブの記述-->

<!--最近の記事の記述-->
<li>
	<h2>最近の記事</h2>
	<ul>
		<!-- b_block:id="recent_entry_list" -->
		<li><a href="#" title="" cms:id="entry_link"><!-- cms:id="title" -->最近の記事のタイトルが入ります<!-- /cms:id="title" -->(<!-- cms:id="create_date" cms:format="Y/m/d" -->03/01<!-- /cms:id="create_date" -->)</a></li>
		<!-- /b_block:id="recent_entry_list" -->
	</ul>
</li>
<!--/最近の記事の記述-->
<!-- /cms:module="common.blogparts" -->

太文字で書かれたcms:modue="common.blogparts"で囲います。

モジュールの開始タグにあるcms:pageではページの作成前に調べたブログページのIDを指定します。

設定は以上です。




現時点では

・カテゴリ一覧(b_block:id="category")

・月別アーカイブ一覧(b_block:id="archive")

・最近の記事一覧(b_block:id="recent_entry_list")

・最近のコメント一覧(b_block:id="recent_comment_list")

・最近のトラックバック一覧(b_block:id="recent_trackback_list")

が使用可能で、


プロフィール等はGravatar連携プラグインの使用を推奨するので、

今回のモジュール内には含めていません。

SOY CMSでGravatar連携プラグインを作成しました


今回対応分を含んだパッケージは下記のサイトからダウンロード出来ます。

https://saitodev.co/soycms/