soycms_blog_side

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


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

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


今回はこの問題を解決すべく、<!-- cms:module="common.blogparts" cms:blog="*" -->で囲った箇所では、指定のブログページのb_blockが使用できるというモジュールを追加しました。




詳しく説明すると、あるブログページ用の検索結果ページを作成する際、検索結果ページは新たに標準ページで作成しなければならない。

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


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

以前は全ページ共通のモジュールの作成方法を紹介していたが、これだとPHPの記述があまりにも多すぎて躊躇する方もいました。


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


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


blogparts_blog_id_0


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


blogparts_blog_id


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


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

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

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


soycms_blog_side


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

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


<!-- cms:module="common.blogparts" cms:blog="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")

・b_block:id="archive_every_year"(2020年1月28日追加)

が使用可能で、プロフィール等はGravatar連携プラグインの使用を推奨するので、今回のモジュール内には含めていません。

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


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

https://saitodev.co/soycms/