UPDATE 2009年12月22日
MODxで新着情報更新システムを作ってみる
MODxにはNews Managerとか便利なスニペットもあるが、今回はDittoとPHxとManagerManagerを使って実現してみる。
テストサイトでのこの部分ですね。
ここでいうところの新着情報は、単に更新情報ではなく、トピックス的なものも表示するための新着情報です。なので、表示日付や文言などは、管理画面でコントロールできることを要件とします。ざっくり要件としてまとめると、
- 管理画面で編集できる
- 公開開始日時、公開取消日時を設定可
- 見出しを編集可
- アップロードファイル(PDFとか)や、外部サイトにリンク可
- 新規ページを作成可
- その新規ページはWYSIWYGで編集可
- 表示順は表示日付で降順(もちろんメニューインデックスによる順番にすることも可)
- なるべく管理画面の編集画面をシンプルに
ちなみに管理画面のイメージはこんな感じ。

トップページのテンプレートに埋め込むDittoの記述はこれ。
<table>[!Ditto? &parents=`29` &tpl=`news_row_tpl` &sortBy=`news_disp_date`!]</table>
テーブルの1行ごとのテンプレートチャンクはこんな感じ。PHxを利用して、場合分けをしています。
<tr> <th>[+news_disp_date+]</th> <td>[*phx:if=`[+news_link_url+]`:ne=``:and:if=`[+news_page_create+]`:is=``:then=`<a href="[+news_link_url+]" target="[+news_link_target+]">[+longtitle+]</a>`*] [*phx:if=`[+news_page_create+]`:ne=``:then=`<a href="[~[+id+]~]">[+longtitle+]</a>`*] [*phx:if=`[+news_link_url+]`:is=``:and:if=`[+news_page_create+]`:is=``:then=`[+longtitle+]`*]</td> </tr>
この記事へのコメント(6)
MOMO 2010年5月17日 at 2:27 PM
このような機能を使いたいのですが、
ちょっと分からないので質問します。
DitoとPHXとManajerManajerと
使われているとのことですが、
仕組み?など、詳細を解説していただけると
めちゃめちゃうれしいです。
ミニマムズ 2010年5月20日 at 10:48 AM
MOMOさん
「仕組み」と言うと・・・?
MOMO 2010年5月20日 at 3:32 PM
当方素人なもので分かりにくくてすみません。
Ditto、ManagerManagerのカスタマイズの画面?
でつまづいてしまっています。
ManagerManagerはチャンクのmm_rulesをカスタマイズ
するのでしょうか。
Dittoはカスタマイズなしですか?
テンプレートにDitoの記述をするところはわかります。
&parents &tpl の意味は?
テンプレートチャンクは&tpl の意味が分かれば理解できるような気がします。
ミニマムズ 2010年5月20日 at 4:06 PM
MOMOさん
mm_rulesはカスタマイズしてます。
とりあえず投稿に不必要な項目は隠したりしてます。
余計なものがあると混乱しちゃいますからね。
Dittoはテンプレートチャンクだけ作ってます。
&tpl=`news_row_tpl`
でその出力用テンプレートのチャンク名を指定しています。
テンプレートの内容は記事に書いている通りです。
&parentsは、出力したいドキュメントの親ドキュメントのIDを指定しています。新着情報の親ドキュメントのIDがこの場合29なので、それを指定。
こんな感じなんですが、ご理解いただけましたか?
このページはご覧になりましたか?
http://modx.liolion.net/resource/ditto2.html
私の拙い説明より、このサイトを熟読されたほうが、
Modxは理解できると思いますよ。
MOMO 2010年5月20日 at 9:34 PM
お忙しい中丁寧に答えていただきましてありがとうございます。
上記URL読んでいましたがあまりにわからなくて・・・
もう一度頑張ってみます。
ありがとうございます。
Becky 2010年11月1日 at 6:08 PM
こちらのサイトを拝見させていただいて、見よう見まねで作成しております。
だいたいおなじようには出来たのですが、リンク先URL/データ news_link_urlのところでつまずいております。なんで挿入ボタンができるのだろう?って。
テンプレート変数で入力タイプ:URL ウィジットがHyperlinkで良いのでしょうか?
とても難しいです。 ご指導いただけると助かります。