[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
このブログに付けているTechnoratiのサーチレットは漢字を含む日本語や半角カナでの検索が可能な様にカスタマイズしています。
ベースとなるサーチレットのコードは下記のサイトにあるのですが、このままだと日本語で検索出来ないんです。
で、ちょっと改造している訳なんですよ。
Configure a Technorati searchlet
ちなみにこのサーチレットはテクノラティジャパンで検索するんじゃなくて、直接アメリカの本家のTechnoratiで検索しています。
9月現在、テクノラティジャパンは正直な所四六時中重くて使い物にならないので、私はジャパンよりも軽い本家をいつも利用しているんです。
そんな訳で忍者ブログにてプラグインに組み込んで使う場合を想定したサーチレットのサンプルコードを記載します。
HTML 4.01版サンプルコード
<form action="http://www.technorati.com/search.php" method="get" accept-charset="UTF-8">
<div class="blogsearch">
<input type="hidden" name="sub" value="searchlet">
<input type="hidden" name="language" value="ja">
<div class="center"><a href="http://www.technorati.com/"><img src="http://static.technorati.com/pix/logos/logo_sm.gif" width="125" height="30" alt="Technorati (US)" title="Technorati (US)へ"></a></div>
<input type="text" class="box" name="s" size="23" maxlength="255" value=""><input type="submit" class="btn" value="検索"><br>
<label for="ts_www"><input type="radio" id="ts_www" name="from" value=""> 全てのブログから検索</label><br>
<label for="ts_yb"><input type="radio" id="ts_yb" name="from" value="<!--$g_url-->" checked> 当ブログから検索</label>
</div>
</form>
XHTML版サンプルコード
<form action="http://www.technorati.com/search.php" method="get" accept-charset="UTF-8">
<div class="blogsearch">
<input type="hidden" name="sub" value="searchlet" />
<input type="hidden" name="language" value="ja" />
<div class="center"><a href="http://www.technorati.com/"><img src="http://static.technorati.com/pix/logos/logo_sm.gif" width="125" height="30" alt="Technorati (US)" title="Technorati (US)へ" /></a></div>
<input type="text" class="box" name="s" size="23" maxlength="255" value="" /><input type="submit" class="btn" value="検索" /><br />
<label for="ts_www"><input type="radio" id="ts_www" name="from" value="" /> 全てのブログから検索</label><br />
<label for="ts_yb"><input type="radio" id="ts_yb" name="from" value="<!--$g_url-->" checked="checked" /> 当ブログから検索</label>
</div>
</form>
ミソは赤文字のlanguageの指定とformタグ中のaccept-charsetの指定。
accept-charsetって忍者ブログのcharsetはUTF-8ですから基本的に設定しないでも問題ない筈なんですが、おまじないという事で明示的に設定しています。
尚、サンプルソースでは忍者ブログのブログ内検索プラグインや共有テンプレート等で用いられているクラス定義を流用する形でマークアップしております。他のブログサービスにサンプルソースを流用される場合には必要に応じて各自でお使いになられているブログサービスに最適化させてクラス定義を追加/修正したり、CSSで各タグに対するwidth値等を記述した上でお使い下さい。ちなみに当サイトの右上で実際に用いている物はカスタマイズを行ってCSSでラジオボタンをIEやOperaにて3D表示する様に背景色を設定しています。
また、サンプルソース中の<!--$g_url-->は忍者ブログの独自タグです。他のブログサービスにサンプルソースを流用される場合にはこの部分を設置されるブログサービスに用意されているタグや変数に置き換えて頂くか、 http://hogehoge.hoge/ の形式で直接URLを記述してお使い下さい。
ちなみにこのサーチレットコードをcharsetがShift_JISのブログに流用して設置する場合には、ちょっと強引な裏技ですけど下記の一文を追加すると良いかと思います。
追加場所は上記のサーチレットでhidden渡ししている部分の最後(つまり3番目に書くって事。)に記述すればOKです。
下記の一文を追加しないとIE等で閲覧していた場合に入力した検索文字列が文字化けしてしまい正常に検索する事が出来ません。
つまり、このダミーのEUC-JP専用の文字コードをパラメータに付与する事で、Shift_JISの文字列をEUC-JPの文字列と見せかけて文字化けを防いでいるんです。
<input type="hidden" name="dummy" value="&#xfdfe;">
(実使用時には&#xfdfe;の先頭の「&」を小文字に置き換えて下さい。)
本来ならばEUC-JPとしてではなくUTF-8の文字列として扱うべき所なのかと思うんですが、ちょっと手法が判らなかったのでとりあえずShift_JISならこんな事で文字化けを防ぐ事が出来ますよって事です。
ちなみにcharsetがEUC-JPのブログだと動作原理から考えてこの小細工をしなくても文字化けしない筈だと思うんですが、私はEUC-JPのブログで試していないのでその辺の詳細は未確認です。あしからず。
尚、このaccept-charsetと文字化け対策の件に関しては、akiyan.comさんの下記の記事を参考にさせて頂きました。誠に有難うございました。
IEのform要素はacceptCharset属性(accept-charset)に非対応らしい
bookmarkletからマルチバイト文字列を文字化けさせずに送る方法
※2006/09/19追記:これまで提示していたサンプルソースにて一部不適切なマークアップ箇所がありましたので修正した上で、XHTML版サンプルソースの追加、及び注意事項の追記を行いました。
投稿されたトラックバックは管理者の承認後に表示されます。
現在、当ブログでは英文のみのトラックバックは受け付けておりません。
Presently, with this blog has not accepted trackbacks only of English.