記事本文
教える Movable Type
渦さん ( Pop or Die ) がよく教えるはてなダイアリー活動をなされているので、まねっこ ( 何か最近まねっこ多いな ) して教える Movable Type 活動でもしてみようかと。
おそらく過去の記事でも同じようなことをやっているものがあると思うので、それについてもキーワード設定を暇を見てやろうと思います。
あと
寡聞にしてこの方を存じ上げなかった
と他人さん ( 他人の脳内 ) が仰っていましたが、他人さんと渦さんって接点が無かったのかと勝手にびっくり。
どちらも芸歴 (?) 長いのでどっかでニアミスしてそうだと思うのですが。
さてそれじゃ今回の教える Movable Type 活動。 Movable Type 3.2 - 858-861n の 858 さんの疑問に勝手に答えます。 というか久々に書き込もうと思ったらホスト規制で書き込めないから、こちらに書いて携帯から URI だけ書いて誘導しようというそんな心持ち。 そこまでする必要があるかというと多分無いと思います。 それと今日は久しぶりにスレッドを見て答えているだけなので、今後同様にスレッド内の疑問に答える確率は低いかも。
さて、スレッドに書かれていることを簡単にまとめてみると、 「カテゴリのソートをするために、カテゴリ名の先頭に番号を振っているけれど、それだと <$MTEntryTrackbackData$> にその番号が付いたカテゴリ名のまま出力されてしまうのでカスタマイズしたい」 ということだと思います。 勘違いだったらごめんなさい。
MTEntryTrackbackData の正体
以前概要が記述されるのは Feed ? meta 要素 ? RDF メタデータ ? - はてなダイアリーの head 要素内の RDF メタデータには dc:description が含まれていないでも書きましたが、 MTEntryTrackbackData はショートカットタグの一種で、次のような記述をテンプレート内に行ったのと同様の効果を一つのタグを書くことで実現します。 ( 今後、 Movable Type 自体のバージョンアップにより内容が変わる可能性があります。 )
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
rdf:about="<$MTEntryPermalink$>"
trackback:ping="<$MTEntryTrackbackLink$>"
dc:title="<$MTEntryTitle encode_xml="1"$>"
dc:identifier="<$MTEntryPermalink$>"
dc:subject="<$MTEntryCategory$>"
dc:description="<$MTEntryExcerpt$>"
dc:creator="<$MTEntryAuthor$>"
dc:date="<$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>" />
</rdf:RDF>
-->
カテゴリ名をトリミングする
さて、次にカテゴリ名をトリミングする方法を考えてみたいと思います。 858 さんがどのようなカテゴリ名にしているか分かりませんが、勝手に次のようなカテゴリ名にしていると仮定します。
- 001-000-mt
- 001-001-template
- 001-002-plugin
- 002-000-life
- 002-001-food
- 002-002-hobby
サブカテゴリを使っている可能性もあるので、 3 桁 - 3 桁の通し番号を振った例です。 Movable Type にはグローバル・タグ・アトリビュートとして trim_to という属性が用意されており、最初の N 文字を取り出すということが可能になっています。 しかし、この場合は最初の N 文字を取り出すよりも最初の N 文字だけ省きたいということですので、 trim_to では対応できません。
そこで、プラグインを使って機能を拡張することにします。 The blog of H.Fujimoto:カテゴリを任意の順番に並べ替えるに、そのまま実現方法が書いていますが、この記事中の cutfirstchar.pl を使えばカテゴリ名から最初の N 文字だけを省くことが可能になります。
解決例
前項のプラグインを用いてカスタマイズする例を考えてみます。
カテゴリのソートのために - まで含め 8 桁の通し番号を振っていますので、
cutfirstchar="8"
として通し番号をカットして出力するようにしてみましょう。
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
rdf:about="<$MTEntryPermalink$>"
trackback:ping="<$MTEntryTrackbackLink$>"
dc:title="<$MTEntryTitle encode_xml="1"$>"
dc:identifier="<$MTEntryPermalink$>"
dc:subject="<$MTEntryCategory cutfirstchar="8"$>"
dc:description="<$MTEntryExcerpt$>"
dc:creator="<$MTEntryAuthor$>"
dc:date="<$MTEntryDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$>" />
</rdf:RDF>
-->
強調部分が書き加えた箇所です。 858 さんがやりたいことを私が曲解していなければこれで解決すると思います。

