プロが教える店舗&オフィスのセキュリティ対策術

どなたかお助けください。

<やりたいこと>
月別アーカイブを作成日(公開日)ではなく、ブログ記事作成画面に追加した日付カスタムフィールドを基準とした月別アーカイブをつくりたい。

イベント情報のページを作っています。
イベント開催日を日付カスタムフィールド<$mt:cfeventday$>により入力(出力)するようにしています。当然記事作成時とイベントの開催日は異なります。
そこで、"月別イベント一覧"という月別アーカイブを作り、3月のイベント一覧、2月のイベント一覧という風に表示したいと思っています。

<やってみたこと>
記事のアーカイブマッピングをカスタムにて以下のようにしたところ
<$mt:cfeventday format="%Y"$>/<$mt:cfeventday format="%m"$>/<$mt:cfeventday format="%d"$><MTEntryID pad="1">.html

2009
├02
├100001.html(2月10日に行われるイベント記事)
├200002.html(2月20日に行われるイベント記事)
├03
├100003.html(3月10日に行われるイベント記事)
├200004.html(3月20日に行われるイベント記事)


という風に、ファイル保存形式は見た目上、理想通りイベント開催月(開催日)ごとに保存されました。
あとは通常通り、月別アーカイブテンプレートを作成し、出力するだけと思いやってみたのですが、実際に出力されるのは、いつも通りの記事作成日(公開日)を基準としたくくりになってしまいます。

上記例でいくと、記事作成を2月1日に4つ全て行ったとしたら、全て2月のイベントとして表示されます。

また月別アーカイブリストは
├2009年2月(4)
├2009年3月(0)

となります。
これらを日付カスタムフィールドで入力した日付を基準とした(実際の保存状態をもとに?)月別イベントアーカイブとして表示させたいのです。また、月別アーカイブリストも同様に
├2009年2月(2)
├2009年3月(2)
のように表示させたいです。

以下が月別アーカイブテンプレートの内容です。

<p>3月開催予定イベント一覧</p>
<mt:Entries sort_by="field:cfevntdaydasename" sort_order="ascend">
<$mt:cfeventday$><$mt:entrytitle$>
</mt:Entries>

以下が月別アーカイブリストのテンプレート内容です。

<mt:ArchiveList archive_type="Monthly">
<mt:ArchiveListHeader><span class="dir">▼月別イベント一覧</span><ul></mt:ArchiveListHeader>
<li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle$> (<$mt:ArchiveCount$>)</a></li>
<mt:ArchiveListFooter></ul></mt:ArchiveListFooter></mt:ArchiveList>

どうでしょうか。
何卒アドバイスよろしくお願いします。

A 回答 (2件)

MTのアーキテクチャでは、月別アーカイブでご希望の機能を実現することはできません。


ただし、新たに追加したフィールドを検索結果として利用することができるので、それで代替可能と思います。

そのテクニックは「MTOS活用テクニック―カスタムフィールドで本格的なCMS機能を実現! 」に掲載されています(私はこの本の著者ではありませんし、何の利害関係もありません)。

この回答への補足

elbavomさん、アドバイスありがとうございます。
あれから、いろいろとやってみたのですが、結局現在のMTでは出来ないのだろうなぁとあきらめていました。

なるほど!検索を使うのですね。
とりあえず、教えていただいた本買ってみます!

ありがとうございました。

補足日時:2009/03/21 11:04
    • good
    • 0

まったく違う案なんですが、月別イベント一覧をカテゴリ、サブカテゴリでやっては駄目なんでしょうか?



カテゴリで表示するなら今いっている事はまったく問題なしに実現可能です。

この回答への補足

miya_00さんアドバイスありがとうございます。

なるほど、そういう手もありますね。
ただ、残念なことに、カテゴリはイベントカテゴリ一覧というものを作っており、出来れば月別アーカイブで作りたいのです。

すみません。

補足日時:2009/03/09 10:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!