RSSとsitemap.xmlの日付をリソースの公開日にするには?  【解決済み】

質問全般・改善要望
返信する
nakahi
メンバー
メンバー
記事: 131
登録日時: 2010年8月04日(水) 20:23

RSSとsitemap.xmlの日付をリソースの公開日にするには?  【解決済み】

投稿記事 by nakahi »

-----
ご利用のサーバ:
MODXのバージョン:1.0.6J-r8
PHPのバージョン:5.3
MySQLのバージョン:5.0.95
ブラウザ:FF16.02
-----
いつもお世話になっています。

RSSを下記のリソースで出力しています。テンプレートは(blank)

[!Ditto? &format=`rss` &parents=`6` &depth=`3` &display=`10` &showInMenuOnly=`1` &hideFolders=`1` &sortBy=`pub_date`!]

リソース作成時に「公開開始日時」を指定して予約投稿しても、公開された時点で日時がリソース作成日時になっています。

作成日時ではなくて、公開された日時でRSSが表示されるようにするには、何処を変えれば良いのでしょうか。


また、sitemap.xmlも同じように作成日時で表示されますが、これも公開日時で表示するのはどのようにすればよろしいのでしょうか。sitemap.xmlの場合は

[[Ditto? &parents=`0` &showInMenuOnly=`1` &depth=`10` &display=`all` &sortBy=`menuindex` &sortDir=`ASC` &format=`html` &tpl=`SitemapTpl` &language=`english`]]

で、SitemapTplの中味は

<url>
<loc>[+url+]</loc>
<lastmod>[+editedon:date=`%Y-%m-%dT%H:%M:%S+09:00`+]</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>

このようにしています。

いつも冴えない質問のようで申し訳ございませんが宜しくお願い致します。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by kazuike »

確認したわけではないですが、
通常、
Dittoは「dateSource」パラメータで、
日時に何を使うか指定するようになっていたと思います。
公開開始日時を使いたいのであれば、
「&dateSource=`pub_date`」
を追加すれば良いような気がします。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
nakahi
メンバー
メンバー
記事: 131
登録日時: 2010年8月04日(水) 20:23

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by nakahi »

kazuike さんが書きました:公開開始日時を使いたいのであれば、
「&dateSource=`pub_date`」
を追加すれば良いような気がします。
kazuikeさん、有難うございます。

日付の予約投稿は明日以降でないと確認できないので、時間だけ先の時間に設定して
予約投稿してみました。

「&dateSource=`pub_date`」を追加するだけで、RSSの時間が予約した時間で表示されました。
有難うございました。

これでRSSは出来ましたが、sitemap.xmlはどのようにすれば良いのでしょうか。
おんぶに抱っこで申し訳ありませんが、お分かりなら宜しくお願い致します。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by kazuike »

これも、確認したわけではありませんが、
nakahi さんが書きました: SitemapTplの中味は

<url>
<loc>[+url+]</loc>
<lastmod>[+editedon:date=`%Y-%m-%dT%H:%M:%S+09:00`+]</lastmod>
<changefreq>weekly</changefreq>
<priority>0.5</priority>
</url>
「editedon」は更新日時(更新していなければ作成日時)ですので、
「editedon」を直接「pub_date」に変えるか、
もしくは、
「editedon」を「date」に変えて、パラメータ「&dateSource=`pub_date`」を追加するか、
どちらでも良いように思います。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
nakahi
メンバー
メンバー
記事: 131
登録日時: 2010年8月04日(水) 20:23

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by nakahi »

kazuikeさん、お世話になっています。
kazuike さんが書きました: 「editedon」は更新日時(更新していなければ作成日時)ですので、
「editedon」を直接「pub_date」に変えるか、
上記の書き換えで行うと、
<lastmod>1970-01-01T09:00:00+09:00</lastmod>
と、よく分からない日付になってしまいます。
kazuike さんが書きました: 「editedon」を「date」に変えて、パラメータ「&dateSource=`pub_date`」を追加するか、
上記で行うと
<lastmod>31-10月-12 12:16</lastmod>
と、大分近づいてはいますが、かなり分かりにくい表現になってしまいます。

妙に細かすぎる部分のような気がしますので、無理やりそこまで訂正しなくても良いような気もします。
RSSが解決できましたので、xmlの方は無理に調べていただかなくても、何かの時にパッとお分かりになった時で結構ですので教えて頂ければと存じます。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by kazuike »

nakahi さんが書きました:
kazuike さんが書きました:「editedon」を直接「pub_date」に変えるか、
上記の書き換えで行うと、
<lastmod>1970-01-01T09:00:00+09:00</lastmod>
と、よく分からない日付になってしまいます。
もしかして、記事に公開開始日時が入力されていないということではないでしょうか?
公開開始日時が入力されていない記事は、「0」つまり、1970年1月1日の扱いになります。

もし、公開開始日時が入っていないのだとすると、そのまま「pub_date」は使えませんね。
これも、やったことないのですが、
最近のMODXなら、「pub_date」の代わりに「publishedon」が使えるかもしれません。
これなら、公開されている記事なら全て値が入っていると思いますので、
一度試してみる価値はあるかもしれません。
ただし、「publishedon」は、厳密には公開開始日時ではなく、
公開開始日時を過ぎて最初に閲覧された日時になるような気がします。
当該記事が閲覧された日時か、
もしくは、サイト(MODX)のどれかのページが閲覧された日時のどちらかだったような…

その他、
公開開始日時が入力されていない場合は更新日時を使う等、
条件分岐をする必要があるのでしたら、Ditto内蔵のPHxを使って、
[+pub_date:is=`0`:then=`[+editedon:date=`%Y-%m-%dT%H:%M:%S+09:00`+]`:else=`[+pub_date:date=`%Y-%m-%dT%H:%M:%S+09:00`+]`+]
のような感じでいけるかもしれません。(これもやったことない気がしますが)
nakahi さんが書きました:
kazuike さんが書きました: 「editedon」を「date」に変えて、パラメータ「&dateSource=`pub_date`」を追加するか、
上記で行うと
<lastmod>31-10月-12 12:16</lastmod>
念のため確認ですが、この箇所は

コード: 全て選択

[+date:date=`%Y-%m-%dT%H:%M:%S+09:00`+]
となってますよね?
#Ditto内蔵のPHxは[+date+]に対応してないのかな?
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by yama »

kazuike さんが書きました:ただし、「publishedon」は、厳密には公開開始日時ではなく、
公開開始日時を過ぎて最初に閲覧された日時になるような気がします。
pub_dateがセットされてない時はそうだと思います。基本的にはpub_dateの値に合わせるようになってたような・・
なのでpublishedonを使うのが無難かな?と思います
nakahi
メンバー
メンバー
記事: 131
登録日時: 2010年8月04日(水) 20:23

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by nakahi »

kazuikeさん有難うございます。
kazuike さんが書きました: もしかして、記事に公開開始日時が入力されていないということではないでしょうか?
公開開始日時が入力されていない記事は、「0」つまり、1970年1月1日の扱いになります。
はい、そうです。
予定投稿では公開開始日時を入力していますが、普通の投稿には日時は入力していません。
それで、二種類の投稿で日時が混在してしまいます。
kazuike さんが書きました: 最近のMODXなら、「pub_date」の代わりに「publishedon」が使えるかもしれません。
これなら、公開されている記事なら全て値が入っていると思いますので、
一度試してみる価値はあるかもしれません。
ただし、「publishedon」は、厳密には公開開始日時ではなく、
公開開始日時を過ぎて最初に閲覧された日時になるような気がします。
当該記事が閲覧された日時か、
もしくは、サイト(MODX)のどれかのページが閲覧された日時のどちらかだったような…
kazuikeさん有難うございました。解決いたしました!
「publishedon」を用いて、
<lastmod>[+publishedon:date=`%Y-%m-%dT%H:%M:%S+09:00`+]</lastmod>
とすると、見事にRSSと同じ時間で表示されます。
ですから、多分、結果的に公開開始日時になるのではないでしょうか・・・・おそらく・・・・
(おおらかないい加減な性格ですみません :oops:
kazuike さんが書きました: 念のため確認ですが、この箇所は

コード: 全て選択

[+date:date=`%Y-%m-%dT%H:%M:%S+09:00`+]
となってますよね?
#Ditto内蔵のPHxは[+date+]に対応してないのかな?
すみません、違っていました・・・・・
どのように書いたのか忘れてしまったのですが、上記のようではなかったことは確かです。
但し、上記のようにすると、公開開始日時があるものまで、
<lastmod>1970-01-01T09:00:30+09:00</lastmod>と表示されます。

大変お世話になり有難うございました。
これでRSSもsitemap.xmlも解決して頂きました。本当に申し訳ございませんでした。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by yama »

nakahi さんが書きました:ですから、多分、結果的に公開開始日時になるのではないでしょうか・・・・おそらく・・・・
このへん、オプションで選べるようになっているとよいかもしれませんね。普通のユーザの感覚だと、公開設定になっているページなら最初の編集日時イコール公開日時になっていると思う人もいそうですし。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by kazuike »

yama さんが書きました:
kazuike さんが書きました:ただし、「publishedon」は、厳密には公開開始日時ではなく、
公開開始日時を過ぎて最初に閲覧された日時になるような気がします。
pub_dateがセットされてない時はそうだと思います。基本的にはpub_dateの値に合わせるようになってたような・・
そうなんですね。 :)
#長いことMODXやってると、記憶がなかなかリセットされないし、だんだん曖昧になって… :oops:
yama さんが書きました:
nakahi さんが書きました:ですから、多分、結果的に公開開始日時になるのではないでしょうか・・・・おそらく・・・・
このへん、オプションで選べるようになっているとよいかもしれませんね。普通のユーザの感覚だと、公開設定になっているページなら最初の編集日時イコール公開日時になっていると思う人もいそうですし。
たしかに、最初に閲覧された日時というのはシステムのログとしては役に立つかもしれませんが、
利用者側としては、createdonと同じになるのが、普通の感覚のような気がします。

ちょっと話がそれますが、
公開終了日時<公開開始日時(一定期間だけ非表示)は、
設定できないようになっているようですが、
これは仕様でしょうか?
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by yama »

kazuike さんが書きました: たしかに、最初に閲覧された日時というのはシステムのログとしては役に立つかもしれませんが、
利用者側としては、createdonと同じになるのが、普通の感覚のような気がします。

ちょっと話がそれますが、
公開終了日時<公開開始日時(一定期間だけ非表示)は、
設定できないようになっているようですが、
これは仕様でしょうか?
あ、そうですね。最初の編集日時ってことはcreatedon・・
一定期間だけの非表示はそういえばできないですね。$modx->checkPublishStatus()のところでこの制御を行なってますが、工夫すればできるかも?今度機会があったら試してみます
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by kazuike »

yama さんが書きました:
kazuike さんが書きました: 公開終了日時<公開開始日時(一定期間だけ非表示)は、
設定できないようになっているようですが、
これは仕様でしょうか?
一定期間だけの非表示はそういえばできないですね。$modx->checkPublishStatus()のところでこの制御を行なってますが、工夫すればできるかも?今度機会があったら試してみます
私自身特にこういうニーズがあるということではないのですが、
以前から、このあたりの仕様で苦い思い出が色々あり、
(公開されるはずが非公開になって…色々調べて結果的には日時の誤入力だった等)
入力した内容で予想される動作と実際の動作が違っているということがちょっと残念なので。

もし、こういうニーズがないようでしたら、
「公開終了日時<公開開始日時」をリソース編集画面でエラーにする等でも良いかもしれませんが、
問題なくこれができるのでしたら、できる方が良いかもしれません。
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by yama »

kazuike さんが書きました:たしかに、最初に閲覧された日時というのはシステムのログとしては役に立つかもしれませんが、
利用者側としては、createdonと同じになるのが、普通の感覚のような気がします。
こちら確認してみましたが、すでにそのように改善済みでした。publishedonは、createdonかpub_dateどちらかの値になります。非公開に戻すとゼロにリセットされます。
kazuike
メンバー
メンバー
記事: 507
登録日時: 2009年8月12日(水) 12:53

Re: RSSとsitemap.xmlの日付をリソースの公開日にするには?

投稿記事 by kazuike »

yama さんが書きました:
kazuike さんが書きました:たしかに、最初に閲覧された日時というのはシステムのログとしては役に立つかもしれませんが、
利用者側としては、createdonと同じになるのが、普通の感覚のような気がします。
こちら確認してみましたが、すでにそのように改善済みでした。publishedonは、createdonかpub_dateどちらかの値になります。非公開に戻すとゼロにリセットされます。
そうなんですね。
たまには色々試してみないといけませんね…

ということで、
とりあえず、リソース編集画面での更新についてpublishedonの値を調べてみました。
・新規作成時に公開:createdonと同じ値
・公開のままで更新:以前の値を保持
・非公開で更新:0
・非公開→公開で更新:editedonと同じ値
・公開のままで更新:以前の値を保持
ということで、期待通りの自然な値が入っていました。 :)
▼ウェブ屋のCMS→modxヒキダス流(備忘録)
http://d.hatena.ne.jp/hikidas_ikeda/
返信する