MTEntryAuthorLinkは、ブログ記事作成者に対しリンクを付加するものです。このタグでリンクが付かなかった場合の分岐をやってみます。あとmicroformatsを少々カスタマイズします。
Vicunaテンプレートのカスタマイズを中心にやっているのですが、たまにはデフォルトのテンプレートをカスタマイズしてみることにします。
MTEntryAuthorLinkの説明は以下のページに記載されています。
さて、Movable typeデフォルトテンプレートのエントリアーカイブには、microfomatsが埋め込まれており、Operator(Firefoxアドオン)などを使うことで情報を抽出できるようになっています。
しかしながら、OperatorでMovable Typeのテンプレートで生成されたページをみますと、hcardの連絡先の部分でInvalidになっているのをよく見かけます。
これをOperatorでおこられないようにしてみよう、というわけです。
Invalidの原因と対処
OperatorでInvalidとなる原因ですが、早い話が仕様に則してない書き方をされてる、ということになります。
最も簡単な解決方法は、記事を作成できる権限のあるユーザにプロフィールでURLを設定してもらえば、Invalidとはなりません。それは、EntryAuthorLinkのshow_hcard="1"の指定によるものです。例えば、MTUserさんが、user.example.orgで設定された場合の実際のテンプレートタグの出力は、
<span class="vcard author"> <a class="fn url" href="http://mtuser.example.org">MT User</a> </span>
となっています。これが、URLおよびEmailを設定されていませんと、リンクとおよびclass属性のfn urlが表示されませんからOperatorでInvalidとなるようです。
分岐によりURLがないときvcardをつけないようにする
ということで、作成者のURLがないとき、vcardは使わない、というように分岐してみることにしました。デフォルトテンプレートを以下のように書き換えてみます。
<mt:If tag="EntryAuthorDisplayName"> <mt:SetVarBlock name="Autr"> <$mt:EntryAuthorLink show_hcard="1"$> </mt:SetVarBlock> By <mt:If name="Autr" like="href="><span class="vcard author"><mt:Else><span class="author"></mt:If><$mt:Var name="Autr" /></span> on <abbr class="published" title="<$mt:EntryDate format_name="iso8601"$>"><$mt:EntryDate format="%x %X"$></abbr> <mt:Else> ・・・・以下略・・・・
ここではAutrという変数名にEntryAuthorLinkの内容を与え、href属性があるかで判断しております。リンクがないと、vcardが付かないので、Operatorでは抽出されなくなります。細かくて伝わらないと思いますけど、複数記事作成者がいて、URLの登録を統一できないようなときなどに。
ちょっと小技で改造する
一寸だけ改造をしてみます。テンプレートを見ると、<mt:If tag="EntryAuthorDisplayName">とあることから、表示名はニックネームだろうと、決め付けてしまうならば、オプションのnicknameをつけて以下のようにしてみるとか。
<$mt:EntryAuthorLink show_hcard="1" regex_replace="/fn url/","fn nickname url"$>
あと思いつたのは、hAtom関連で、updated情報もというときに。
<abbr class="updated" title="<$mt:Date format_name="iso8601"$>">Update: <$mt:Date format="%x %X"$></abbr>
といった感じです。最後に、show_hcardの情報はMovableType.orgの以下を参考にしました。
- 参考リンク:
Comments:
コメントをどうぞ。書き込む場所が不明な場合やサイトオーナーへのコンタクトは、GuestBookまでお気軽にどうぞ
blog comments powered by Disqus