2011.04.04xoopsズープス
Smartyにtruncateという文字列修正の関数がある。指定した文字数で文字列を切り捨てるという便利なものなのだが、マルチバイト文字列に対してこれを使うと文字化けが起こってしまう。
xoopsの 文字を指定した文字数で切り捨てて、詳細ページへ移動させる方法として、
truncateという Smarty関数 を利用できる。
ただし、日本語のようなマルチバイト文字列に対してこの関数を利用すると文字化け(◇の黒の中に?ハテナ)が表示されたりする。
そこで、
・http://xoopscube.jp/modules/newbb/viewtopic.php?topic_id=4440&forum=17&post_id=23846
に記載のあった、 mbtruncate を利用して、適当な文字列で文字を丸める。
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* Type: modifier
* Name: mbtruncate
* Purpose: Truncate a string to a certain length if necessary,
* optionally splitting in the middle of a word, and
* appending the $etc string.
* -------------------------------------------------------------
*/
function smarty_modifier_mbtruncate($string, $length = 80, $etc = '...',
$break_words = false)
{
if ($length == 0)
return '';
if (strlen($string) > $length) {
$length -= strlen($etc);
if (!$break_words)
$string = preg_replace('/\s+?(\S+)?$/', '', mb_strcut($string, 0, $length+1));
return mb_strcut($string, 0, $length).$etc;
} else
return $string;
}
?>
をmodifier.mbtruncate.phpとして保存
ファイルは modifer.mbtruncate.php をダウンロードして
/class/smarty/plugins/modifier.mbtruncate.phpに保存
モジュールのテンプレートのタイトルやら記事やらの記述部に【|mbtruncate:30】をくっつける。
30はバイト数
例えば、d3pipeの記事タイトル
<{$entry_headline4disp}>
に
<{$entry_headline4disp|mbtruncate:30}>
とすれば、OK.
デフォルトは文字数を超えた部分は【...】が入る。
この設定は、modifier.mbtruncate.phpの
$etc = '...',
の変更で対応。
- whois ansi のCreation Date Registration Date Expiry Date とは ( xoopsズープス ) [38105 view] 2011年09月23日
- xxoops2.2.0でaltsysをインストールした後、エラーが出て、altsysモジュールが白紙のときの対処法 ( xoopsズープス ) [32316 view] 2011年12月03日
- bulletinモジュールの投稿者名とヒット数とコメント数を消す。 bulletin_item.html ( xoopsズープス ) [31733 view] 2010年06月20日
- リストタグで横並びにして、かつ、フロート(回り込み)を解除する方法(崩れる 対処法) ( xoopsズープス ) [30339 view] 2011年04月05日
- 「ページを開けません。サーバーが応答を停止しています。」の問題について ( xoopsズープス ) [29845 view] 2012年09月19日
- xoops2.2.0でaltsysをインストールした後、ブロック部分と管理ページの日付が文字化けしたときの対処法 ( xoopsズープス ) [29670 view] 2011年07月23日
- light box 2.04 close.gif loading.gifが表示されない lightbox.js ( xoopsズープス ) [28829 view] 2010年06月21日
- Picoモジュールの 「コンテンツ内容」ブロックを利用して、スマーティーを利用できるカスタムブロックを実現する方法 ( xoopsズープス ) [27770 view] 2011年07月29日
- Smartyにtruncateという文字列修正の関数がある。指定した文字数で文字列を切り捨てるという便利なものなのだが、マルチバイト文字列に対してこれを使うと文字化けが起こって... ( xoopsズープス ) [27495 view] 2011年04月04日
- fckエディタで「invalid file type」と表示されて、ファイルがアップロードできない ( xoopsズープス ) [26664 view] 2010年05月14日