SOY CMSで一つのサイトで複数のブログページを作成した時、

他ページですべてのブログページ毎に設定されているカテゴリ一覧を出力したい

という要望がありました。


各々のブログページでb_block:id="category"がありますが、

これを他のページも使用できるようにすることとブログページ毎にカテゴリ一覧を出し分けたい

ということです。


これに対応するために、

cms:module="common.multi_blog_category"

というモジュールを追加しました。


使用方法は、



例えば、上記のようなページの構成があって、

標準ページのトップページにブログ1ページ(URI:blog)とブログ2ページ(URI:sub/blog)のカテゴリ一覧を出力したいとします。


ちなみに各ブログページのカテゴリ一覧というのは、



ブログページの赤い枠で囲ったようなブログパーツのことね。

https://saitodev.co/soycms/tags/?t=blog_top#block_id_category


使用方法はcms:module="common.multi_blog_category"で囲った箇所で、

b_bllck:id="category_on_{ブログページのURI}"と記述すると、使用できるようになります。


ブログ1ページのURIはblogであったため、

b_block:id="category_on_blog"になります。


ブログ2ページのURIはsub/blogなのですが、スラッシュはアンダースコアに変換する規則を設けましたので、

ブログ2ページの場合はb_block:id="category_on_sub_blog"になります。


これらの内容を踏まえた上で、

標準ページのトップページにcms:module="common.multi_blog_category"を設置してみます。

カテゴリ一覧を単純に並べるだけのコードは

<!-- cms:module="common.multi_blog_category" -->
<!-- b_block:id="category_on_blog" -->
<h2><a cms:id="category_link"><!-- cms:id="category_name" /--></a></h2>
<!-- /b_block:id="category_on_blog" -->

<!-- b_block:id="category_on_sub_blog" -->
<h2><a cms:id="category_link"><!-- cms:id="category_name" /--></a></h2>
<!-- /b_block:id="category_on_sub_blog" -->
<!-- /cms:module="common.multi_blog_category" -->

こんな感じになりました。


実際の表示は



わかりにくいけれども、各ブログページのカテゴリ一覧が出力され、

各々のブログページのカテゴリページに移動できるアンカータグも出力されています。


b_block:id="category_on_{ブログページのURI}"内では、

ブログページで利用できるb_block:id="category"と同じcms:idを利用することができます。

https://saitodev.co/soycms/tags/?t=blog_top#block_id_category


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

https://saitodev.co/soycms/


関連記事

SOY CMSで標準ページでも任意のブログページのb_blockを使用できるようにした