1月14日,現在進行で作業しているのですが,どこまでやったか分からなくなりつつあるので,やるべきことと,終わったことをメモしつつ進めることにします。やりたいことは次の通り。
(追記)1月15日に,とりあえず終わりました。あとはスタイルシートの調整をしようと思ってますが,後回し。
●タグリストページの作成
・新しく更新された順にタグを全件表示するリストページを作る
・タグ全件リストページを表示時は,サイドバーにABC順のタグリストを表示
●サイドバーのタグ関連ウィジェットの表示周り
・タグ検索時にはタグリストを表示して,タグクラウドを表示させないようにする
・通常の検索時にはタグクラウドを表示して,タグリストを表示させない
・サイドバーのタグクラウドは更新が新しい順に15個まで
●新しく更新された順にタグを全件表示するリストページを作る
タグリストページは,新しくインデックステンプレートを作りました。ここでは,TagSupplementalsプラグインを利用しているので,これのインストールが前提。ソースは以下のとおり。赤字の部分がポイントです。
<MTSetVar name="tag_list_page" value="1">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" id="sixapart-standard">
<head>
<$mt:Include module="HTMLヘッダー"$>
<title>タグ一覧 - <$mt:BlogName encode_html="1"$></title>
</head>
<body id="<$mt:BlogTemplateSetID$>" class="mt-page-archive <$mt:Var name="page_layout"$>">
<div id="container">
<div id="container-inner">
<$mt:Include module="バナーヘッダー"$>
<div id="content">
<div id="content-inner">
<div id="alpha">
<div id="alpha-inner">
<div class="page-asset asset">
<div class="asset-header">
<div class="asset-title">
<h1 id="page-title" class="asset-name">タグ一覧</h1>
</div>
</div>
<div class="asset-content">
<div class="tag-list-content">
<MTTags>
<MTSetVarBlock name="tags"><$MTTagName$></MTSetVarBlock>
<MTSetVarBlock name="sorthash" key="$tags"><$MTTagLastUpdated format="%Y%m%d%H%M%S"$></MTSetVarBlock>
<MTSetVarBlock name="tag_rank" key="$tags"><$MTTagRank max="6"$></MTSetVarBlock>
<MTSetVarBlock name="tag_search_link" key="$tags"><$mt:TagSearchLink encode_js="1"$></MTSetVarBlock>
</MTTags>
<ul class="tag_list">
<MTLoop name="sorthash" sort_by="value numeric reverse">
<li class="rank-<MTGetVar name="tag_rank" key="$__key__"> widget-list-item">
<a href="javascript:void(0)" onclick="location.href='<MTGetVar name="tag_search_link" key="$__key__">';return false;" rel="tag"><MTGetVar name="__key__"></a>
</li>
</MTLoop>
</ul>
</div>
</div>
<div class="asset-footer">
<div class="asset-meta">
</div>
</div>
</div>
</div>
</div>
<$mt:Include module="サイドバー"$>
</div>
</div>
<$mt:Include module="バナーフッター"$>
</div>
</div>
</body>
</html>
これを適当なファイル名を指定してテンプレートを構築すればOK。
●タグ全件リストページを表示時は,サイドバーにABC順のタグリストを表示
まず,ABC順のタグリストを表示するだけの機能を持ったウィジェットを作成。以下のとおり。
<div class="widget-search widget">
<div class="widget-tags widget">
<h3 class="widget-header"><a href="http://www.tawawa-s.com/blog/tags.php">タグリスト</a></h3>
<div class="widget-content">
<ul>
<mt:Tags>
<li><a href="javascript:void(0)" onclick="location.href='<$mt:TagSearchLink encode_js="1"$>';return false;"><$mt:TagName$> (<$mt:TagCount$>)</a></li>
</mt:Tags>
</ul>
</div>
</div>
</div>
次に,↑のウィジェットを加えたタグ全件リスト用のウィジェットグループを作成。ここでは,”タグ全件リスト”というウィジェットセット名にしています。
それで,昨日作った「どのページでどのウィジェットセットを表示させるかを指定するウィジェット」を以下のように変更。タグ全件リストのテンプレートの先頭で,tag_list_page変数を真にしてあるので,それをMTIF構文で指定すればタグ全件リスト表示時のみ,そのウィジェットセットが表示されるようになります。
<mt:If name="module_category_archives">
<$mt:WidgetSet name="カテゴリアーカイブ"$>
<mt:ElseIf name="module_category-monthly_archives">
<$mt:WidgetSet name="カテゴリ月別アーカイブ"$>
<mt:ElseIf name="datebased_monthly_archive">
<$mt:WidgetSet name="月別アーカイブ"$>
<mt:ElseIf name="search_results">
<$mt:WidgetSet name="検索結果"$>
<mt:ElseIf name="tag_list_page">
<$mt:WidgetSet name="タグ全件リスト"$>
<mt:Else>
<$mt:WidgetSet name="メインインデックス"$>
</mt:If>
●タグ検索時にはタグリストを表示して,タグクラウドを表示させないようにする
タグ検索時にはABC順のタグリストを表示する仕様になっていますが,一緒にタグクラウドも表示されてしまうので少々ウザい。そこで,タグ検索の場合はタグクラウドウィジェットを表示しないようにしました。
まず,通常の検索とタグ検索をMTIfで判別できるように,検索テンプレートの冒頭へ,
<mt:IfStraightSearch>を追加。<mt:IfStraightSearch>~</mt:IfStraightSearch>は無くても良いんですが将来的に何か使うかも知れないので付けておきました(笑。
<MTSetVar name="straight_search" value="1">
</mt:IfStraightSearch>
<mt:IfTagSearch>
<MTSetVar name="tag_search" value="1">
</mt:IfTagSearch>
続いてタグクラウドウィジェットに,以下の赤字部分を追加。
<MTUnless name="tag_search">これでタグ検索時のみタグクラウドが表示されなくなります。
<mt:If tag="Tags">
<div class="widget-tag-cloud widget">
<h3 class="widget-header">タグ</h3>
<div class="widget-content">
<ul>
<mt:Tags top="0">
<li class="rank-<$mt:TagRank max="10"$>"><a href="javascript:void(0)" onclick="location.href='<$mt:TagSearchLink encode_js="1"$>';return false;" rel="tag"><$mt:TagName$></a></li>
</mt:Tags>
</ul>
</div>
</div>
</mt:If>
</MTUnless>
●通常の検索時にはタグクラウドを表示して,タグリストを表示させない
テンプレートのままでOK。
●サイドバーのタグクラウドは更新が新しい順に15個まで
せっかく↑で修正したタグクラウドウィジェットですが,この条件に合うように表示するために,さらに内容を変更。タグ全件リストウィジェットと同じ仕組みで作っただけです。以下のとおり。
<MTUnless name="tag_search">
<mt:If tag="Tags">
<MTTags>
<MTSetVarBlock name="tags"><$MTTagName$></MTSetVarBlock>
<MTSetVarBlock name="sorthash" key="$tags"><$MTTagLastUpdated format="%Y%m%d%H%M%S"$></MTSetVarBlock>
<MTSetVarBlock name="tag_rank" key="$tags"><$MTTagRank max="10"$></MTSetVarBlock>
<MTSetVarBlock name="tag_search_link" key="$tags"><$mt:TagSearchLink encode_js="1"$></MTSetVarBlock>
</MTTags>
<div class="widget-tag-cloud widget">
<h3 class="widget-header"><a href="http://www.tawawa-s.com/blog/tags.php">タグ</a></h3>
<div class="widget-content">
<ul>
<MTLoop name="sorthash" sort_by="value numeric reverse">
<MTIf name="__counter__" le="15">
<li class="rank-<MTGetVar name="tag_rank" key="$__key__">">
<a href="javascript:void(0)" onclick="location.href='<MTGetVar name="tag_search_link" key="$__key__">';return false;" rel="tag"><MTGetVar name="__key__"></a>
</li>
</MTIf>
</MTLoop>
<li class="tag_cloud_more_icon"><a href="http://www.tawawa-s.com/blog/tags.php">More</a></li>
</ul>
</div>
</div>
</mt:If>
</MTUnless>
なお,TagSupplementalsプラグインを使った更新日順のタグリスト表示については,Movable Type 備忘録さんの「ハッシュ変数を使って最近のタグ一覧表示」を参考にしています。この場を借りてお礼申し上げます。ただ,そのままだと,うちの環境ではちょっとうまく動かなかったので少しだけカスタマイズ。
具体的には,リンク先のMTTagSearchLinkの使い方だとちゃんとタグ検索が動作しなかったので,tag_search_link{タグ名}という変数にURLを放り込んで使っています。


コメントする