- 2009-05-22 (金) 12:49
- MovableType


- Recent(最近の)言わんといて!
はてブでmaRkさんの突っ込みがあったので修正。metaタグじゃないからスペース区切りですね。noindexやnofollowって、考え方ですよね。違う?ここはクロール出来るページを生成している訳ではないので、インデックスして欲しくないです。後rel="TAG"って、昔良く書いてた覚えがあるけど、やっぱり属性値は小文字ですか・・・
タイトルは、野田メソッドです。
始めはこのサイトへの質問。
質問は「タグクラウドの大きさが、ちっとも最近じゃない。」ことだったのですが、対応を考えているうちに、逆にエントリーアーカイブやマンスリーアーカイブも、その当時のタグの頻度が大きさに反映されていない事が、気になり始めました。
という訳で、それが「エントリータイトル」に。
つまりテンプレートみると、何でもかんでも「最近の・・・」になっているのだけれど、表示する場所によっては、その当時の状況がもっとリアルに表示されてもいいのじゃないかという訳です。
という訳で、あの頃クラウド作ってみました。
アーカイブ内では、タグクラウドに表示されるタグは、そのコンテクスト内に制限される事は、ご存じだと思います。
だから、基本的には月別アーカイブで表示されているタグは、その時に付けているタグで決まってきています。しかしながらそのタグの表示サイズ(MTTagRankの値)は、あくまでも全期間・全カテゴリーを通してのタグの出現頻度で決まっています。
その為、その時点では登場していないキーワードや、その頃はホットでは無かったキーワードが、頻出タグとして大きく表示されてしまいます。
という訳で、その当時のタグで重み付けをするように、タグクラウドを変更してみました。
コードはズバリこんな内容です。
<MTEntries><MTEntryTags><$MTTagName setvar="tagname"$><MTUnless name="seen{$tagname}"><MTSetVar name="cloudcount" key="$tagname" value="1"><MTSetVar name="seen" key="$tagname" value="1"><MTElse><MTUnless name="cloudcount{$tagname}" gt="99"><MTSetVar name="cloudcount{$tagname}" op="++"></MTUnless></MTUnless><MTSetVarBlock name="tagcloud{$tagname}"><a href="<$MTBlogURL$>tag/<$MTTagName encode_url="1"$>" title="<$MTTagCount$> Entries" rel="nofollow noindex tag"><$MTTagName$></a></MTSetVarBlock></MTEntryTags></MTEntries><MTLoop name="cloudcount" sort_by="value numeric reverse"><MTIf name="__first__"><MTSetVar name="maxcount" value="$__value__"></MTIf><MTIf name="__counter__" gt="30"><MTSetVar name="delete(cloudcount)" key="$__key__"><MTElse><MTSetVar name="mincount" value="$__value__"></MTIf></MTLoop> <dt>Tag Cloud</dt> <dd class="tagClouds"> <ul class="tagCloud"><MTLoop name="cloudcount"> <li class="level<?php echo 6-floor((log10(<$MTVar name="__value__"$>)-log10(<$MTVar name="mincount"$>))/(log10(<$MTVar name="maxcount"$>)-log10(<$MTVar name="mincount"$>))*5);?>"><$MTVar name="tagcloud{$__key__}"$></li></MTLoop> </ul> </dd>あまり抽出が多すぎてもなんなので、取り込みは100件で切り捨て。
出力に関しては、出現頻度上位30タグになってます。
重み付け部分は、実際のMTTagRankに近くなるように、PHPで計算させてます。(参考記事:タグクラウドのフォントサイズの計算式について - Open MagicVox.net)
カテゴリーは時間ベースでは無いので、件数のみ制限するだけにしましたが、もしかしたら、他カテゴリー内での出現回数は、除外する必要もあるかもしれないですね。
エントリーに関しては、その記事だけではタグクラウドにならないので、そのエントリーから遡って、15エントリーから出現頻度でタグクラウドを生成させてます。
このエントリー用は、出来ればあるイベントでのネタ用に取っておきたいので、今は公開はしません。(自分ではうまいこと出来たと思ってます)
ただテンプレート書きながら思ったのは、
<MTEntries lastn="15" offset_id="700">・・・</MTEntries>
みたいに、「EntryIDが700のエントリーから、遡って15件のエントリーを出力するとか出来ると便利だったりしないかな」という事でした。(いや、EntryID700がoffsetいくつに当たるかなんて、簡単にわからないでしょ)
検討してもらえるとうれしいなぁ。
- Newer >: アーカイブは分割する・しない
- < Older: iPhoneテンプレート・今更取り上げてみる
ping a Trackback
- TrackBack URL for this entry.(1)




スクリプトの読み込みが完了していません。
メールフォーム(Javascriptを使用していません)や、
Twitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。