年末年始など、期間限定で任意のHTMLを出力する方法
最終更新日:2011年12月26日 shortlink:http://modx.jp/?id=795
※2012年4月2日追記
リリース予定の1.0.6J-r1ではチャンクで公開期間設定ができるようになりますので、スニペットなどを使わずに期間限定表示ができます。
年末年始の間だけ「明けましておめでとうございます」と表示したいことがあると思います。休みの間なので、できればサーバ任せで自動的に変更したい。こういう時にCMSは便利です。
MODXの場合はいろいろな方法がありますが、GetFieldスニペットを利用するのが簡単です。考え方も簡単で、こういう場合は通常はチャンクを使うものですが、チャンクには公開開始日時・公開終了日時の設定がありませんので、リソースをチャンク代わりに使うわけです。
[[GetField?docid=xxx&field=content]]
通常のGetFieldの使い方のとおりに、任意のリソースのcontent(本文)の内容をチャンクの代わりに読み出すように記述します。
リソースには公開開始日時・公開終了日時をセットします。これだけです。
[[GetField?docid=xxx&field=content&thisis=年始の挨拶]]
チャンクのように名前でアクセスできないので、上記のように書くと分かりやすいです。&thisisというパラメータは実際には存在しないので、スニペットコール内でダミーとして書いているだけです。
スニペットコールはキャッシュオフ書式で書く必要はありません。リソースに公開開始日時または公開終了日時をセットした場合、MODXはページキャッシュの初期化日時を予約します。予約された日時にアクセスすると、自動的に全てのページキャッシュが削除され、そこからページの出力を始めます。