Movable Type 備忘録

 TagCloud(タグクラウド)をもっと便利に…

  • Sep032006
  • Vote:
    http://bizcaz.com/archives/2006/09/03-000712.php
  • Categories: Customize
  • Tags:
  • Social Bookmark

MovableType(ムーバブルタイプ) 3.3から追加されたエントリ・タグを使って、サイドバーなどにTagCloud(タグクラウド)を表示している人も多いかと思います。

そんなTagCloud(タグクラウド)でのエントリ検索をもっと使いやすいようにカスタマイズしてみました。

どんなふうにカスタマイズしたのかというと、TagCloud(タグクラウド)から目的のタグをクリックしたら別ウィンドウに目的のタグに関連するエントリ一覧を表示させてみたんです。
そしたら、格段に使いやすくなったと自分では思っています。

わたしが他の人のブログを訪問したとき、TagCloud(タグクラウド)があれば使ってみたりしますが、どれもタグをクリックすると画面が変わってしまって他のエントリを見るのに、いちいち戻らなければならないので、ちょっと不便を感じたのがきっかけです。

MovableType(ムーバブルタイプ)でTagCloud(タグクラウド)を表示するといったら、以下の2通りがポピュラーなカスタマイズだと思います。

では、カスタマイズについて説明します。

tagwireプラグインを使ったTagCloudの場合

以下のJSをコピペして、popup.jsというファイル名で保存してください。

  1. function OpenTagSearch(c){
  2.     navi1=window.open(c,"TagSearch","resizable=no,menubar=no,directories=no,status=no,location=no,width=600,height=740");
  3. }

青い字の部分を各自のお好みで修正します。 保存したら、サーバにアップロードしてください。 アップロード先はどこでも構いませんので、各自の環境に合わせてアップロードします。

次に、TagCloud(タグクラウド)を表示しているテンプレートをポップアップ表示するよう修正します。 以前、コメント投稿フォームをポップアップ画面にするトラックバック一覧をポップアップ画面にするで紹介したカスタマイズの要領で行います。

まず、以下のコードを<head>~</head>の間に追加します。

  1. <script type="text/javascript" src="<$MTBlogURL$>popup.js"></script>

次に、TagCloud(タグクラウド)の各タグのリンクを以下のように変更します。

  1. <li title="<$MTTag$>:<$MTTagCount$>:<$MTTagDate
  2. format="%Y-%m-%d"$>"><a href="<$MTCGIPath$>mt-xsearch.cgi?blog_id=<$MTBlogID$>&amp;delimiter=,&amp;search_key=Tagwire&amp;search=<$MTTag
  3. encode_url="1"$>" onclick="OpenTagSearch(this.href); return false;"><$MTTag$></a></li>

青い字の部分を追加します。 一通り追加したら、いつものように保存して再構築してください。

最後に、テンプレート・モジュールのXSearch Tagwireを修正します。 以下のコードは指定されたタグに関連するエントリ一覧を表示するところのコードにあたります。

  1. <a href="<$MTEntryLink$>" onclick="javascript:window.opener.location.href='<$MTEntryLink$>';
  2. return false;"><$MTEntryTitle$></a>

やっぱり、青い字の部分を追加します。 追加したら保存してください。

表示確認します。 TagCloud(タグクラウド)から適当なタグをクリックして、

  • 検索結果がポップアップ表示されること。
  • 検索結果からエントリをクリックすると、ポップアップ元画面にそのエントリが表示されること。

を、確認してください。
以上で、tagwireプラグインを使ったTagCloud(タグクラウド)のカスタマイズは完了です。

MovableType標準のエントリ・タグを使ったTagCloudの場合

カスタマイズ内容は、tagwireプラグインの場合と同様です。 まず、tagwireプラグインと同様、JSサーバにアップロードしてください。 そして、<head>~</head>の間に定義を追加します。

次に、TagCloud(タグクラウド)を表示しているテンプレートをポップアップ表示するよう修正します。 わたしが別なブログのサイドバーに表示させているTagCloud(タグクラウド)のコードを例にして説明します。

  1. <dl class="tagcloud">
  2.     <dt class="tagcloud-header">タグクラウド</dt>
  3.     <MTTags>
  4.         <dd class="tagcloud-tags"><a class="tags-rank<$MTTagRank$>"
  5.         href="<$MTTagSearchLink$>" onclick="OpenTagSearch(this.href); return false;"><$MTTagName$></a></dd>
  6.     </MTTags>
  7.     <dt class="tagcloud-footer"></dt>
  8. </dl>

タグのリンクを表示する部分に青い字のコードを追加しています。

次に、検索結果・テンプレートを変更します。 MovableType(ムーバブルタイプ)管理画面からブログのテンプレート一覧を表示します。 そして、画面上にある「システム」をクリックすると、コメント・プレビューなどのテンプレート一覧が表示されます。 その中から「検索結果」をクリックしてください。

タグ検索結果を表示している箇所を探します。 「検索結果表示」をキーワードに探してみてください。 その辺りにタグ検索に該当するエントリのリンクを表示するコードがあります。 そのコードを以下のように変更します。

  1. 変更前
  2. <h3><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h3>
  3.  
  4. 変更後
  5. <MTIfTagSearch>
  6.     <h3><a href="<$MTEntryPermalink$>" onclick="javascript:window.opener.location.href='<$MTEntryPermalink$>';
  7. return false;"><$MTEntryTitle$></a></h3>
  8. <MTElse>
  9.     <h3><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h3>
  10. </MTElse>
  11. </MTIfTagSearch>

検索結果のテンプレートは、他でも使用されるため上記のように<MTIfTagSearch>~</MTIfTagSearch>で囲ってあげることで、タグ検索時のみ変更する必要があります。

また、上記コードはMovableType(ムーバブルタイプ)デフォルトの検索結果のコードです。 人によってはカスタマイズしてる人もいるかと思いますが、その時は読み替えて変更してください。

一通り変更したら保存します。 最後に表示確認です。 tagwireプラグインのカスタマイズで説明した通りのことができることを確認します。

以上で、MovableType標準のエントリ・タグを使ったTagCloud(タグクラウド)のカスタマイズは完了です。

2通りのTagCloud(タグクラウド)のカスタマイズを説明しましたが、使いやすくなったでしょうか。 人によってはポップアップするの嫌だ…という人もいるかもしれませんね。

ちなみにtagwireプラグインを使ったTagCloud(タグクラウド)の作り方は、こちらのTagCloudのページを作ってみるで紹介しています。

では、SEE YOU♪

 Trackback Pings(1)

from MovableType備忘録

前々から各エントリに表示しているタグやタグクラウドからタグ検索したとき、ページ移動するのがすっごく嫌で気になってました。 そんな理由から、以前にTagCl...

 Comments(4)

#1: Posted by oscar @ September 3, 2006 [REPLY]
user-pic

こんにちは、bzbellさん。

私はFirefoxでホイールクリックが癖になっているんで、あんまり気にしてなかったけど、確かに画面移動って煩わしい時ありますね。
最近では、XHTMLでtarget属性使うなとかあるんで、どうしようか少し悩んでます。

うまく行くなら、Lightbox系のポップアップなんか面白そうと思っているのですが。

#2: Posted by bzbell @ September 3, 2006 [REPLY]
user-pic

>>1 oscar さん

こんにちわ^^

> 私はFirefoxでホイールクリックが癖になっているんで、あんまり気にしてなかったけど、確かに画面移動って煩わしい時ありますね。

わたしも使ってますが、それでも煩わしいと思うのはわたしだけですかね( ̄∇ ̄;)はは

> 最近では、XHTMLでtarget属性使うなとかあるんで、どうしようか少し悩んでます。

ありますね。
でも、こちらはわたしあまり気になってないんです。Ctrlキー押すだけだから…。

> うまく行くなら、Lightbox系のポップアップなんか面白そうと思っているのですが。

いいかも♪、です。
でも、Lightbox系のポップアップってブラウザの枠内しか移動できなくないですか( ̄∇ ̄)!?
それとも、わたしが知らないだけで方法があるとか!?

これの欠点はJSを無効にされているとまったく使えないことですかね。でも、今時はJSを無効にしてる人少ないのでは…と勝手に解釈して設置してみました(>∀< )

JSの有効/無効を判別できるのなら、今まで通りの操作にしたいです。

#3: Posted by oscar @ September 3, 2006 [REPLY]
user-pic

>でも、Lightbox系のポップアップってブラウザの枠内しか移動できなくないですか( ̄∇ ̄)!?
確かに通常のポップアップに比べれば、使える範囲が狭いのは難点ですよね。
一応HTMLを読み込んで、スクロールバー出すようなのもあるので、今度トライしてみようかな。

>JSの有効/無効を判別できるのなら、今まで通りの操作にしたいです。
JSコードの書き出しはJavascriptでやらせて、無効の時はnoscriptで対応するってので、どうでしょうかね。

#4: Posted by bzbell @ September 3, 2006 [REPLY]
user-pic

>>3 oscar さん

> JSコードの書き出しはJavascriptでやらせて、無効の時はnoscriptで対応するってので、どうでしょうかね。

あっ( ̄∇ ̄;)…言われてみればそうですね。
ボケボケでした(>∀< )

 Post a Comment

 

コメント用フィード