Drupal node expire と auto expire 期限切れ時の広告の掲載取り下げ
私たちの Drupal 掲示板(分類広告板) の重要な機能の 1 つは、一定期間後に掲載を自動的に非公開にすることです。まず既製のモジュールを使い、後で Rules モジュールでこの機能を実装してみます。これには、Drupal 6 用に 2 つ、Drupal 7 用に 1 つのモジュールを見つけました:
- Node expire – Drupal 6
- Auto expire – Drupal 6 と 7
Drupal 6 の Node Expire
まず、Drupal 6 用の Node Expire を試しましょう:
http://drupal.org/project/node_expire
バージョン 2.06 を使います。
Node Expire モジュールをインストールして有効にします。

このモジュールは Drupal Rules モジュールも必要とします。

これで、コンテンツタイプごとに有効期限を管理できます。コンテンツタイプ「Ad(広告)」を編集しに行きましょう:

ここで、ノードが掲示板上で公開され続ける期間を指定できます。1 週間に設定しましょう。日付を定義するには次の式を使います:
- +1 hour、+2 hours、+n hours
- +1 day、+2 days、+n days
- +1 week、+2 weeks、+n weeks
- +1 month、+2 months、+n months
- +1 month 2 weeks 3 days 3 hours
「1 week」を使ってみましょう。

では、「Ad」コンテンツタイプのノードを作成しましょう:

有効期限が表示されます――現在の日付からちょうど 1 週間後です(今日は 2011-12-02 です)。
モジュールの readme.txt ファイルには、インポート可能な Rules ルールが含まれています。

readme.txt のコードをインポートウィンドウに貼り付けます:

これで、新しいルールが表示されます。管理 UI で編集して、コンテンツタイプでフィルタリングしたり、有効期限のロジックを変更したりできます。

期限切れの広告が非公開になるように、cron を設定するのを忘れないでください。
Drupal 7 の Auto Expire

Auto Expire モジュールをダウンロードしてインストールします。
このモジュールは依存関係を必要としないので、すぐに使えます。他のロールに有効期限設定を編集させたい場合は、権限を設定するだけです。

サイト設定に移動して Auto Expire を選びます:

Auto Expire の設定を見ていきましょう:

- Article – Drupal の基本コンテンツタイプ(他も選べます)。
- Expire – このコンテンツタイプの有効期限機能を有効にします。
- Days – コンテンツが公開され続ける日数。
- Warn – 有効期限の何日前に著者へ通知を送るか。
- Purge – 有効期限の何日後にノードを完全に削除するか。
注意:2011-12-07 時点で、Auto Expire はまだ開発中であり、本番向けではありません。
値を設定し、cron を構成すれば、広告は時間どおりに自動的に非公開になります。
次のレッスンでは、Rules モジュールを使って同様の機能を構築します。