<$MTEntryTrackbackData$> をカスタマイズしたい & カテゴリを任意の順番でソートしたい

http://hxxk.jp/2005/11/13/2022

記事データ

投稿者

望月真琴

投稿日時

2005-11-13T20:22+09:00

タグ
概要

<$MTEntryTrackbackData$> がどのような仕組みになっているか、その内容を変更したい場合はどうすれば良いかという Tips と、カテゴリを名前順ではなく任意の順番でソートするための Tips を使って教える Movable Type 活動。

リプライ

2 件のリプライがあります。

記事本文

教える 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 さんがどのようなカテゴリ名にしているか分かりませんが、勝手に次のようなカテゴリ名にしていると仮定します。

  1. 001-000-mt
    1. 001-001-template
    2. 001-002-plugin
  2. 002-000-life
    1. 002-001-food
    2. 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 さんがやりたいことを私が曲解していなければこれで解決すると思います。

リプライ

2 件のリプライが送られています。

2005-11-15T17:04+09:00 - 858

丁寧にお答えくださってありがとうございました。 カテゴリーの頭に降っている番号はズバリ6桁でしたから、それも当たっていて驚きます; はやり、MTEntryTrackbackData の場所に吐き出されたあとのRDFを書き換えるしか、方法がないのかもしれませんね。 このRDFのテンプレートがどこかにありましたら、そこを書き換えればいいものと思ったのですが、そうはいかないのですね; 重ねてお礼を申し上げます。 どうもありがとうございました。

2005-11-16T21:08+09:00 - 真琴

6 桁はまあ適当です :-) 何らかの .pm ファイルを書き換えれば &#60;&#36;MTEntryTrackbackData &#36;&#62; をそのまま使えるかもしれませんが、柔軟性を考えて展開後のタグを記述した方が良いと思います。

この記事に対するご意見やご質問、ご感想などありましたらこのフォームに簡潔に記入して下さい。 簡潔に記入できない場合や、関連記事にてご意見をお寄せいただく場合は、ご自身の weblog にて記事を書かれた上で あてにトラックバックとして送信してください。

記入フォーム

補足情報

著作、講演、制作実績など