Welcome !! Now 2008.07.25 16:20 (JST)

AjaxSearch (1.1)

posted at : 2007.02.04 15:42

[ スニペット ]

AjaxSearchは、ページ移動することなく、検索結果を表示します。

Search Highlighting プラグインによって、ドキュメントの中で、検索語をハイライト表示させる事が出来ます。

ドキュメントやテンプレートで、スニペットを呼び出す事によって、WEB上に検索フォームを挿入します。

ユーザー環境が、JavaScriptOFFの場合、FlexSearchFormの様に機能します。

参照ページ:AjaxSearch

テスト環境

  • サーバ:さくらインターネット  
    • PHP 4.4.4
    • MYSQL 4.0.27
  • MODX:0.9.5
  • AjaxSearch (1.1)

基本的な書式

[!AjaxSearch!]
または[[AjaxSearch]]

パラメータ(一般)

ajaxSearch

AjaxSearchを利用するか否か。デフォルト「する(1)」

AS_showForm

検索用のフォームを挿入するか否か。デフォルト「する(1)」

addJscript

スクリプト「prototype.js」と「scriptaculous.js」を自動的に<head>~</head>に組み込むか否か。デフォルト「する(1)」

AjaxSearchは、この二つのライブラリがないと機能しません。従って、addJscript=0にした場合は、自分で組み込む必要があります

パラメータ(Ajax)

ajaxSearchType

検索スタイルを指定。デフォルトは「0」で、一般的な検索スタイル。ユーザーが検索語を入力し、「submit」ボタンをクリックするまで検索は始まらない。「1」にセットすると、「submit」ボタンが表示されず、ユーザーが文字を入力するごとに自動的に検索が行われる(デフォルト3バイト以上の文字を入力した時点で?)

ajaxMax

ajaxで表示する検索結果の最大数(ajaxSearch=0の時は無視)

showMoreResults

検索結果件数が、ajaxMaxより多い場合、全ての結果を表示するためのリンク「view all results」を挿入するか否か。デフォルト「しない(0)」

「する(1)」を定義した場合は、次項の「morResultsPage」も合わせて定義します。「morResultsPage」を定義しないと「view all results」をクリックした時、無効なページをリクエストした事になり、結果 not found にリダイレクトされます

moreResultsPage

「view all results」をクリックした時に表示されるドキュメントID。このドキュメントにも、スニペットコール([!AjaxSearch!])を記述します

extract

検索結果の文中で検索語をハイライト表示するか否か。デフォルト「する(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;
}

クラス名以外の値は任意で変更してください

パラメータ(non-Ajax)

AS_landing

AjaxSearchを利用しない時、結果を表示するためのドキュメントID。このドキュメントにも、スニペットコール([!AjaxSearch!])を記述します

AS_showResults

AjaxSearchを利用しない時、かつAS_landingの定義がない時、検索結果を表示するか否か。デフォルト「する(1)」(<div id="ajaxSearch_resultListContainer">~</div>の部分)

grabMax

ajaxeSearchを利用しない時、表示する検索結果の最大数。
ここでセットした値以上の結果がある場合は、ページナビゲーションが挿入される

※AS_landingを指定している場合は、指定した先のページにgrabMaxを指定します

セットアップオプション

以下は、スニペット自身(php)の設定になります。その他のパラメータ、また詳しくは、スニペットをご参照下さい

searchStyle

デフォルト「partial」。詳しい事はわからないのですが、2バイト文字環境の場合、これが「partial」でないと、AjaxSearchが機能しないようです

useAllWords

検索語を半角スペースで区切って入力した時の扱い方。デフォルト「false」。

trueにセットすると、例えば、「News Publisher test」と入力した時、「News」かつ「Publisher」かつ「test」を含むドキュメントを表示する。falseの場合は、「News Publisher test」を含むドキュメントを表示。例えば、googleで"News Publisher test"と入力して検索した時のような感じです

moreResultsText

「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を利用、検索結果最大2件表示、全てを表示するページへのリンクを表示

[!AjaxSearch? &ajaxMax=`2` &showMoreResults=`1` &moreResultsPage=`161`!]

尚、検索結果を表示するドキュメント(上記の例では161)にも以下のように記述しておきます

[!AjaxSearch!]

尚、検索フォームを表示したくなければ以下のようにコールします

[!AjaxSearch?! &AS_showForm=`0`]

AjaxSearchを利用しない、検索を別のページに表示する

[!AjaxSearch? &ajaxSearch=`0` &AS_landing=`161`!]

問題点

2バイト文字の検索に失敗する

対処法を書いています。MODx0.9.5 rev2106の問題点について:MODxをインストールしている環境によって、2バイト文字の検索が出来ないをご参照下さい

検索結果にAjaxSearchコールが含まれていると実行してしまう

ajaxSearchがOFFの時、検索結果に[[FirstChildRedirect? &docid=`47`]]などのスニペットが含まれていると、そのスニペットを実行してしまう。

[<!-- -->[FirstChildRedirect? &docid=`47`]<!-- -->]の様に、コメントとして書いているものでも実行する。

△ページトップ