May 30, 2008

FiscalYearlyArchives Plugin 0.10公開

ちょっと前に作ったきりアナウンスを忘れていましたが、FiscalYearlyArchivesをアップデートして年度別アーカイブの他に、年度別カテゴリーアーカイブ、年度別ユーザアーカイブも生成できるようにしました。

FiscalYearlyArchives - ogawa - Google Code

新しいバージョンは、MTOS/MT 4.2以降でしか動作しません。動作確認は、MTOS 4.15のベータ版でしか行っていません。

MT 4.0から、ユーザがプラグインを使って新しい種類のアーカイブタイプを追加できるようになっていましたが、4.15以降ではちょっとインタフェースが拡張されています。

以前は以下のようにレジストリに特定のデータ構造を格納する必要があったのですが、

sub init_registry {
  my $plugin = shift;
  $plugin->registry({
    'archive_types' => {
      'FiscalYearly' =>
        ArchiveType(
          name                      => 'FiscalYearly',
          archive_label             => \&archive_label,
          archive_file              => \&archive_file,
          archive_title             => \&archive_title,
          date_range                => \&date_range,
          archive_group_iter        => \&archive_group_iter,
          archive_group_entries     => \&archive_group_entries,
          archive_entries_count     => \&archive_entries_count,
          default_archive_templates => [
            ArchiveFileTemplate(
              label    => 'fiscal/yyyy/index.html',
              template => 'fiscal/<$MTArchiveFiscalYear$>/%i',
              default  => 1
            ),
          ],
          dynamic_template          => 'fiscal/<$MTArchiveFiscalYear$>',
          dynamic_support           => 1,
          date_based                => 1,
          template_params           => {
            (snipped)
          },
        ),
    }
  });
}

4.15以降では大幅に簡略化され、MT::ArchiveTypeのサブクラス(以下の例ではFiscalYearlyArchives::FiscalYearly)を実装しておきさえすれば、以下のような簡単な手続きでシステムに新しいアーカイブタイプを追加できます。もちろん前のインタフェースも依然使えるようになっています。

sub init_registry {
  my $plugin = shift;
  $plugin->registry({
    archive_types => {
      'FiscalYearly' => 'FiscalYearlyArchives::FiscalYearly',
    },
  });
}

MT::ArchiveTypeのサブクラスの実装例はFiscalYearly.pm。MT::ArchiveTypeのサブクラスのMT::ArchiveType::Dateを継承し、いくつか必要なインタフェースを実装しているだけです。他のアーカイブタイプが必要なら同様にMT::ArchiveTypeのサブクラスを実装してレジストリに追加すればいいわけです。

似たような拡張を必要とされている方は、このプラグインのソースコードがきっと役に立つと思います。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com