MODxでCMSの恩恵を賜りつつ、validを保ち、かつWEB標準化を目指そう
Welcome !! Now 2012.02.23 12:16 (JST)
AjaxSearch は、FlexSearchFormにAJAX機能をくわえた、機能強化版です。
ドキュメントのタイトル、説明、内容、テンプレート変数から、検索します。また、ドキュメントのサブセットからも検索します。検索結果の中で、検索語をハイライト表示します。
configfileを使って、スニペットコールを簡潔に書けるようになっています。
参照ページ:AjaxSearch
[!AjaxSearch!]
カスタムconfigを指定します。デフォルト「default」。
以下の様に指定します。
$ajaxMax = "4";
パラメータの前は、「&」ではなく、「$」なので注意。また、値を囲むクォーテーションは、「``」ではなく、「''」または、「""」になります。
以下の様に指定した場合、コンフィグファイルによる上書きを避けることができます。
$__ajaxMax =
"4";
例えば、AjaxSearch コールが以下で、
検索する単語を入力してください
それぞれ以下を指定できます。
テーブルが自動的にパージされる前のログの数??
デフォルトは「200」です。
&asLog=`1:1:500`
失敗した検索リクエストが500;レコードまで ajaxSearch_log テーブルに記録されるでしょう(ちょっとアヤシイ)。
コメント用のテンプレートをチャンク名で指定します。デフォルトはファイルで、以下です。
.AS_SPATH.'templates/comment.tpl.html
※AS_SPATHのデフォルト 「assets/snippets/ajaxSearch/」
コメントフォームはhiddenフィールドを使うことによって、スパムから保護されます。このフィールドは、CSSによって隠されます。もし、そこに入力があった場合、コメントは送信されません。
hiddenフィールドは、実際のhiddenフィールドではありません。単に目に見えないだけです。それで、Googleによって、罰せられる心配はありません。テキストブラウザや音声ブラウザを使うユーザーは、このフィールドが見えるでしょう。そして、入力するかも知れません(入力しないように警告しているにもかかわらず)。入力があれば、コメントは送信されません。利用時には、十分注意して下さい。
フィールドを隠すためには、あなた自身のCSSファイルに以下をコピーして下さい。
.ajaxSearch_hiddenField {position:absolute; text-decoration:underline; background-color:#CC0000; left:0px; top:-500px; width:1px; height:1px;overflow:hidden;}
スパマーは、コメントの中にたくさんのリンクを書き送信するでしょう。
最大で、2つのリンクは許可されます。それ以上は、リジェクトされます。この値は、「classes/ajaxSearchLog.class.inc」の「CMT_MAX_LINKS」で変更できます。
コメントの最大の長さは、100バイト(2バイト文字だと63文字?)です。それ以上は、リジェクトされます。この値は、「classes/ajaxSearchLog.class.inc」の「CMT_MAX_LENGTH」で変更できます。
検索は、データベーステーブルの「プリフィックス_ajaxsearch_log」に記録されます。このデータは、エンドユーザのためのものではなく、管理者のためのものです。
ストアされた情報は、以下の様な意味を持ちます。
ajaxSearch モードの時のみ使われるパラメータです。
Ajax で表示したい検索結果の最大数。デフォルト「6(?)」
検索結果が「ajaxMax」を越えるとき、「すべての検索結果を見る」リンクを表示するかどうかを指定します。デフォルト「0(しない)」。以下を指定できます。
「する(1)」を定義した場合は、次項の「morResultsPage」も合わせて定義します。「morResultsPage」を定義しないと「すべての検索結果を見る」をクリックした時、無効なページをリクエストした事になり、結果 not found にリダイレクトされます
「すべての検索結果を見る」をクリックした時に表示されるドキュメントIDを指定します。このドキュメントには、結果を表示するためのスニペットコール「
検索する単語を入力してください
ライブサーチ(送信ボタンがなく、入力欄に「&minChars」で指定した文字数以上を入力したとき、自動的に検索をはじめます)を行うかどうかを指定します。デフォルト「0(しない)」。以下を指定できます。
ajaxによる検索結果の表示(<div id="ajaxSearch_output")の透明度を指定します。「0(透明)~1(不透明)」の間で指定して下さい(?)。デフォルトは「1(不透明)」です。
mootools ライブラリを<head>~</head>に挿入するかどうかを指定します。デフォルト「1(する)」。以下を指定できます。
検索結果を表示したいリソースのIDを指定します。指定先のリソースにも、結果を表示するためのAjaxSearchコールを書きます。
[!AjaxSearch? &ajaxSearch=`0` &grabMax=`5`!]
1ページに何件の結果を表示するかを指定します。「grabMax」で指定した数以上の結果がある場合は、自動的にページナビゲーションが挿入されます。
ページナビゲーションの区切り文字を指定します。デフォルト「|」。どんな文字でも指定できます。
検索結果が1ページに収まる場合でも、常にページナビゲーションを表示するかどうかを指定します。デフォルト「0(しない)」。以下を指定できます。
テンプレートは、デフォルトでファイルとして提供されています。場所は以下です。
assets/snippets/ajaxSearch/templates/(フォルダ名)テンプレート名.tpl.htm
これを直接変更するか、またはチャンクを作ってそこにコピーし、変更を加えて下さい。
検索フォームのテンプレートです(入力ボックス、イントロメッセージ、検索結果)。
templates/layout.tpl.html
non-ajaxSearch モードの時の出力結果用(大外)のテンプレートです(検索結果の数、結果リスト、ページナビゲーション)。
templates/results.tpl.html
non-ajaxSearch モードの時の出力結果用(インナー:[+as.listResults+])のテンプレートです(タイトルリンク、説明、抜粋、パンくず)。
templates/result.tpl.html
non-ajaxSearch モードの時のページナビゲーション用のテンプレートです(ページ、現在のページ)。
templates/paging.tpl.html
non-ajaxSearch モードの時のコメント用のテンプレートです。
templates/comment.tpl.html
ajaxSearch モードの時の出力結果用(大外)のテンプレートです(検索結果の数、結果リスト、「すべてを見る」リンク)。
templates/ajaxResults.tpl.html
ajaxSearch モードの時の出力結果用(インナー:[+as.listResults+])のテンプレートです(タイトルリンク、説明、抜粋、パンくず)。
templates/ajaxResult.tpl.html
それぞれのテンプレートまたは、添付のreadmeを参照して下さい。
検索結果から、リンクをクリックして、ページにジャンプすると、<body>によけいな「>」がついています(<body>>)。このため、ハイライトするはずの文字が、ハイライトしません。このバグを修正するために、以下を行います。
$output = implode("<body>", $body);$output = implode("<body", $body);参照ページ:Re: Search Highlighting in EVO 1.0 - <body>>
Votes: 534 ID550