ページ 11

いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月14日(金) 10:36
by modxfan
-----
ご利用のサーバ:
サイト1・・・CPI Z2プラン
サイト2・・・CPI ZZプラン
MODX Evoのバージョン:
サイト1・・・ver 1.0.5J-r3からver 1.0.6J-r8へのアップグレードした
サイト2・・・ver 1.0.5J-r7
PHPのバージョン:PHP 5.2.8
MySQLのバージョン:MySQL5.0.45
ブラウザ:IE8、9、Firefox12、chrome
-----

この問題は以前からずっとであり、非常に困っているのですがいまだに解決できておりません。

サイトを運営していたら、「最新ニュース」にいったん投稿したニュース記事を、あとになって
変更が出たから文面を変えたいとか、誤字があった、とかで編集することがよくあります。
しかし、MODXでは、内容を変更したら、勝手にRSSページの方の日時が編集したそのときの日時に変わってしまいますが、
どちらでも選択できるようにするにはどうしたらいいでしょうか。

「これは誤字脱字だから、こんなことで投稿した日付は変えない。変えない設定を選択しよう」
とか、
「これは内容自体が少々変わったので、投稿日付を変えるべきだ。変える設定を選択しよう」
とか、
「これはもうかなりの内容変更なので、新規リソース作成で"訂正"などと名打って、先日のニュースに訂正がありますという方法にしよう。
 だからRSSフィードも別に出てくれて構わない」

といったことが選択できないと、コーポレートサイトのニュース運用の基礎的なことも出来ないので、解決を望んでおります。
本来はニュースをカテゴリ分け(事業別の名称分けや全社的なものなど)してアイコン分けして投稿できるようになっていなければならないのも
ありますが、まずは基礎部分をどうにかせねばいけません。

よろしくお願いいたします。

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月14日(金) 11:48
by yama

コード: 全て選択

[[Ditto? &parents=`62` &format=`rss` &display=`20` &total=`20` &removeChunk=`Comments` &dateSource=`editedon`]]

スニペットコールは上記のように書かれているということで合ってますでしょうか?
&dateSourceパラメータの値がeditedonになっているため、edit(編集)するたびにRSSフィードの構成も変わります。

コード: 全て選択

[[Ditto? &parents=`62` &format=`rss`]]

長い間やりとりしているのでなんとなく事情が分かってきましたが(たぶんデモデータをベースにしてますよね)、今回のケースだと上記だけでよさそうに思います。

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月14日(金) 13:15
by sama55
Phizeさんのプラグインがニーズを満たしそうな気がします。
http://phize.net/portfolio/modx/phieditedon.html
※運用に携わる人の挙動やニーズに応じて最適なデフォルト値(auto/manual/disable)を選ぶことがポイントです。

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月14日(金) 13:38
by modxfan
yama さんが書きました:

コード: 全て選択

[[Ditto? &parents=`62` &format=`rss` &display=`20` &total=`20` &removeChunk=`Comments` &dateSource=`editedon`]]

スニペットコールは上記のように書かれているということで合ってますでしょうか?
&dateSourceパラメータの値がeditedonになっているため、edit(編集)するたびにRSSフィードの構成も変わります。


現在以下となっています。
[[Ditto? &parents=`62` &format=`rss` &display=`30` &dateSource=`editedon` &orderBy=`editedon ASC`]]

これを下の
[[Ditto? &parents=`62` &format=`rss`]]
に変えます。

yama さんが書きました:

コード: 全て選択

[[Ditto? &parents=`62` &format=`rss`]]

長い間やりとりしているのでなんとなく事情が分かってきましたが(たぶんデモデータをベースにしてますよね)、今回のケースだと上記だけでよさそうに思います。


変えた上で記事のlongtitleに!を一文字追加して更新してみると、RSSの日付は変わりませんでした!

しかし、この頃のバージョンへアップデートしていないサイト(| 1.0.5J-r7 )の方で同じことをしたら、
RSSページに一件も表示されなくなりました。。
ご提供のシンプルソースは今回実験しているサイトに限る??

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月14日(金) 14:40
by modxfan
sama55 さんが書きました:Phizeさんのプラグインがニーズを満たしそうな気がします。
http://phize.net/portfolio/modx/phieditedon.html
※運用に携わる人の挙動やニーズに応じて最適なデフォルト値(auto/manual/disable)を選ぶことがポイントです。


sama55様ありがとうございます。
まさにコレ、という感じのプラグインですね。
yama様の方のアドバイスが途中なのでそれのきりがよくなったら、このプラグインとどちらが良いかを比較検討したいと思っております

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月14日(金) 16:49
by modxfan
RSSの表示順がブラウザによっては昇順になってしまう投稿から回答を得た関係で、
viewtopic.php?f=7&t=1031
こちらの方も直ったようなので記載いたします。

RSSにおいて、以下のDittoソースを張り付けると
[[Ditto? &parents=`16` &format=`rss` &orderBy=`createdon DESC`]]

直りました。
いったん投稿したニュース記事について、編集・保存しても、RSSの日付が変わらなくなりました。

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月14日(金) 17:36
by modxfan
sama55 さんが書きました:Phizeさんのプラグインがニーズを満たしそうな気がします。
http://phize.net/portfolio/modx/phieditedon.html
※運用に携わる人の挙動やニーズに応じて最適なデフォルト値(auto/manual/disable)を選ぶことがポイントです。


やってみましたがうまくいかない状態です。

まず、現在RSSのDittoがcreatedonになっていたので、本件テストのために一時的にeditedonに変更しました。
そうしないといくらプラグインで日付を操作しても、つねに投稿した最初の日時が出ると思ったので。

その上で、既に投稿している最新の投稿分を編集させると、
今まではなかった本件プラグインのリストメニューが出現していました。ここまでは良かったのですが、
Manualにして今日の日付に設定して保存しても、何ら変わらずにCreatした日時が出るだけです。
トップのニュース欄の日付も、RSSの日付もどちらも。


peUpdateという名前いのテンプレート変数の発行時に、

・「デフォルト値」には-1等と入力する。

とあるが、デフォルト値という欄が見当たらなかったので、「既定値」という欄があったのでそこに入れた。


また、「peEditedon」というテンプレ変数を作成時に、
入力タイプにDateがなかったので、DateTimeを選択した。

ここらが設定通りだったのかわからないところです。

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月15日(土) 10:47
by sama55
【予備知識】
ツール -> グローバル設定 -> 管理画面の設定 -> リソースツリークリック時の動作
上記の設定を「自動(推奨)」から「リソースの詳細情報」にすると、管理画面のリソースツリーでページをクリックした時の挙動が変わり、「情報」タブで更新日付を管理画面で目視確認できるようになります。編集する時は右上の「編集」ボタンをクリックしてから編集します。ただ、ページの編集直後は「情報」タブの内容(更新日付)がおかしくなるようで、もう一度リソースツリーでクリックしてやると、最新の更新日付が確認できるようです(MODx本体のバグかphiEditedonとの相性問題かは不明)。

modxfan さんが書きました:まず、現在RSSのDittoがcreatedonになっていたので、本件テストのために一時的にeditedonに変更しました。そうしないといくらプラグインで日付を操作しても、つねに投稿した最初の日時が出ると思ったので。

OKです。

modxfan さんが書きました:その上で、既に投稿している最新の投稿分を編集させると、今まではなかった本件プラグインのリストメニューが出現していました。ここまでは良かったのですが、Manualにして今日の日付に設定して保存しても、何ら変わらずにCreatした日時が出るだけです。トップのニュース欄の日付も、RSSの日付もどちらも。

そうですか・・・頭で考えると大切なことを見落とすので、自分のローカル環境でDittoとphiEditedonプラグインの挙動を検証してみました。
結果は正しく動きました。
①1.0.6J-r8をクリーンインストール(アップグレードではない
②PhiEditedonプラグインを新規追加(規定値はmodxfanさんと同じ-1に設定)
③1.0.6J-r8のサンプルコンテンツに含まれているRSSフィードページの本文(コンテンツ)を以下に変更

コード: 全て選択

[[Ditto?
   &parents=`8`
   &format=`rss`
   &display=`10`
   &dateSource=`editedon`
   &orderBy=`editedon DESC`
]]

 ・parents(2 -> 8): サンプルデータの「MODXの主な特長」というフォルダの下を表示するように変更
 ・dateSource引数追加(Dittoがeditedonを見るように指定)
 ・orderBy引数追加(kazuikeさんのこちらの不具合報告に従い、更新日付の降順を明示的に指定)

④RSSフィードページをプレビューして現在の並び順を事前に確認
⑤「MODXの主な特長」フォルダ下の④で2番目に表示されてるサブページを開き、タイトルを変えてそのまま保存
  -> 変更したページが先頭に表示された(phiEditedonの初期値が自動更新だから更新日付が変更された -> 正常な動き
⑥「MODXの主な特長」フォルダ下の④で3番目に表示されてるサブページを開き、タイトルを変え、peUpdate をmanualに変更してから保存
  -> 変更したページが先頭に表示された(phiEditedonをmanualにすることで現在の日時が更新日付に設定された -> 正常な動き

modxfanさんのお返事を見る限り、これといって間違った操作をしてるようには見えないので、createdonが表示される原因が分かりません。アップグレードした環境を作らないと現象が再現しないのかな・・・?現状では、modxfanさんが私と同じ手順で一連の操作を行うことで、解決の糸口を自ら見つけてもらうしか手が無い状態です。

modxfan さんが書きました:peUpdateという名前いのテンプレート変数の発行時に、「デフォルト値には-1等と入力する」とあるが、デフォルト値という欄が見当たらなかったので、「既定値」という欄があったのでそこに入れた。

OKです。

modxfan さんが書きました:また、「peEditedon」というテンプレ変数を作成時に、入力タイプにDateがなかったので、DateTimeを選択した。

OKです。

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月17日(月) 11:54
by modxfan
yama様が別のスレッドで記載いただいておりましたが、
こちらに転載した方がいいと思い、記載致します。

viewtopic.php?f=7&t=1031&p=5814#p5814
のURLの、

> viewtopic.php?f=7&t=1033
> 上記の件は、&orderBy="publishedon desc" を指定するとラクかも?publishedonというのは公開日時のことで、文字どおりリソースが公開された日時を示します。

という投稿箇所


yama さんが書きました:http://forum.modx.jp/viewtopic.php?f=7&t=1033
上記の件は、&orderBy="publishedon desc" を指定するとラクかも?publishedonというのは公開日時のことで、文字どおりリソースが公開された日時を示します。
「公開開始日時」フィールドで公開開始日時を明示すると、その値がpublishedonとしてセットされます。なので、日時を変更したい場合は「公開開始日時」に値を入れるとよいですね。
(1.0.5J-r7ではpublishedonは不具合があったと思います)

createdonだと下書き期間が長いリソースは古いリソースという扱いになってあまり実用的ではないので、RSSに関してはデフォルトでpublishedonを見る設定でよいかも。


新旧どちらのバージョンのMODXサイトでもやってみましたが、どちらも同じ振る舞いをして、意図した振る舞いにもなっておりませんでした。

1.0.6J-r8のサイトも、| 1.0.5J-r7のサイトも、どちらも、
RSSフィードページの日付が変わらないことを確認しました。
トップページの最新ニュース欄で最新から5件ほどだけを表示させておりますが、
そちらの日付はちゃんと変わったのですが・・・

RSSの日付もちゃんと変わるのは何onでしょうか。
それともpublishedonでできるはずなのになぜかできていないとかでしょうか。

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月17日(月) 18:17
by modxfan
sama55 さんが書きました:【予備知識】
ツール -> グローバル設定 -> 管理画面の設定 -> リソースツリークリック時の動作
上記の設定を「自動(推奨)」から「リソースの詳細情報」にすると、管理画面のリソースツリーでページをクリックした時の挙動が変わり、「情報」タブで更新日付を管理画面で目視確認できるようになります。編集する時は右上の「編集」ボタンをクリックしてから編集します。ただ、ページの編集直後は「情報」タブの内容(更新日付)がおかしくなるようで、もう一度リソースツリーでクリックしてやると、最新の更新日付が確認できるようです(MODx本体のバグかphiEditedonとの相性問題かは不明)。


リソースを保存したら出る画面を最初に出させる設定があるんですね。
これは便利だと思いました。



sama55 さんが書きました:

コード: 全て選択

[[Ditto?
   &parents=`8`
   &format=`rss`
   &display=`10`
   &dateSource=`editedon`
   &orderBy=`editedon DESC`
]]

OKです。


ありがとうございます。
おこないたいのは5J r7のバージョンですが、ご教示のソースでもやってみたのですが、現象変わらずでした。
sama55様も当方の設定におかしな点はなさそうだとのことを頂いたおりますが、あとでまた見直してみます。
プラグインネタを教えていただき、助かっております。

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月18日(火) 10:17
by modxfan
自分なりに色々やってみましたが直らないので、空いたときにまたやってみます。

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月18日(火) 15:23
by sama55
modxfan さんが書きました:おこないたいのは5J r7のバージョンですが、ご教示のソースでもやってみたのですが、現象変わらずでした。

なるほど。同一ホストにサイトが2つあるのですね。
サイト1・・・CPI X2: ver 1.0.5J-r3 -> ver 1.0.6J-r8(アップグレード)
サイト2・・・CPI XX: ver 1.0.5J-r7

念のため、r3からr8にアップグレードした環境とr7の環境でも同じテストを実施してみましたが、正しく動いてしまいました。

残る違いとしてはMySQLが"5.0.45"である点。5.0.51にはorder by句とgroup by句を併用すると並び替えが失敗するバグがあることはよく知られてますが、5.0.45にも当てはまるかネットで検索してもうまく判断できませんでした。また、DittoでorderBy引数を指定した場合、発行されるSELECT文にorder by句が付くか、MySQLのクエリーログで調べたところ、なぜかDittoにorderBy引数を指定してもSELECT文にorder by句が付きませんでした。MySQLに並び替えをさせずにPHPでソートすることも考えられますが、ページ替えをするために性能を考慮してLimit句でレコードを絞り込むはずなので、SELECT文にorder by句が付かないことがど~にも解せません。ditto/classes/ditto.class.inc.phpのgetDocuments関数の$sort変数に常に空文字が設定されるところまでは追いましたが、$sort変数の仕様と処理の正当性が判断できずにいます。前からこうなのかな~(謎・・・)

Re: いったん投稿したニュース記事を編集したらRSSページだけ日付が勝手に更新される。防ぐには?

Posted: 2012年12月18日(火) 15:39
by modxfan
念のため、r3からr8にアップグレードした環境とr7の環境でも同じテストを実施してみましたが、正しく動いてしまいました。


sama55様、そこまでしていただいたとは・・申し訳ないです。。そしてありがとうございます。
しかも正しく動いたのですね。。アレ??

PHPのバージョンか、Dittoのプログラミングか、それとも私がどこか間違っているのかというところですか。
PHPのバージョンによってorderbyのバグがあるなんて驚きました。