ecshop模板堂|ecshop自动解析模板中图片,css,js的路径

更新时间:2019-05-10    来源:js教程    手机版     字体:

【www.bbyears.com--js教程】

ecshop会自动解析模板文件中的图片,css文件,js文件的路径,但并不是所有的图片,css文件,js文件的路径都会替换,
例如在dwt模板文件中有:

 代码如下


将会自动替换成

能自动替换路径的css文件一定要以路径css开头的css文件

例如在dwt模板文件中有:

 代码如下

<script type="text/javascript" src="js/index.js"></script>

将会被自动替换为

<script type="text/javascript" src="themes/模板目录名/js/index.js"></script>

能自动替换路径的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("/(  
 /* 修正js目录下js的路径 */
 $source = preg_replace("/(<script\s(?:type|language)=["|\"]text\/javascript["|\"]\ssrc=["|\"])(?:\.\/|\.\.\/)?(js\/[a-z0-9A-Z_\-\.]+\.(?:js|vbs)["|\"]><\/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"
 );

注意事项:虽然说是自动解析了但是也是有要前提了,比如说ecsho.css会被解析成themes/模板目录/ecshop.css哦
页css/ecshop.css会被解析成themes/模板/css/ecshop.css哦,而像images会被解析而img不会解析, js会被解析而javascript不会解析,具体例子如下图

 

ecshop自动解析模板中图片,css,js的路径

本文来源:http://www.bbyears.com/wangyezhizuo/50304.html

热门标签

更多>>

本类排行