Tagwireプラグインを改造して、キーワードとタグ機能を同時に使えるようにする

MT3.3から正式に取り入れられたタグ機能は、一部のMTTagがTagwireプラグイン及びTagSupplementalsと重複する部分があり、その為、今までと同様にこれらふたつを使おうとすると、Tagwireプラグインを用いて出力させるキーワードは稼動するけど、タグ機能は働かないという事態に陥ります。それを解消してみようと思います。

タグ機能を拡張してくれる
TagSupplementals Plugin.ja JP - Ogawa Code [Ogawa Code]
はインストール済みで話は進んで行きます。

Tagwireプラグインを改変する

tagwire.pl を開きます。49~59行目は以下のようになってます。

MT::Template::Context->add_container_tag(Tags => \&tags);
MT::Template::Context->add_container_tag(EntryTags => \&entry_tags);
MT::Template::Context->add_container_tag(RelatedTags => \&related_tags);
MT::Template::Context->add_tag(Tag => \&tag);
MT::Template::Context->add_tag(TagCount => \&tag_count);
MT::Template::Context->add_tag(TagDate => \&tag_date);
MT::Template::Context->add_tag(TagsTotal => \&tags_total);
MT::Template::Context->add_tag(TagsTotalSum => \&tags_total_sum);
MT::Template::Context->add_container_tag(EntriesWithTags => \&entries);
MT::Template::Context->add_container_tag(MostRelatedEntries => \&most_related_entries);
MT::Template::Context->add_global_filter(encode_urlplus => \&encode_urlplus);

以下のように書き換えます。

MT::Template::Context->add_container_tag(Tagwires => \&tags);
MT::Template::Context->add_container_tag(EntryTagwires => \&entry_tags);
MT::Template::Context->add_container_tag(RelatedTagwires => \&related_tags);
MT::Template::Context->add_tag(Tagwire => \&tag);
MT::Template::Context->add_tag(TagwireCount => \&tag_count);
MT::Template::Context->add_tag(TagwireDate => \&tag_date);
MT::Template::Context->add_tag(TagwiresTotal => \&tags_total);
MT::Template::Context->add_tag(TagwiresTotalSum => \&tags_total_sum);
MT::Template::Context->add_container_tag(EntriesWithTagwires => \&entries);
MT::Template::Context->add_container_tag(MostRelatedTagwireEntries => \&most_related_entries);
MT::Template::Context->add_global_filter(encode_urlplus => \&encode_urlplus);

テンプレート修正

今まで、MTTagsやMTTagCountを用いて出力させていたコンテナタグ・変数タグを修正します。

  • MTTags → MTTagwires
  • MTEntryTags → MTEntryTagwires
  • MTRelatedTags → MTRelatedTagwires
  • MTTag → MTTagwire
  • MTTagCount → MTTagwireCount
  • MTTagDate → MTTagwireDate
  • MTTagsTotal → MTTagwiresTotal
  • MTTagsTotalSum → MTTagwiresTotalSum
  • MTEntriesWithTags → MTEntriesWithTagwires
  • MTMostRelatedEntries → MTMostRelatedTagwireEntries

タグとキーワードの表示試験

上記をしっかり行ったら、いよいよ表示試験に移ります。
このサイトの場合、TagCloudのページはTagwire+mt-xsearchで作成されてるので、ここにタグ機能により抽出された「タグ」が出てくれれば、ふたつの機能は共存出来ていると考えられます。

このページに下記コードを書いてみる

<ul id="tag-cloud">
<MTTags>
<li class="tag">
<a class="tag level<$MTTagRank$>" href="<$MTTagSearchLink$>" title="<$MTTagName$>:<$MTTagLastUpdated$>(<$MTTagCount$>)" rel="tag"><$MTTagName$></a>
</li>
</MTTags>
</ul>

CSSファイルに以下を追記します。

/* Tag-Cloud */
ul li.tag {
	margin-right: 5px;
	display: inline;
	list-style: none;
}

li.tag a.level1 {
	font-size: 175%;
	color: #FF9900;
}

li.tag a.level2 {
	font-size: 160%;
	color: #FF9966;
}

li.tag a.level3 {
	font-size: 145%;
	color: #FFCC66;
}

li.tag a.level4 {
	font-size: 135%;
	color: #6699FF;
}

li.tag a.level5 {
	font-size: 120%;
	color: #BBBBBB;
}

li.tag a.level6 {
	font-size: 110%;
	color: #999999;
}
/*Tag-Cloud end */

以上で再構築を施すと表示されます。

[参考記事]
キーワードとタグ(1) (オラオラ) [オラオラ]

MovableType 3.3 で Tag cloud を簡単に実装する方法 - pur*log [pur*log]

▲ to Top

トラックバック(0)

▲ to Top