はい、みなさんこんばんは。
PowerCMSやMTでブログのカテゴリ一覧を表示する機会はどのCMSでもあります。
WordPressは簡単に出せますが、PowerCMSではどうやって出すのか分からなかったので
備忘録として残しておこうと思います。
これでさくっと実装できるんじゃないんですかね!
では早速…
PowerCMSで各カテゴリごとに年別アーカイブを表示する方法
まず前提として、私は各カテゴリ一覧のサイドバーに表示したかったので
デザイン > ウィジェット > ウィジェットテンプレートににsidebar_templateを作成して
ここに記述を行ってます。
みなさんはデザインに合わせて記述場所を変えてください。
【ブログ構造】
+日記(ブログ)
+カテゴリA
+子カテゴリA-1
+子カテゴリA-2
+カテゴリB
+子カテゴリB-1
+カテゴリC
+子カテゴリC-1
詳しい説明はソースの中に書いたので、理解しながら使ってみてください!
<div class="side"> <div class="category_list"> <h3>カテゴリ一覧</h3> <ul> <mt:TopLevelCategories> <li><a href="<mt:CategoryArchiveLink>"> <mt:CategoryLabel> //既に作成済みの親カテゴリが表示されます </a></li> </mt:TopLevelCategories> </ul> </div> <!-- ここまで共通表示のジャンル項目 --> <!-- ここからAカテゴリにのみ表示する項目 --> <mt:IfIsDescendant parent="日記"> //ブログ名を指定(日本語でOK) <div class="category_list"> <h3>子カテゴリ一覧</h3> <ul> <mt:SubCategories category="日記"> //ブログ名を指定(日本語でOK) <mt:If tag="CategoryCount" ne="0"> <li><a href="<mt:CategoryArchiveLink>">//既に作成済みのAカテゴリにぶら下がる子カテゴリが表示されます <mt:CategoryLabel> </a></li> </mt:If> </mt:SubCategories> </ul> </div> <!-- ここからAにのみ表示する月別アーカイブの項目 --> <div class="archive_post"> <h3>月別アーカイブ</h3> <mt:TopLevelParent> <mt:ArchiveList type="Yearly" lastn="1"> <mt:ArchiveList type="Category-Monthly"> <mt:ArchiveListHeader> //ここはループしないためheaderでかこんでおきます <ul> </mt:ArchiveListHeader> <li><a href="<mt:ArchiveLink>"> <mt:ArchiveDate format="%Y年%m月">//ここで0000年00月を取得・表示 (<mt:ArchiveCount>) //ArchiveCountで記事数を取得できます </a></li> <mt:ArchiveListFooter> //ここはループしないためfooterでかこんでおきます </ul> </mt:ArchiveListFooter> </mt:ArchiveList> </mt:ArchiveList> </mt:TopLevelParent> </div> <div class="archive_post"> <h3>年別アーカイブ</h3> <mt:DynamicMTML> <mt:SetVarBlock name="parent_cat_label"><mt:TopLevelParent><mt:CategoryLabel></mt:TopLevelParent></mt:SetVarBlock> //SetVarBlockは改行せずにかいてね!改行してしまうと動かなくなる可能性があります。 <mt:Categories><mt:IfCategory name="$parent_cat_label">//所属する親カテゴリの年別のみ取得するよ! <mt:ArchiveList type="Category-Yearly" lastn="9999" offset="1"> <mt:ArchiveListHeader><ul></mt:ArchiveListHeader>//ここはループしないためheaderでかこんでおきます <li><a href="<mt:ArchiveLink>"><mt:ArchiveDate format="%Y年">(<mt:ArchiveCount>)</a></li>//ここで0000年00月を取得・表示 <mt:ArchiveListFooter></ul></mt:ArchiveListFooter>//ここはループしないためfooterでかこんでおきます </mt:ArchiveList> </mt:IfCategory></mt:Categories> </mt:DynamicMTML> </div> </mt:IfIsDescendant> </div><!-- .side -->
これで完了です!
みなさんもぜひ行き詰まったらやってみてください~!
ちょうどハマっていたところなので助かりました!ありがとうございます。
拙いブログにコメントいただきありがとうございます!
役立てていただき感謝です(*’ω’*)