- 2007-03-19 (月) 12:05
- MovableType


- アーカイブ表示をAjaxで(紹介編)
最近取り上げてないAjaxネタですが、Movalog: Making Movable Type Jump Through Hoops で見つけたネタを、チョット試してみたので紹介します。
とりあえず、元のまま設置したページがあるので、そちらを見てください。
オラオラ - Archives
カテゴリーと月別のプルダウンがあると思います。これを選択するする事で、該当するアーカイブが表示されます。
*注意 カテゴリーはアルファベット・オンリーの物しか表示しません。月別は有ある理由によりエラーになります。
元情報は「Ajax Archive Drop Downs | Archiving Archives | Movalog: Movable Type Tips & Tricks」のエントリーです。
全体の仕組みと動きを言うと、ヘッダ部にAjaxコードを定義し、表示するテンプレート内にselectリストを作成、onchangeでAjax関数を呼び出し、その中で該当エントリーをリストするPHPスクリプトへと処理を渡してます。
つまり、実際のリスト表示がPHPスクリプトで行われてるんですが、これの面白い部分はこのスクリプトがダイナミック・パブリッシングにより処理される事なんです。
つまり、このPHPはSQL文でデータベースから読み出すのではなく、MTEntriesタグ内に記述したMTのテンプレートタグにより、内容を表示してるんです。
これは、面白いですよ。Ajax+ダイナミック・パブリッシングのこういう使い方って、考えたこともありませんでした。2年半前の記事ですけど、まだまだ面白い情報出てきますね、ダイナミック・パブリッシングは。というか、取り上げられなさすぎたんですよ、今までは。
ちょっと、現状で何が問題なのか説明します。
一番はやっぱり、文字コードの問題。
Ajax は UTF-8 に自動的に変換してポストされるってやつ。
逆に言えば UTF-8 サイトなら問題なく使えるんじゃないでしょうか。
うちで日本語カテゴリーが表示されないのは、これが理由です。つまり、ポストした結果が UTF-8 になって、別な文字になってしまい、そのカテゴリーマッチするエントリーが存在しないのです。
ただし、今までのものと違い、今回データを送っている相手はPHPスクリプトです。出力の文字化けと併せて、PHPスクリプト内で対処できるんじゃないかと思ってます。
もう一つ、月別アーカイブなのですが、これは単純な理由です。カテゴリーの指定が無い状態で、PHPスクリプトを呼び出しているから。結果として category="" となってしまっているのが、エラーの原因です。
試しにこの部分を削除すれば、ちゃんと表示されるようになります。
ここら辺は UI の練り方なんでしょうが、カテゴリーと期間を指定して表示させるとかの UI の方が、良いような気もしますし、ここは修正するべきでしょうね。
新デザインには、このアーカイブ・ページを付けれたらと思っていますので、EUC版はしばらくお待ちください。
- Newer >: NOプラグインでカテゴリーソート
- < Older: OAS出身
ping a Trackback
- TrackBack URL for this entry.(1)




スクリプトの読み込みが完了していません。
メールフォーム(Javascriptを使用していません)や、
Twitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。