ページ 11

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

Posted: 2015年9月06日(日) 16:33
by monamaster
いつも、聞いてばかりで申し訳ありませんが、助力をお願いできればと思います。
Dittoを使って、新着情報を表示させようと思っているのですが…

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

その場合、「editedon」の有無を見れば判定できるかなと思ったのですが、どうすれば良いのか分かりません。
どのたか、分かる方がいればお教え頂ければと思います。

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

Posted: 2015年9月06日(日) 18:13
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は判定系モディファイアの基本的な組み合わせなので覚えておくと便利です。

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

Posted: 2015年9月07日(月) 08:24
by monamaster
yama様

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

コード: 全て選択

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

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

兎にも角にもこれでまた一つModxでのサイト作成が楽になりまし。ありがとうございます。

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

Posted: 2015年9月07日(月) 09:19
by yama

コード: 全て選択

[+createdon:math(?+120):gt([+editedon+]):then(掲載):else(更新)+]
このように書いてみてください

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

Posted: 2015年9月07日(月) 11:05
by monamaster
yama 様

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

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