Movable Type 備忘録
ブログ内検索、タグ検索で検索結果の絞込みをやってみる
- Prev Page: TinyLPO プラグイン
- Next Page: ダイナミック・パブリッシングで sort_method を使用する
こんばんわ^^
先日、小粋空間さんのところで、タグ検索による検索結果を絞り込みする方法がご紹介されてました。
絞込みの詳しい説明は上記ページを読んで頂くとして、カンタンに説明すると、mt-search.cgi のパラメータとして tag というものがあります。
この tag パラメータに検索したいキーワードを 'AND' で連結して実行することで絞込み検索が行える・・・というものです。
一応わたしのサイトのブログ内検索においても、キーワードをスペースで区切ってエンターキーを押すと、AND 検索できるようにしてます。(デフォルトです)
合わせて、検索結果として一覧されたブログ記事のタグクラウドを表示させてあげることで、さらに絞込み検索できるようにしてみました。
わたしのサイトでは、検索結果を一覧表示してるから問題になってないかもしれませんが、通常のブログ内検索、タグ検索だと 20 件( デフォルト )分のブログ記事概要が表示されるので、もしかすると使いにくいかもしれません (; ̄∇ ̄A
サンプルはわたしのサイト内で検索してみたら分かると思います。
ただし、只今ブログ記事に割り振ったタグのメンテナンス中なので適切な検索結果が得られてませんが、少しずつ検索しやすいようにタグを振りなおしてます。
タグのメンテナンスには、以下のページを参考にして頂いたらいいと思います。
絞込み検索を実装するには、以下のプラグインが必要ですので、予めインストールを済ませておきます。
カスタマイズ
修正するテンプレートは「検索結果」システムテンプレートになります。
デフォルトの「検索結果」システムテンプレートをベースに以下に説明していきます。
まず保持したタグをタグクラウドとして表示します。
具体的には 112 行目の </mt:SearchResultsFooter> 閉じタグの直前に以下のコードを追加します。保持したタグをタグクラウドとして表示
<h2 id="search_notice">タグで絞込み</h2><ul id="tags" class="tag_list"><mt:Loop name="tag_count" sort_by="value numeric reverse"><mt:If name="__counter__" le="20"><li title="<$mt:GetVar name="__key__"$>:<$mt:GetVar name="tag_count" key="$__key__"$>"><a href="<$MTSearchScrip$>?blog_id=<$MTBlogID$>&tag=<$mt:GetVar name="search_list" index="0"$>%20AND%20<$mt:GetVar name="__key__"$>&limit=<$MTSearchMaxResults$>&IncludeBlogs=<$MTBblogID$>" rel="tag"><$mt:GetVar name="__key__"$></a></li></mt:If></mt:Loop></ul>
次に、検索されたブログ記事に振られた、すべてのタグを保持するよう修正します。
具体的には 109 行目の </mt:SearchResultsHeader> 閉じタグの直後に以下のコードを追加します。べてのタグを保持
<MTEntryTags><$MTTagName setvar="tags"$><mt:SetVarBlock name="tag_count" key="$tags"><$MTTagCount$></mt:SetVarBlock></MTEntryTags>
最後に検索されたキーワードを取得/保持するよう修正します。
具体的には 89 行目の <mt:SearchResults> タグの直前に以下のコードを追加します。検索検索されたキーワードを取得/保持
<$MTSearchString setvar="search_name"$><mt:If name="search_name" like=" AND "><$mt:GetVar name="search_name" split=" AND " setvar="search_list"$><mt:Else><mt:SetVarBlock name="search_list[0]"><$mt:GetVar name="search_name"$></mt:SetVarBlock></mt:If>
以上です。
あとは各自のサイトに合わせてタグクラウドをデザインしてください。
まぁ、こんなかんじで検索結果にタグクラウドを表示させてます。
参考まで。
Trackback Pings(0)
No trackbacks found.




さっそく参考にさせて頂きました。
タグに半角スペースを含む英文があったりするものですから、苦労しました。また、タグクラウドをサイドバーに表示ししたかったのですが、javascriptでクラウド化しているもので、ちょっと難しそうです。
おかげさまで以前に比べ少しは便利になったと思います。
bzbell さん、お早うございます。
どんな感じか拝見したくて…。
「ブログ内検索」に何も入力せずリターンを押したら、
エラーになりました~。
>>2 @Ran さん
こんばんわ^^
> エラーになりました~。
そうなんですよねぇ
キーワードで検索した結果(エントリ)からタグクラウド表示したはいいけど、以下の問題を抱えてます。
キーワード+タグ名の組み合わせによっては合致しないことがある。
タグ検索結果をやり直したりすることができない。
と、いったところでしょうか
わたしの理想としては、キーワードで多数 HIT してしまった場合、そこからタグ名称で絞り込めればいいなぁ…と漠然と思ってたのですが、そうカンタンではないようでした
時間があるときに再検討してみるつもりでいます。