3

イベントを管理するためのチャネルがあり、過去のイベントの表示などの一般的な操作を実装したいときに問題が発生します。現在および将来のイベントを確認したい場合は、次の方法で取得できると思います。

{exp:channel:entries channel = "events" show_future_entries = "yes" show_expired = "no" orderby = "{date}" sort = "asc" dynamic = "no" start_on = ""}

ここで、$entry_dateの形式はYYYY-MM-DDHH:MM(例:2011-08-02 11:00)です。

イベントは次の順序で表示されます。

2012-08-02 11:00
2012-09-02 11:00
2012-10-02 11:00
2012-11-02 11:00

ただし、2012-08-02 11:00のイベントを含めずに表示しています(EEが行う比較は> =ではなく>のようです)

また、過去のイベント(すでに期限切れのようにマークされています)を整理して、年ごとに表示します。

{exp:channel:entries channel = "events" show_future_entries = "no" show_expired = "yes" orderby = "{date}" sort = "desc" dynamic = "no" year = "" start_on = ""}

私の過去の出来事は次のとおりです。

2011-08-02 11:00
2011-09-02 11:00
2011-10-02 11:00
2011-11-02 11:00

および$entry_date= 2011-10-02 11:00

次のように表示されます。

2011-10-02 11:00
2011-09-02 11:00
2011-08-02 11:00

そしてそれを間違った順序で表示します。

実際、問題は次のとおりです。

  1. 現在および将来のイベントの場合、event=start_onパラメーターは結果に含まれません。
  2. 過去のイベントの場合、間違った順序でイベントが表示されます(最も古いイベントが最初に表示されます)。

私のコードに何か問題があるかどうか誰かに教えてもらえますか?

私はEE2.4.0を使用しており、これらの操作を実行しようとするテンプレートの入力でphpが有効になっています。

4

1 に答える 1

1

ここで私が見るいくつかのこと。

orderby="{date}"実際にはそうである必要がありますorderby="date"(または、date/entry_date がデフォルトの orderby であるため、完全に省略できます)。

$entry_date今後のイベントに関する問題は、変数を生成する方法にある可能性があります。それがどのように正確に作成されているか教えていただけますか?それが実際にあなたが思っているものであることを確認するために、どこかにそれをエコーし​​ ますか?EE とサーバーの間でローカリゼーションの違いが発生している可能性があります。で入力した日付とまったく同じ日付のエントリが実際にある場合はstart_on、それ が表示されるはずです。start_onトラブルシューティングのために、手動で日付を入力してみてください。

stop_before過去のイベントについては、 ではなくを使用する必要があります start_on。これらの 2 つのパラメーターは、パラメーターに注意を払う必要はありませんsort。これらは常に年表に基づいています。

于 2012-06-06T12:37:26.127 に答える