Firefox検索バーの作り方

Firefoxの検索バーをちょっと作ってみたので、そのメモ。

はっきりいって、作るのはとても簡単です。たぶんソース部分を見れば、ちょっとわかる人ならそれだけで理解できるもんだと思います。

作り方 (基本部分)


例として、このサイトのサイト内検索でも作ります。作成例は最後に置いておきます。

まず、検索プラグインの設定自体はwindowsだと以下の場所にあります。

C:\Documents and Settings\<ユーザ名>\Application Data\Mozilla\Firefox\Profiles\<ランダム列>.default\searchplugins

ここに入っているxmlファイルが検索プラグインです。基本的にはこれをコピーして、自分の作りたい者に合わせて変更していけばいいと思います。実際に開いてみればわかると思いますが、何となく予想のつくつくりになっています。ただ、せっかくなので簡単に説明。

まず、最初の行は、検索プラグインのxmlの宣言です。まあいわゆるおまじないですね。

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">

続いて、検索プラグインの名前と簡単な説明。ここは自分だけが使うのなら、自分に分かるように書いておけば問題ありません。

<os:ShortName>Webcrawl サイト内検索</os:ShortName>
<os:Description>Blog サイト Webcrawl のサイト内検索</os:Description>

続いて文字コードと検索プラグインの画像。文字コードはそのままなのですが、画像の作り方は特殊なので後で説明します。

<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/x-icon;base64, (省略) </os:Image>

続いては検索フォーム本体です。Search Formは、検索単語をなにも入れなかったときに飛ぶページです。Urlのほうが実際の検索フォームです。パラメータについてはParamで指定します。hiddenフォームもここで指定します。{searchTerms}と入れた部分が、検索バーの単語と置き換えられます。

<SearchForm>http://blog.wcrawl.com/</SearchForm>
<os:Url type="text/html" method="GET" template="http://www.google.co.jp/custom">
  <os:Param name="q" value="{searchTerms}"/>
  <os:Param name="sitesearch" value=""/>
  <os:Param name="client" value="pub-2702365924772138"/>
  <os:Param name="forid" value="1"/>
  <os:Param name="channel" value="2550600721"/>
  <os:Param name="ie" value="Shift_JIS"/>
  <os:Param name="oe" value="Shift_JIS"/>
  <os:Param name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"/>
  <os:Param name="hl" value="ja"/>
</os:Url>
</SearchPlugin>

画像の作り方

画像の作り方は少し特殊な手順を踏みます。画像自体はなくても検索には困らないので、面倒ならばつくらない、という手もあり。

まず、画像自体は適当に作ります。大きさは16×16ピクセルになります。一度作ったら、Web上にアップロードする必要があります。そのアップロードしたURLをのImageタグ内に書いておくと、次回Firefoxを起動した際にその画像をimage/x-icon;base64の形式にしたもので置き換えてくれます。

実際にはもっといろいろとあるようですが、自分で使う分にはまあこれだけ分かっていれば大丈夫でしょう。

作成例

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<os:ShortName>Webcrawl ブログ内検索</os:ShortName>
<os:Description>Blog サイト Webcrawl のブログ内検索です</os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/x-icon;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAAQABIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9+/8Ah9B4g+DXgv8A4LI61+038H8eLv8AgmP8cdH0nwT4Y8CaJrngnSfij8Ffj/qyeHP2PY9b1/xf4g8Ya3D448Z63bSXnxO8c6Z4K07wLpfgvxL4U8Y+A/Dfiy3e909uH+Lv/BaD41eD/wBgfWPHPhD4P+B9c/4KAeG/+ChEH/BKnUfAeiaJ46+IX7Oms/tfeFfFI/4TLxD4Yt7fxB8PvjFqfwh8d/DjRtX134cWFlDqPxA0Hx14p8J+BdZ03xdaaRrXinUP1l+Lv7DvwI+Nfxf0z4ifET4R/Bfxpo97qfgPxh4/0zxh8L/CviHV/Gfj/wCC2meO9D+CniLUdUvdLafULnwXpXxV8bWtpe6zc38mnaXHa+HNPs30fXdYFuN+w78CLb9oWb456R8I/gvptz4g8X+HPjF45ki+F/hU+KfEnx9+H+j+P/C/w/8Airda9Jpc0s3ibR/D/wAWfHbQeIEaz17SNYc6lY3l1deKNfuYv7Sy7xC+ijS/srNsb4RY2vndDF8McbYzLVmuJjw5jMbwxwnwfk+Y+GtbDuu1Q4f4r4sy/wAQeMMwx8cHUxNXC57wnw6qsaWX4zGy/BsTnvi9CpjcLR4OzGeGwvF+F4IhmUc54eWJxWS5pGrUXiphcveHkqmRZYs1yXD5hlMsxpZ7h8TlfEE6OUVsNl1Cee/aFFFFfxafvJ//2Q==</os:Image>
<SearchForm>http://blog.wcrawl.com/</SearchForm>
<os:Url type="text/html" method="GET" template="http://www.google.co.jp/custom">
  <os:Param name="q" value="{searchTerms}"/>
  <os:Param name="sitesearch" value=""/>
  <os:Param name="client" value="pub-2702365924772138"/>
  <os:Param name="forid" value="1"/>
  <os:Param name="channel" value="2550600721"/>
  <os:Param name="ie" value="Shift_JIS"/>
  <os:Param name="oe" value="Shift_JIS"/>
  <os:Param name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"/>
  <os:Param name="hl" value="ja"/>
</os:Url>
</SearchPlugin>