[Codeigniter-users] OpenPNEのSmarty_plugin活用術

Back to archive index

Kenichi Ando neo.k****@gmail*****
2009年 3月 9日 (月) 21:34:59 JST


安藤です。

ティーブレイク小話。

OpenPNEには日本語での有用なSmartyのプラグインがありますね。
その資産をCIで活用しない手は無いですね。
(EC CUBEなんかにも日本向けの有用な汎用関数がありました)

OpenPNE/lib/smarty_pluginsか
OpenPNE/webapp/lib/smarty_plugins

遅いSmartyを使うことなく、ヘルパーで同じことができます。

例えば、t_truncate。
これは、文字列に対して、何文字以上になったら「...(指定可)」と省略表示するものです。

trancate_hepler.phpとファイルを作り、system/application/helpersに入れます。

そのまま使うか、自分好みの書き方に変えましょうね。
(例ではそのままコピペしています)

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('trucate'))
{
	function truncate($string, $length = 80, $etc = '...', $break_words = true)
	{
		if ($length == 0)
			return '';

		$from = array('&amp;', '&lt;', '&gt;', '&quot;', '&#039;');
		$to   = array('&', '<', '>', '"', "'");
		$string = str_replace($from, $to, $string);

		if (strlen($string) > $length) {
			$length -= strlen($etc);
			if (!$break_words)
				$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1));

			$string = mb_strimwidth($string, 0, $length) . $etc;
		}
		return htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
	}
}


/* End of file date_helper.php */
/* Location: ./system/helpers/date_helper.php */

使い方:

$this->load->helper(array('truncate');
でロードします。

truncate('文字列', '100')

などですぐに使えます。
ヘルパーは関数で書けますので、やったことない方はチャレンジしましょう!

//安藤




Codeigniter-users メーリングリストの案内
Back to archive index