先日、@tinybeans さんがポストされた、Craft CMS のテンプレートで diff を取得する方法。
Craft CMS で N 日以内のエントリーに NEW アイコンを付ける(日付の比較) | かたつむりくんのWWW
http://www.tinybeans.net/blog/2017/06/29-111012.html
とても便利ですよね。
必要に駆られて実際に試してみたところ、 postDateDiff.d
が30を超えると0に戻り、 postDateDiff.m
がカウントアップされることを知りました。そこで、単純にトータルの経過日数を取得する方法を調べてみました。
経過日数を取得する
日付フィールドの入力値を now
と比較する場合、あらかじめ Y-m-d
の書式に整形しておく必要があります。
{# エントリの投稿日を Y-m-d の書式で変数にセット #}
{% set entryPostDate = entry.postDate | date('Y-m-d') %}
{# 今日の日付と比較して経過日数を取得 #}
{% set diffDays = date( entryPostDate ).diff( now ).days %}
これで diffDays
に経過日数にあたる数値がセットされます。
あとは、分岐処理などで利用しましょう。
{# 60日を過ぎたら、エラーメッセージを出力 #}
{% if diffDays > 60 %}
<p>60日を過ぎたため、閲覧できません。</p>
{% endif %}
閲覧者がログインしているかどうかの判定も絡めると、一般ユーザーに時限公開するコンテンツなども比較的簡単に用意できそうです。
参考
今回も Craft CMS Stack Exchange に助けてもらいました。
datetime - How to calculate the number of days left? - Craft CMS Stack Exchange
https://craftcms.stackexchange.com/questions/9756/how-to-calculate-the-number-of-days-left