珍しくコメントをいただきました。そのコメントは過去の記事で書いた「MovableType 5でスペースのみを入力して検索すると「エラーが発生しました。」となる件」に対する解決方法が知りたいということでした。
で、自分でもどうしたか全く分からず過去のツイートを遡って調べてみました。それで出て来たのが下のツイートです。
@hkis333 @drivemenuts $app->param('search') を sub { $_[0] =~ s/^\s*(.*?)\s*$/$1/; return $_[0]; }->($app->param('search')) とかで消すと。すごい適当ですが!!
— masakyst (@masakyst) 2012, 5月 22
こちらの方法で解決する場合は「lib/MT/App/Search.pm」を書き換える必要がありそう...。この解決方法だとSearch.pmを改変するのでちょっとハードルが高そう。それにMovable typeをアップグレードする度に書き換えないとならなくなります。
Search.pmを改変するハードルの高さや、アップグレードする度に書き換えが必要になるメンテナンス性の問題で却下。
それでその後にもらったのが下のツイートです。jQueryを使います。
@drivemenuts bodyタグ終了前にでも、$('form').submit(function(){ var s = $('#search'); s.val(s.val().replace(/^\s+|\s+$/g, "")); return true; });
— masakyst (@masakyst) 2012, 5月 25
こちらの方法ではテンプレートを編集するだけなので、難易度も低くメンテナンス性も悪くないのでこちらの方法で解決しました。実際に埋め込んであるのは下記のスクリプトです。
jQueryを使います。
<script type="text/javascript">
$('form').submit(function(){
var s = $('#search');
s.val(s.val().replace(/^\s+|\s+$|"/g, ""));
return true;
});
</script>
上記のスクリプトを</body>の付近に埋め込んであります。これで「不正なクエリーです: 」とは表示されなくなっています。
[2014,09,26:追記]
「"」でもエラーページにならないように修正しました。
[2014,09,26:追記ここまで]