メッセージ

2016年03月21日の記事

2016/03/21(月)AjaxSearchのパラメータ

 CMSのMODXでサイトを作り直している。HTMLの記述の仕方が古いままになっていることと、スマホ用ページを作りたかったからだ。MODXは初めてインストールしてみたが、戸惑うことがしばしば。はまったのがサイト内検索のAjaxSearchの設置。マニュアル通りにインストールして設定しても動かないのだ。

 AjaxSearchにはAjaxモードとnon-Ajaxモードの2つがある。Ajaxモードとはページの遷移なしに検索結果を表示するモード。このモードでやってみたら(というか、デフォルトはこのモードだ)、1分たっても2分たっても検索結果が出てこない。プログラムに不具合があるのか、さくらインターネットのサーバーの環境によるものなのか、設定の仕方が悪いのか分からないが、MODXのフォーラムを見ると、過去にも同じような投稿があった。

 仕方がないのでnon-Ajaxモードを試そうとしたが、どうやればいいのか分からない。検索して一番役に立ったのがAjaxSearchで検索 : non-ajax mode編。ここに書いてある通りにやったら、動くようになった。要するに検索フォームのページと検索結果を表示するページを作ればいいわけだ。

 以下は覚え書き。検索フォームのページには以下のように書いた。

[!AjaxSearch?
&ajaxSearch=`0`
&landingPage=`検索結果ページのID`
&showResults=`0`
!]

 検索結果のページは以下。

[!AjaxSearch?
&ajaxSearch=`0`
&showInputForm=`1`
&minChars=`2`
&order=`pagetitle DESC, pub_date`
!]

 &showInputForm=`1`としておくと、検索結果のページにも検索フォームを表示する。こうしたパラメータについてはMODX 日本公式サイトのパラメータ(ajaxモード・non-ajaxモード共通)のほか、documentationフォルダにあるPDFファイルに詳しく書いてあった。ネットを検索すると、古い情報が出てくるので注意した方がいいようだ。

 あと、検索結果はデフォルトでは古い日付のファイルから出てくるので&order=`pagetitle, pub_date`を追加。検索キーワードがページタイトルと一致した場合、トップに表示するためだが、あまり変わらない。うーん、いろいろと分からないことが多い。

と思ったら、パラメータの設定を間違っていた。&order=`pagetitle DESC, pub_date`でOK(修正済み)。ただし、Namazuのようにキーワードに対するスコアの重み付けはないので、キーワードとページタイトルが一致しても最初に出てくるとは限らない。簡易的な検索と思った方がいいようだ。

 ここから追記です。

 その後、MODXのバージョンを上げたら、上記の書き方では動かなくなった。大文字のAjaxSearchがダメなようだ。単に以下のように書いたら、Ajaxモードで普通に動いた。

[!ajaxSearch?
&minChars=`2`
!]