web-dev-qa-db-ja.com

日付フィールド値に作用する

日付(UNIXタイムスタンプ)フィールドが実装されたCTがあります。イベントの開始日を表します。

簡単な質問です。この値を現在のdate()と比較する方法はありますか。また、現在のdate()と一致(等しい)とき、アクションをトリガーしますか?それは等しくなければなりません、他の方法はアクションを何度もトリガーします。

これまでは、ロジック全体を実装するために hook_node_view を試しましたが、運はありませんでした。

このフックは、誰かがやりたいことを正確に提供しません。

Cronジョブは適切ではなく、cronは毎分または毎秒実行されていません。

私が試した他のことは Rules でしたが、物事は複雑になり、考えるのが最善の方法です!?助言がありますか?

2
mchar

手順1-VBOとルールを使用する

[〜#〜] vbo [〜#〜] 有効なビューの結果を Rulesを介して処理できますが、ルールは2つのルールを実行します行動:

  • 処理するノード(日付フィールドが基準に一致するノード)のVBOリストをロードします。
  • ループを追加して、ビューの結果に含まれるノードごとに、ルールアクションを実行します。

ルールアクションで必要になる可能性のあるノード関連データについては、それらがビュー結果に含まれていることを確認してください。

詳細については、チュートリアル「 VBOが有効なビューの結果をルールで処理する方法 」を参照してください。

ステップ2-ルールをトリガーする

" Rules once per day "モジュールを使用して、実際にルールをトリガーします。これがどのように機能するかです(モジュール所有者からの 課題2495775のコメント に従って):

  • このモジュールの管理設定ページで、トリガー時間を指定します。
  • ルールトリガーは、その時間の開始後にcronタスクが最初に実行されたときに実行されます。実際の実行時間は、cronタスクのタイミングによって異なります。

だからこれはこれを理解/読む別の方法です:

  • 「イベント」は、cronジョブが実行されたときにのみトリガーされます。
  • そして、そのイベントは1日に1回だけトリガーされます。つまり、「トリガー時間が経過すると、次にcronが実行されます」。

これで、ステップ1のルールを適用して...1日1回を実行できます。日。

1
Pierre.Vriens

現在の日付をフィールドと比較する方法はいくつかあります。たとえば、ビューにはそれを行うフィルターを含めることができます。正しいアプローチは、実行しようとしているアクションのタイプによって異なります。この領域を拡張できる場合は、何をする必要があるか、またはどのフックを使用する必要があるかを理解するのに役立ちます。たとえば、その日にノードにコンテンツを追加する場合は、hook_preprocess_node()でテストを実行できます。

0
sareed