一覧ページにダラダラと長い文章が入っているのは見づらい。
詳細ページに詳しく書いてあるんだから、ちょっとでいいんだよってときに
使いたいのが、Smartyの関数 「truncate」
よく使う方法は、{$string|truncate:20:"...More"}
20文字で切り捨ててその後に...More と付け加える。
ただし、日本語などのマルチバイトで使用すると
たびたび最後の文字が文字化けを起こすという残念な関数でもある。
そこで、マルチバイト対応のtruncateを作るとよい。
関数は簡単で下記のコードだけ。
<?php
//文字の切捨て(マルチバイト対応)
{$string|mb_truncate:20:"...More"}
知らずに危うく文字化け地獄にはまるところだった(笑)
いやーありがたい。
つうか、これくらい最初からSmartyにあっていいんじゃないの?
詳細ページに詳しく書いてあるんだから、ちょっとでいいんだよってときに
使いたいのが、Smartyの関数 「truncate」
よく使う方法は、{$string|truncate:20:"...More"}
20文字で切り捨ててその後に...More と付け加える。
ただし、日本語などのマルチバイトで使用すると
たびたび最後の文字が文字化けを起こすという残念な関数でもある。
そこで、マルチバイト対応のtruncateを作るとよい。
関数は簡単で下記のコードだけ。
<?php
//文字の切捨て(マルチバイト対応)
function smarty_modifier_mb_truncate($string, $length = 80, $etc = '...') {
if ($length == 0) {return '';}
if (mb_strlen($string) > $length) {
return mb_substr($string, 0, $length).$etc;
} else {
return $string;
}
}
?>
そして、上記のコードを「modifier.mb_truncate.php」という名前で保存し、
「smarty/libs/plugins」の中に入れればOK。
【ソース元】 詳細はこちら
マルチバイト文字に対応した truncate 修飾子を作る | バシャログ。
使い方はまったく同じ{$string|mb_truncate:20:"...More"}
知らずに危うく文字化け地獄にはまるところだった(笑)
いやーありがたい。
つうか、これくらい最初からSmartyにあっていいんじゃないの?

