ニュースやイベント情報など、日々更新するコンテンツを日付ベースのURLにすることがあります。
Movable Typeの詳細ページで日付をファイル名にした際に少し困ることがあったので、その内容と対応方法についてまとめてみます。
設定方法
今回はコンテンツタイプでニュースページを作成して、詳細ページのURLに日付を設定する想定で試してみます。
アーカイブマッピングのパスをカスタムにして、以下のようにします。
news/%y%m%d.html
これで日付をファイル名にすることができたのですが、同じ日に2件記事を投稿した場合、前の記事を後の記事が上書きしてしまいます。
対応方法としては記事を投稿する際に「出力ファイル名 」に日付を入力して、アーカイブマッピングのパスを以下のように変更する方法があります。
news/<mt:ArchiveFile>
こうすることでYYYYMMDD-2のように重複する場合に回避することができますが、出力ファイル名を毎度入力する必要があります。
最終的な対応方法としては、アーカイブマッピングのパスの設定内で「出力ファイル名 」が設定されているかどうかをみて出し分けるようにしました。
以下の内容をアーカイブマッピングのパスに設定します。
<mt:If tag="ArchiveFile" like="^(\d|-)+.html"> news/<mt:ArchiveFile> <mt:Else> news/%y%m%d.html </mt:If>
出力ファイル名は入力しなかった場合半角英数字でランダムの文字列が入るので、正規表現を使って出力ファイル名が数値+ハイフンのみかどうかを判別するようにしました。
数値+ハイフンのみの場合は設定しているとみなして出力ファイル名を使用、英字も混じっている場合は日付を使ったURLになるようになっています。
【参考サイト】
- MTIf – テンプレートタグリファレンス | CMSプラットフォーム Movable Type ドキュメントサイト
- perlreref – Perl の正規表現のリファレンス – perldoc.jp
コメントが承認されるまで時間がかかります。