MODxでCMSの恩恵を賜りつつ、validを保ち、かつWEB標準化を目指そう
Welcome !! Now 2008.07.25 16:20 (JST)
posted at : 2007.02.04 15:42
[ スニペット ]
AjaxSearchは、ページ移動することなく、検索結果を表示します。
Search Highlighting プラグインによって、ドキュメントの中で、検索語をハイライト表示させる事が出来ます。
ドキュメントやテンプレートで、スニペットを呼び出す事によって、WEB上に検索フォームを挿入します。
ユーザー環境が、JavaScriptOFFの場合、FlexSearchFormの様に機能します。
参照ページ:AjaxSearch
[!AjaxSearch!]または[[AjaxSearch]]
AjaxSearchを利用するか否か。デフォルト「する(1)」
検索用のフォームを挿入するか否か。デフォルト「する(1)」
スクリプト「prototype.js」と「scriptaculous.js」を自動的に<head>~</head>に組み込むか否か。デフォルト「する(1)」
AjaxSearchは、この二つのライブラリがないと機能しません。従って、addJscript=0にした場合は、自分で組み込む必要があります
検索スタイルを指定。デフォルトは「0」で、一般的な検索スタイル。ユーザーが検索語を入力し、「submit」ボタンをクリックするまで検索は始まらない。「1」にセットすると、「submit」ボタンが表示されず、ユーザーが文字を入力するごとに自動的に検索が行われる(デフォルト3バイト以上の文字を入力した時点で?)
ajaxで表示する検索結果の最大数(ajaxSearch=0の時は無視)
検索結果件数が、ajaxMaxより多い場合、全ての結果を表示するためのリンク「view all results」を挿入するか否か。デフォルト「しない(0)」
「する(1)」を定義した場合は、次項の「morResultsPage」も合わせて定義します。「morResultsPage」を定義しないと「view all results」をクリックした時、無効なページをリクエストした事になり、結果 not found にリダイレクトされます
「view all results」をクリックした時に表示されるドキュメントID。このドキュメントにも、スニペットコール([!AjaxSearch!])を記述します
検索結果の文中で検索語をハイライト表示するか否か。デフォルト「する(1)」
検索語は、「<span class="AS_ajax_highlight AS_ajax_highlight**">~</span>(**は数字)」で囲まれる
ドキュメントまたはテンプレートに「<!--search_terms-->」を挿入すると、ハイライト表示を取り去るためのリンクが文中に挿入される
尚、サンプルサイトには、ハイライト表示するためのCSSが定義されていないので、以下をサンプルサイトで読み込んでいるCSS(たとえば、modx.css等)に追加すると良いでしょう
span.AS_ajax_highlight {
background-color:#ff0;
color:#333;
font-style:italic;
}
クラス名以外の値は任意で変更してください
AjaxSearchを利用しない時、結果を表示するためのドキュメントID。このドキュメントにも、スニペットコール([!AjaxSearch!])を記述します
AjaxSearchを利用しない時、かつAS_landingの定義がない時、検索結果を表示するか否か。デフォルト「する(1)」(<div id="ajaxSearch_resultListContainer">~</div>の部分)
ajaxeSearchを利用しない時、表示する検索結果の最大数。
ここでセットした値以上の結果がある場合は、ページナビゲーションが挿入される
※AS_landingを指定している場合は、指定した先のページにgrabMaxを指定します
以下は、スニペット自身(php)の設定になります。その他のパラメータ、また詳しくは、スニペットをご参照下さい
デフォルト「partial」。詳しい事はわからないのですが、2バイト文字環境の場合、これが「partial」でないと、AjaxSearchが機能しないようです
検索語を半角スペースで区切って入力した時の扱い方。デフォルト「false」。
trueにセットすると、例えば、「News Publisher test」と入力した時、「News」かつ「Publisher」かつ「test」を含むドキュメントを表示する。falseの場合は、「News Publisher test」を含むドキュメントを表示。例えば、googleで"News Publisher test"と入力して検索した時のような感じです
「Click here to view all results.」を変更出来ます
言語ファイルとしてわかれていないので、「moreResultsText」同様、スニペット自身を直すようになります
「submit」の値や、検索結果がない場合のメッセージ(There were no search results. Please try using more general terms to get more results.)、検索語を入力してください(Please enter a search term to begin your search.)等のメッセージを変更出来ます
※動作サンプルは準備中※
[!AjaxSearch? &ajaxMax=`2` &showMoreResults=`1`
&moreResultsPage=`161`!]
尚、検索結果を表示するドキュメント(上記の例では161)にも以下のように記述しておきます
[!AjaxSearch!]
尚、検索フォームを表示したくなければ以下のようにコールします
[!AjaxSearch?! &AS_showForm=`0`]
[!AjaxSearch? &ajaxSearch=`0` &AS_landing=`161`!]
対処法を書いています。MODx0.9.5 rev2106の問題点について:MODxをインストールしている環境によって、2バイト文字の検索が出来ないをご参照下さい
ajaxSearchがOFFの時、検索結果に[[FirstChildRedirect? &docid=`47`]]などのスニペットが含まれていると、そのスニペットを実行してしまう。
[<!-- -->[FirstChildRedirect? &docid=`47`]<!-- -->]の様に、コメントとして書いているものでも実行する。