A-A+
ecshop实现不同域名显示不同模板界面
一个 ecshop 的程序可以有多种不同的模板,我们知道 ecshop 采用的是 smarty 模板框架程序,设置当前使用模板的是 $smarty->template_dir,指定路径即可,现在主要做的就是判断语句,以及更改 smarty 指定的模板路径、编译目录和缓存目录等几个方面。
首先夏日博客先来说下实现的效果功能吧,比如我们要访问 xiariboke.net 访问的是 红色模板,如果要访问 xiariboke.net 则访问的是绿色模板,其实这一步还是比较容易判断的,记得以前做过一个加密的 php 程序,如果是当前域名则正常访问,如果不是则进行跳转,这个道理其实是一样的,哪么我们就先来进行一下模板的判断吧,打开 init.php 文件,指定模板部分更改为:
- if($_SERVER['HTTP_HOST'] == 'xiariboke.net') {
- $_CFG['template'] = 'default';
- }else{
- $_CFG['template'] = '360';
- }
这句的意思就是如果当前域名为 xiariboke.net 的话,则使用默认模板,否则的话则使用 360 模板,好了,紧接着往下看代码:
- $smarty->template_dir = ROOT_PATH . 'themes/' . $_CFG['template'];// 设置当前网站到底用的是那一个模板(所以在这之前通过逻辑操作,让不同的页面调用不同的模板)。
好了,模板的判断已经做好了,接着我们要设置编译文件存放的目录了,因为 smarty 是要进行缓存 php 文件的,不同的模板应缓存在不同的位置,否则就会调用模板出乱,打开 cls_template.php 找到如下代码:
- $name = $this->compile_dir .'/'. basename($filename) . '.php'; // 编译文件存放的目录
修改成不同的编译文件存放目录,代码如下:
- global $_CFG; // 通过全局变量调用当前域名访问的模板
- $name = $this->compile_dir . '/' .$_CFG['template'].'/'. basename($filename) . '.php';
如果我们开启了静态缓存,需要扩展的地方如下,同样打开 cls_template.php,找到如下代码:
- $hash_dir = $this->cache_dir .'/' . substr(md5($cachename), 0, 1); //静态文件存放的目录
扩展为:
- global $_CFG;
- $hash_dir = $this->cache_dir . '/'.$_CFG['template'].'/' . substr(md5($cachename), 0, 1);
好了,其它所有的文件都不用修改,基本上没有破坏原有的 ecshop 机制。