指定した文字数以降をカットして「...」をつける方法

Movable Type でブログ記事の上にパンくずリストを表示させるとき、ブログ記事のタイトルが長いと少しうっとうしい気がします。

trim_to01.jpg

上の画像は、現在制作中のオリジナルテンプレートのタイトル部分です。デザインセンスが無いせいもありますが、かなりうっとうしいですね。

そこで、指定した文字数以降をカットして「...」をつけるようにカスタマイズしてみました。

ちなみに、8/13現在で使用している vicuna CMS のテンプレートはいじっていないのでご注意を。

このカスタマイズの方法としては、MT のプログラム側にちょこっと手を入れる方法もあるようですが(参考:MT4で、trim_toの制限文字数超えたときだけ"..."を付ける方法。 | 京の路)、今回はテンプレートで実現してみました。しかも簡単です。

今回は、パンくずリストのブログ記事タイトルの「20文字」以降をカットして「...」にしますので、パンくずリスト内のブログ記事タイトルを表示するMTタグの部分をカスタマイズします。

[ブログ記事タイトルを表示するMTタグ]
<$mt:EntryTitle$>

このMTタグで出力される文字列の指定文字数以降をカットするには、グローバルモディファイアである trim_to モディファイアを使用します。

<$mt:EntryTitle trim_to="20"$>

これで「20」文字以降はカットされます。

このままだとただ単にカットされるだけなので、この後ろに「...」を付けます。

<$mt:EntryTitle trim_to="20"$>...

さて、これだと20文字以下の場合でも「...」が表示されてしまうので、20文字を境に条件分岐します。

まず、グローバルモディファイア count_characters を使い、ブログ記事タイトルの文字数をカウントし、それを変数 charaCount に代入します。

<mt:SetVarBlock name="charaCount"><$mt:EntryTitle count_characters="1"$></mt:SetVarBlock>

この変数 charaCount が20文字を超えるか、20文字以下かで条件分岐します。

<mt:SetVarBlock name="charaCount"><$mt:EntryTitle count_characters="1"$></mt:SetVarBlock>
<mt:If name="charaCount" gt="20">
    <$mt:EntryTitle trim_to="20"$>...
<mt:Else>
    <$mt:EntryTitle$>
</mt:If>

好みの差はあれど、けっこうすっきりしましたね。

trim_to02.jpg

20文字以下の場合はそのまま表示されます。

trim_to03.jpg

以上です。

【2008-08-14 追記】

家に帰って『Movable Type 4.2 パーフェクトガイド』を見てたら、もろにこのカスタマイズが載っていました。

  • このエントリーをはてなブックマークに追加
Just a second...