本文转载自http://blog.youkuaiyun.com/gounsa/article/details/45724529
前段时间在写一个小项目中需要修改一些后台模板,由于用户前台模板insert_scripts函数是经过修改的,导致后台引入js脚本不通用,在不改变ecshop模板smarty机制的前提下,就需要另外再添加一个相同的函数来供后台模板调用JS脚本。这里记录下方法,以备忘记!
涉及修改文件:includes/cls_template.PHP、includes/lib_common.php
1、includes/cls_template.php中找到
function smarty_insert_scripts($args)
在该函数下方新添加一个smarty_insert_site_scripts函数
/*处理后台页面js文件的引入 add by g*/
function smarty_insert_site_scripts($args)
{
static $scripts = array();
$arr = explode(',', str_replace(' ', '', $args['files']));
$str = '';
foreach ($arr AS $val)
{
if (in_array($val, $scripts) == false)
{
$scripts[] = $val;
if ($val{0} == '.')
{
$str .= '<script type="text/javascript" src="' . $val . '"></script>';
}
else
{
$str .= '<script type="text/javascript" src="js/' . $val . '"></script>';
}
}
}
return $str;
}
继续在该文件下找到代码
case 'insert_scripts':
$t = $this->get_para(substr($tag, 15), 0);
return '<?php echo $this->smarty_insert_scripts(' . $this->make_array($t) . '); ?>';
break;
在该条件语句下方添加代码
//后台页面js文件引入方法 add by g
case 'insert_site_scripts':
$t = $this->get_para(substr($tag, 15), 0);
return '<?php echo $this->smarty_insert_site_scripts(' . $this->make_array($t) . '); ?>';
break;
2、includes/lib_common.php文件中同样找到
function smarty_insert_scripts($args)
在该函数下方同样新添加一个smarty_insert_site_scripts函数
/**
* 处理后台页面js文件的引入 add by g
*
* @access public
* @param string $files
* @return void
*/
function smarty_insert_site_scripts($args)
{
static $scripts = array();
$arr = explode(',', str_replace(' ','',$args['files']));
$str = '';
foreach ($arr AS $val)
{
if (in_array($val, $scripts) == false)
{
$scripts[] = $val;
if ($val{0} == '.')
{
$str .= '<script type="text/javascript" src="' . $val . '"></script>';
}
else
{
$str .= '<script type="text/javascript" src="js/' . $val . '"></script>';
}
}
}
return $str;
}
3、后台模板引用方法
{insert_site_scripts files="selectzone.js,colorselector.js"}