複数の ウェブサイト/ブログ を串刺しにした月別アーカイブを作る
公開日 : 2016-01-31 16:26:05
PowerCMS の Pager や PageBute を利用したページ分割は非常に効率が悪いので記事の件数が半端無く多いシチュエーションでは使わない方が絶対にいいです。
記事の更新頻度によって月別、年度別、年別等の time-basedなアーカイブにしたほうがいい。理由は、time-basedなアーカイブは更新対象のアーカイブのみが再構築されるためです。ページングって、1件増えたら、1件削除されたら全アーカイブが1件だけ「ずれて」全再構築されるのです。1件更新されても全アーカイブが再構築対象になります。
というようなことを口を酸っぱくして言ってんのに、結局破綻してしまったというケースに出くわしたので作成しました。
これ、カテゴリとかもニーズあるよね、MT7では標準機能になるよね、と振るだけ振っておいて。
- https://github.com/alfasado/mt-plugin-monthly-entries-publisher
- プラグインをインストール
- ウェブサイト(ブログでも良い)月別アーカイブを作成し、include_blogsで含めるブログを指定する
- テンプレートマップの再構築オプションは「手動」とする(「再構築しない」を選択しないこと:「再構築しない」だと書き出されない)
- MTEntriesの__first__ もしくは MTEntriesHeader 内に 「<!--EntriesCount:<mt:EntriesCount>-->」記述を入れる(ファイル出力時にはこの値は削除されます)
- mt-config.cgi に MonthlyEntriesPublisherTemplateIds テンプレートのIDカンマ区切りを記載
- mt-config.cgi に MonthlyEntriesPublisherBlogIds として、記事保存時にキューに入れる対象のブログIDをカンマ区切りで記載
再構築はキューで実行されます。ダイナミックパブリッシングには対応していません。