WEBマスター

MS AccessのCSVに各ページの最終更新日を仕込んで、ModXサイトに表示

この記事は約2分で読めます。

会社のWEBサイトは、

WebサーバーにModXというCMSを仕込んで、MS Accessによる社内の商品データベースからCSVを吐き出して、

  1. CSVから各商品個別のページを作成し本サイトで表示
  2. RSSを生成し、別途用意したWordPRESSというCMSを仕込んだWebサイトにも表示されるようにする、

という構造になっています。

このたび、いつも色々アドバイスくださっている方から、「各商品個別のページには、最終更新日の日付を掲載すると良い」と提案されました。
掲載内容がフレッシュに感じるということでしょうね。

これまで日付には全く無頓着だったんですが、早速更新した日付を掲載するため、改良することにしました。
色々検索して試行錯誤し、最終的には次の通りにやったところ、うまく行きました。

Accessでの改良点

商品の更新はMS Accessで行っていますので、Accessのクエリに

editedon:Datediff("s",#1/1/1970#,Now())-32400

というフィールドを作成しました。
editedonはModXの更新日のドキュメント変数で、上記の通りにすると各ページにunixtimeで更新日を持つことが出来ます。

ModXでの改良点

RSSはDittoで生成していますが、そのDittoのスニペットコールに、

&dateSource=`editedon`

を加えると、指定したテンプレートのタグ内の日付が最終更新日に置き換わりました。
よってWordPRESS衛星サイトで表示すると、公開日の日付が最終更新日に置き換わります。

最初Accessでのeditedonは、32400を引かないでいたんですが、これだと日付が9時間後になります。

9時間後の日付だと、WordPRESSのサイトの方では更新日が未来となり、記事が非公開になってしまいました。

WebサーバーもJSTで、Accessが入っているローカルPCはもちろんJSTだし大丈夫なんでは・・・と思っていましたが、考えると混乱してきたので、単純に9時間分マイナスすることにしました。