2007年3月22日
Movable Type 検索の全角スペースを半角スペースと同じ振る舞いにする
Movable Type の検索フォームで検索文字列を複数入力して、区切り文字に全角スペース(空白)を使用すると、全角スペースは検索文字として認識され、期待しない結果(おそらく検索結果として何もヒットしない)になってしまいます。
この全角スペースを半角スペースと同じ扱いにするためのカスタマイズを紹介します。
1.IME で全角入力中に半角スペースを入力する
本題からそれますが、Windows の MS-IME で全角文字入力中に半角スペースを挿入したい場合は、「Shift キー + Space キー」で半角スペースを入力することができます。また、IME のプロパティを下記のように変更することで、全角文字入力中に常に半角スペースを入力することができます。
2.カスタマイズ
2.1 Search.pm の修正
まず、lib/MT/Search.pm に下記のパッチを適用してください。
--- lib/MT/Search.pm.bak Mon Jan 15 15:46:31 2007
+++ lib/MT/Search.pm Wed Mar 21 22:55:15 2007
@@ -116,6 +116,8 @@
## Set search_string (for display only)
if ($app->{searchparam}{Type} eq 'straight') {
$app->{search_string} = $q->param('search') || '';
+ my $delimiter = $app->translate("delimiter");
+ $app->{search_string} =~ s/$delimiter/ /g;
} elsif ($app->{searchparam}{Type} eq 'tag') {
$app->{search_string} = $q->param('search') || '';
}
パッチが分からない方は MT/App/Search.pm を任意のエディタで開き、下記の青色の2行を追加してください。
:
(略)
:
sub init_request{
my $app = shift;
$app->SUPER::init_request(@_);
foreach (qw(searchparam templates search_string results
user __have_throttle)) {
delete $app->{$_} if exists $app->{$_}
}
:
(略)
:
## Set search_string (for display only)
if ($app->{searchparam}{Type} eq 'straight') {
$app->{search_string} = $q->param('search') || '';
my $delimiter = $app->translate("delimiter");
$app->{search_string} =~ s/$delimiter/ /g;
} elsif ($app->{searchparam}{Type} eq 'tag') {
$app->{search_string} = $q->param('search') || '';
}
## Get login information if user is logged in (via cookie).
## If no login cookie, this fails silently, and that's fine.
($app->{user}) = $app->login;
}
:
(略)
:
2.2 ja.pm の修正
次に、lib/MT/L10N/ja.pm を任意のエディタで開き、下記の1行を追加してください。
'delimiter' => ' ',
追加する場所は、似たような記述の近辺であればどこでも構いませんが、とりあえず下から3行目にいれましょう。
:
(略)
:
'scheduled' => '指定日',
'No entries could be found.' => 'エントリーは見つかりません。',
'delimiter' => ' ',
);
1;
お分かりの通り、検索フォームのクエリーから全角文字を半角文字に直しているだけです。もう少しエレガントな方法がありましたら情報お待ちしております。
Posted by yujiro
- テンプレートのタグを探す方法
- 検索結果画面のカラムレイアウトを変更する
- 検索結果のページ分割(3.3x 版)
- 検索結果画面のページ分割が正常に動作しない不具合を解消する
- Fast Search でカテゴリーの絞込み検索をする
- Movable Type で高速検索を実現する Fast Search プラグイン
- タグ検索でエントリーの画像を表示する
- Movable Type の検索でエラーになる問題について
- 検索結果画面の表示文字数を変更する
- 検索結果画面の日本語を変更する
- 検索オプションをつける
トラックバックURL
コメントする

