新着情報をDittoで表示する場合の「新着」と「更新」の書き分け方は?  【解決済み】

質問全般・改善要望
閉鎖
monamaster
メンバー
メンバー
記事: 13
登録日時: 2010年9月10日(金) 15:34

新着情報をDittoで表示する場合の「新着」と「更新」の書き分け方は?

投稿記事 by monamaster »

いつも、聞いてばかりで申し訳ありませんが、助力をお願いできればと思います。
Dittoを使って、新着情報を表示させようと思っているのですが…

・新規作成したコンテンツには「新着」
・更新されたコンテンツには「更新」
を付けたいと思っています。

その場合、「editedon」の有無を見れば判定できるかなと思ったのですが、どうすれば良いのか分かりません。
どのたか、分かる方がいればお教え頂ければと思います。
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: 新着情報をDittoで表示する場合の「新着」と「更新」の書き分け方は?

投稿記事 by yama »

http://150906180039-12117.evo.demo.modx.jp/news/
http://150906180039-12117.evo.demo.modx.jp/manager/

コード: 全て選択

[+publishedon:is([+editedon+]):then(新着):else(更新)+]
このように記述します。
リソース変数の基本的な日時情報はcreatedon・publishedon・editedonの3つがあり(他にもpub_dateなど複数ありますが)、リソースを作成・公開した時点ではeditedonと同じ値でpublishedonがセットされます。更新するたびにeditedonの値は新しくなりますが、リソースをいったん非公開に戻すとpublishedonをリセットできます。
is:then:elseは判定系モディファイアの基本的な組み合わせなので覚えておくと便利です。
monamaster
メンバー
メンバー
記事: 13
登録日時: 2010年9月10日(金) 15:34

Re: 新着情報をDittoで表示する場合の「新着」と「更新」の書き分け方は?

投稿記事 by monamaster »

yama様

ありがとうございます。無事、表示することができました。
ただ、これだと「公開日時」が指定されていると新しく作ったものでも「更新」になってしまうので、

コード: 全て選択

[+createdon:is([+editedon+]):then(新着):else(更新)+]
に変えてみました。これで問題ないようです。

ところで、一定範囲の時間(例えば12時間)以内の場合は「新着」それを超えると「更新」にする方法とかもあるのでしょうか?
例えば、1文字間違えていたので、2分後に修正した場合、「ほぼ」新着なのに、更新になってしまうので、一定時間を経過しないと「更新」にならないとかの処理がある方が便利な気がします。
もし、そのような方法があるのなら、合わせてお教え頂ければと思います。

兎にも角にもこれでまた一つModxでのサイト作成が楽になりまし。ありがとうございます。
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: 新着情報をDittoで表示する場合の「新着」と「更新」の書き分け方は?

投稿記事 by yama »

コード: 全て選択

[+createdon:math(?+120):gt([+editedon+]):then(掲載):else(更新)+]
このように書いてみてください
monamaster
メンバー
メンバー
記事: 13
登録日時: 2010年9月10日(金) 15:34

Re: 新着情報をDittoで表示する場合の「新着」と「更新」の書き分け方は?  【解決済み】

投稿記事 by monamaster »

yama 様

ありがとうございます!!!
問題なく動いています。
素晴らし!!!!

本当に有難うございました。
閉鎖