Welcome !! Now 2012.02.23 12:16 (JST)

AjaxSearch 1.8.3a-final

AjaxSearch は、FlexSearchFormにAJAX機能をくわえた、機能強化版です。

ドキュメントのタイトル、説明、内容、テンプレート変数から、検索します。また、ドキュメントのサブセットからも検索します。検索結果の中で、検索語をハイライト表示します。

configfileを使って、スニペットコールを簡潔に書けるようになっています。

参照ページ:AjaxSearch

テスト環境

  • サーバ:DreamHost  
    • PHP 5.2.6
    • MYSQL 5.0.32
  • MODx: 1.0.0
  • AjaxSearch 1.8.3a-final

ふたつのモード

ajaxSearch モード

  • 検索結果は、AJAXを通して、現在のページに表示されます。
  • ライブ検索を含む、複数の検索オプションと、non-AJAX オプション
  • 検索結果がもっとある場合は、「すべての結果を見る」リンクを利用できます(意味あってる?)。
  • 検索結果に何件表示するか指定できます。
  • ajax機能と視覚効果のためにMooToolsを使います(?)。

non-ajaxSearch モード

  • 検索結果は別のページに表示されます。
  • 検索結果のページングをカスタマイズできます。
  • JavaScritpがなくても、FlexSearchForm として動作します
  • 必要とされるFlexSearchFormのコードのみ読み込まれるよう設計されています?

基本的な書式

[!AjaxSearch!]

バラメータ

config

カスタムconfigを指定します。デフォルト「default」。

カスタムconfigを使う

  • ファイル名 ... 任意の名前.config.php
  • 格納場所 ... configs フォルダ
  • 「&config=`任意の名前`」の様に指定します(config.php の前がパラメータの値になります。)。
  • スニペットコールで指定したパラメータより、コンフィグファイルで指定したパラメータが優先されます(たぶん)。

config ファイルの中での指定

以下の様に指定します。

$ajaxMax = "4";

パラメータの前は、「&」ではなく、「$」なので注意。また、値を囲むクォーテーションは、「``」ではなく、「''」または、「""」になります。

config ファイルの中での指定2

以下の様に指定した場合、コンフィグファイルによる上書きを避けることができます。

$__ajaxMax = "4";

例えば、AjaxSearch コールが以下で、

検索する単語を入力してください

]`

それぞれ以下を指定できます。

level

  • 0 ... ログを取りません(デフォルト)
  • 1 ... 失敗した検索リクエストをログにします
  • 2 ... すべてのリクエストをログにします

comment

  • 0 ... ユーザーコメントを許可しません(デフォルト)
  • 1 ... ユーザーコメントを許可します
    • 検索結果に、スパムチェックのためのinput テキストと、「捜し物は見つかりましたか?」という項目でテキストエリアが挿入されます。

purge

テーブルが自動的にパージされる前のログの数??

  • 0 ... パージを許可しません(制限されたログの数)

デフォルトは「200」です。

&asLog=`1:1:500`

失敗した検索リクエストが500;レコードまで ajaxSearch_log テーブルに記録されるでしょう(ちょっとアヤシイ)。

tplComment

コメント用のテンプレートをチャンク名で指定します。デフォルトはファイルで、以下です。

.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」に記録されます。このデータは、エンドユーザのためのものではなく、管理者のためのものです。

ストアされた情報は、以下の様な意味を持ちます。

  •  id ...  検索リクエストID
  •  searchstring ... 検索語
  •  nb_results ... 検索結果の数
  •  results ...リソースID
  •  comment ... 検索結果に関するユーザによるコメント
  •  as_call ... 使われたajaxSearch スニペットコール
  •  as_select ...使われたセレクトステートメント(phpmyadmin を通して再利用できます)
  • vdate ... 検索リクエストの日時
  •  ip ... ユーザの IP アドレス

パラメータ:ajaxSearch mode

ajaxSearch モードの時のみ使われるパラメータです。

ajaxMax

Ajax で表示したい検索結果の最大数。デフォルト「6(?)」

showMoreResults

検索結果が「ajaxMax」を越えるとき、「すべての検索結果を見る」リンクを表示するかどうかを指定します。デフォルト「0(しない)」。以下を指定できます。

  • 0 ... 表示しない
  • 1 ... 表示する

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

moreResultsPage

「すべての検索結果を見る」をクリックした時に表示されるドキュメントIDを指定します。このドキュメントには、結果を表示するためのスニペットコール「

検索する単語を入力してください

」を書きます。

liveSearch

ライブサーチ(送信ボタンがなく、入力欄に「&minChars」で指定した文字数以上を入力したとき、自動的に検索をはじめます)を行うかどうかを指定します。デフォルト「0(しない)」。以下を指定できます。

  • 0 ... ライブサーチしない
  • 1 ... ライブサーチする

opacity

ajaxによる検索結果の表示(<div id="ajaxSearch_output")の透明度を指定します。「0(透明)~1(不透明)」の間で指定して下さい(?)。デフォルトは「1(不透明)」です。

addJscript

mootools ライブラリを<head>~</head>に挿入するかどうかを指定します。デフォルト「1(する)」。以下を指定できます。

  • 0 ... 挿入しない
  • 1 ... 挿入する
 

パラメータ:non-ajaxSearch モード

AS_landing

検索結果を表示したいリソースのIDを指定します。指定先のリソースにも、結果を表示するためのAjaxSearchコールを書きます。

[!AjaxSearch? &ajaxSearch=`0` &grabMax=`5`!]

grabMax

1ページに何件の結果を表示するかを指定します。「grabMax」で指定した数以上の結果がある場合は、自動的にページナビゲーションが挿入されます。

pageLinkSeparator

ページナビゲーションの区切り文字を指定します。デフォルト「|」。どんな文字でも指定できます。

showPagingAlways

検索結果が1ページに収まる場合でも、常にページナビゲーションを表示するかどうかを指定します。デフォルト「0(しない)」。以下を指定できます。

  • 0 ... 表示しない
  • 1 ... 常に表示する

CSS

検索フォーム及び、ajax検索結果(大外)

  •  #ajaxSearch_form ... 検索フォーム
    #ajaxSearch_input ... テキストボックス
  • #ajaxSearch_submit ... 送信ボタン
  • #ajaxSearch_output ... 検索結果ボックス

non-ajaxsearch モードの時、あるいは、「すべてを見る」リンクをクリックしたとき

  • #ajaxSearch_resultListContainer ... ??
  • .ajaxSearch_paging ... ページナビゲーション
  • .ajaxSearch_currentPage ... ページナビゲーション中のカレントページ
  • .ajaxSearch_pagination ... ??
  • .ajaxSearch_result ... 個々の検索結果
  • .ajaxSearch_resultLink ... 個々の検索結果のリンク
  • .ajaxSearch_resultDescription ... 個々の検索結果の説明
  • .ajaxSearch_extract ... 個々の検索結果の抜粋
  • .ajaxSearch_highlight1,2,3 ... ハイライト(枝番をつけることで複数の検索語があったとき、色を変えたりできます)
  • .ajaxSearch_resultsIntroFailure ... 検索結果が何もないとき
  • .ajaxSearch_resultsInfo  ... 「~件見つかりました」

ajax リクエストをしたとき

  • .AS_ajax_result ... 個々の検索結果
  • .AS_ajax_resultLink ... 個々の検索結果のリンク
  • .AS_ajax_resultDescription ... 個々の検索結果の説明
  • .AS_ajax_extract ... 個々の検索結果の抜粋
  • .AS_ajax_hightlight1,2,3 ... ハイライト(枝番をつけることで複数の検索語があったとき、色を変えたりできます)
  • .AS_ajax_more ... 「すべての結果を見る」リンク
  • .AS_ajax_resultsIntroFailure ... 検索結果が何もないとき

テンプレート

テンプレートは、デフォルトでファイルとして提供されています。場所は以下です。

assets/snippets/ajaxSearch/templates/(フォルダ名)テンプレート名.tpl.htm

これを直接変更するか、またはチャンクを作ってそこにコピーし、変更を加えて下さい。

tplLayout

検索フォームのテンプレートです(入力ボックス、イントロメッセージ、検索結果)。

templates/layout.tpl.html

tplResults

non-ajaxSearch モードの時の出力結果用(大外)のテンプレートです(検索結果の数、結果リスト、ページナビゲーション)。

templates/results.tpl.html

tplResult

non-ajaxSearch モードの時の出力結果用(インナー:[+as.listResults+])のテンプレートです(タイトルリンク、説明、抜粋、パンくず)。

templates/result.tpl.html

tplPaging

non-ajaxSearch モードの時のページナビゲーション用のテンプレートです(ページ、現在のページ)。

templates/paging.tpl.html

tplComment

non-ajaxSearch モードの時のコメント用のテンプレートです。

templates/comment.tpl.html

tplAjaxResults

ajaxSearch モードの時の出力結果用(大外)のテンプレートです(検索結果の数、結果リスト、「すべてを見る」リンク)。

templates/ajaxResults.tpl.html

tplAjaxResult

ajaxSearch モードの時の出力結果用(インナー:[+as.listResults+])のテンプレートです(タイトルリンク、説明、抜粋、パンくず)。

templates/ajaxResult.tpl.html

プレースホルダ

それぞれのテンプレートまたは、添付のreadmeを参照して下さい。

バグ

検索結果から、リンクをクリックして、ページにジャンプすると、<body>によけいな「>」がついています(<body>>)。このため、ハイライトするはずの文字が、ハイライトしません。このバグを修正するために、以下を行います。

  1. プラグイン「Search Highlighting」の以下の部分を修正します。$output = implode("<body>", $body);
    ↓ $output = implode("<body", $body);

参照ページ:Re: Search Highlighting in EVO 1.0 - <body>>

  • Currently 3/5 Stars
  • 1
  • 2
  • 3
  • 4
  • 5
Votes: 534 ID550

△ページトップ