「続きを読む」をカスタマイズ
users今回のブログ合宿では、エントリーよりも普段なかなかできない細かなカスタマイズを念頭に作業を進めております。意外とこういう地味な作業が楽しいわてくし。
まず最初に取り掛かったのは「続きを読む」の仕様変更。もともとフィードは全文配信派なので「続きを読む」はあまり使わないのですが、映画のネタバレだったり、画像貼りまくって重いエントリーなんかは時々「続きを読む」で隠してます。
ただ、せっかく「続きを読む」を設定していても、フィードだと全文配信されてしまっていたのでネタバレ防止もまったく意味なし。というわけでまずはフィードにも「続きを読む」が反映されるようにしてみます。
Movable Typeの管理画面から「テンプレート」「RSS 2.0」を開いてカスタマイズ開始。今までの設定はこうでした。
<$MTEntryBody encode_xml="1" convert_breaks="1"$>
これだと「続きを読む」にかかわらず全文配信してしまうので、まずはきちんと「続きを読む」が反映されているエントリーのテンプレートを見ると、MTEntryIfExtendedの文字を発見。さっそくGoogleさまに問い合わせてみると、「エントリーに追記があればその内容を表示するMTタグ」とのこと。(ちなみにマニュアル、「コンテナのん内容を」になってますよと一応書いておく)
Movable Type 3.2 マニュアル - テンプレート・ タグ
http://www.sixapart.jp/movabletype/manual/3.2/mtmanual_tags.html
で、まずはそのままMTEntryIfExtendedを入れてみる。
<$MTEntryBody encode_xml="1" convert_breaks="1"$>
<$MTEntryIfExtended$>
<p class="entry-more-link">
<a href="<$MTEntryPermalink$>#more">続きを読む "<$MTEntryTitle$>" »</a>
</p>
</MTEntryIfExtended>
テンプレートを保存するとエラーが出るのでもう一度良く見ると、エントリーのテンプレートとの違いを発見。エントリーのテンプレートは
<$MTEntryBody>
<$MTEntryIfExtended$>
なのに、RSSの場合は
<$MTEntryBody encode_xml="1" convert_breaks="1"$>
<#MTEntryIfExtended$>
となっている。そうか、XMLに変換する記述が必要なのね、ということで以下のように修正。
<$MTEntryBody encode_xml="1" convert_breaks="1"$>
<$MTEntryIfExtended convert_breaks="1"$>
<a href="<$MTEntryPermalink$>#more">続きを読む "<$MTEntryTitle$>" »</a>
</MTEntryIfExtended>
MTEntryIfExtendedにXMLの記述を追加した上で、RSSなのでPタグも排除。そして貼り付けてみるとフィードでも無事動作です。わーい。Atomもエントリー部分は記述同じだったので問題なく設定できました。
もう1つ「続きを読む」で気になっていたのは、初期設定だと、エントリーの最後に#moreがついてしまうこと。エントリーのURLがバラけてしまってあまり美しくない、そのエントリーをソーシャルブックマークないしブックマークするときにもちょっと不便。
実際にテンプレートを見てみるとこうなってました。
<$MTEntryBody$>
<MTEntryIfExtended>
<p class="entry-more-link">
<a href="<$MTEntryPermalink$>#more">続きを読む "<$MTEntryTitle$>" »</a>
</p>
</MTEntryIfExtended>
単に#moreをMTEntryPermalinkにくっつけているのでそれを解除。ただ、#moreの場合はリンクをクリックした際に続きの部分から表示されますが、MTEntryPermalinkの場合は冒頭から表示されるので「続きを読む」という言葉はいささかそぐわない。なので文章も「このエントリーを全部読む」に変更。これならエントリーが冒頭から表示されたときの違和感も多少やわらぐだろうし、何より自分が「続きを読む」で見るときはエントリーの最初から読みたかったりもするので。この仕様に違和感あるなどご感想ありましたらどしどしいただけると助かります。