ecshop自动解析模板文件中的图片,css文件,js文件的路径
php相关 /
2014年03月12日 15时14分 /
9094人浏览
ecshop会自动解析模板文件中的图片,css文件,js文件的路径,但并不是所有的图片,css文件,js文件的路径都会替换,
例如在dwt模板文件中有:
将会自动替换成
能自动替换路径的css文件一定要以路径css开头的css文件
例如在dwt模板文件中有:
将会被自动替换为
能自动替换路径的js文件一定要以路径js开头的js文件
例如在dwt模板文件中有:
将会被自动替换为
能自动替换路径的图片文件一定要以路径img开头的图片文件
这种自动解析方便我们可以把这些css,js,img和模板放在一起而不用考虑实际的路径
ecshop对图片,CSS,JavaScript的路径替换原则可以参看include/cls_template.php文件里面的smarty_prefilter_preCompile()的最后几行正则替换:
/* 在头部加入版本信息 */
$source = preg_replace('//i', "\r\n", $source);
/* 修正css路径 */
$source = preg_replace('/(<\/script>)/', '\1' . $tmp_dir . '\2', $source);
/* 更换编译模板的编码类型 */
$source = preg_replace('/]*?>\r?\n?/i', '' . "\n", $source);
}
/**
* 处理库文件
*/
elseif ($file_type == '.lbi')
{
/* 去除meta */
$source = preg_replace('/\r?\n?/i', '', $source);
}
/* 替换文件编码头部 */
if (strpos($source, "\xEF\xBB\xBF") !== FALSE)
{
$source = str_replace("\xEF\xBB\xBF", '', $source);
}
$pattern = array(
'//', // 替换smarty注释
'//', // 替换不换行的html注释
'/(href=["|\'])\.\.\/(.*?)(["|\'])/i', // 替换相对链接
'/((?:background|src)\s*=\s*["|\'])(?:\.\/|\.\.\/)?(images\/.*?["|\'])/is', // 在images前加上 $tmp_dir
'/((?:background|background-image):\s*?url\()(?:\.\/|\.\.\/)?(images\/)/is', // 在images前加上 $tmp_dir
'/([\'|"])\.\.\//is', // 以../开头的路径全部修正为空
);
$replace = array(
'\1',
'',
'\1\2\3',
'\1' . $tmp_dir . '\2',
'\1' . $tmp_dir . '\2',
'\1'
);