Smarty プラグイン設定
Smarty 拡張プラグインの設定
クラス
smarty.phpを拡張。
Smarty-3.1.11/libs/pluginsと同列の位置に拡張プラグイン置き場を設置。
PHP
require_once('Smarty.class.php');
class view_smarty extends Smarty
{
public function __construct()
{
parent::__construct();
$this->template_dir = 'C:/appli/var/templates/';
$this->compile_dir = 'C:/appli/var/templates_c/';
$this->config_dir = 'C:/appli/var/configs/';
$this->cache_dir = 'C:/appli/var/cache/';
// マイプラグイン置き場
$this->addPluginsDir('C:/appli/lib/Smarty-3.1.11/libs/myplugins/');
}
}
プラグイン
デフォルトのプラグインに合わせた命名規約(smarty_modifier_php_manual.php、smarty_modifier_php_manual())で、ファイルとメソッドをmypluginsに作成。
PHP
<?php
/**
* Smarty plugin
* @package Smarty
* @subpackage PluginsModifier
*/
/**
*
* PHP Manualへのリンクを設定
*
* @param string $string
* @return string
*/
function smarty_modifier_php_manual($string)
{
preg_match_all('/<pm>(.*?)<\/pm>/', $string, $matches, PREG_SET_ORDER);
if (! empty($matches)) {
foreach($matches as $matchkey => $matchVal) {
$function_str = str_replace('_', '-', $matchVal[1]);
$search_str[] = $matchVal[0];
$replace_str[] = "<a href=\"http://php.net/manual/ja/function." . $function_str . ".php\" target=\"_blank\" class=\"blank\">" . $matchVal[1] . "</a>";
}
return str_replace($search_str, $replace_str, $string);
}
return $string;
}
Smarty
{$str|php_manual}