殷德瑶博客
喜欢的歌,静静地听!喜欢的人,远远地看!

Emlog5.3.1前台模板预览的实现原理

殷德瑶 2015-11-15 评论 2948 次
今天因为需要一个网站前台模版切换的功能.所以就到网上找了下,发现只需要改几处代码就能实现这个功能,所以照着文章花了几分钟实现了这个前台模版自由切换的功能,代码也很简单,所以本文不谈代码,让我们来看看它是怎么实现前台模版切换的.
首页要修改的第一个地方,我们打开init.php全局项加载文件,我们可以看到这一句代码
//前台模板URL
define('TEMPLATE_URL',TPLS_URL.Option::get('nonce_templet').'/');
可以看到前台模板地址常量是通过前端视图控制类的get函数得到的.查看代码可以发现是读取的配置文件缓存在后台设置的当前使用的模版的值.打开缓存文件options.php就能看到.
我们把字段代码改为以下代码
session_start(); //开启服务端cookies功能
if(isset($_GET['theme'])){//判断地址传送过来的theme参数是否有值,也就是我们在地址后面添加的?theme=xxx中的xxx
    $theme = $_GET['theme']=='reset' ? Option::get('nonce_templet') : $_GET['theme'];//这一行判断这个值是不是reset,是的话将后台设置的前台模版名称赋值给$theme这个变量,否则将xxx赋值给它.
    $_SESSION['theme']=$theme;
}elseif(isset($_SESSION['theme'])){//如果地址传过来的theme参数没有值,则从 $_SESSION['theme']里查找值
    $theme=$_SESSION['theme'];
}else{
    $theme='';//否则theme参数为空值
}
if($theme==''){//第二个条件判断,如果theme变量没有值,使用后台设置的模版
    define('TEMPLATE_NAME', Option::get('nonce_templet'));
}else{//否则使用你输入的模版
    define('TEMPLATE_NAME', $theme);
}
define('TEMPLATE_URL', TPLS_URL.TEMPLATE_NAME.'/');//得到前台模版路径,和默认的相比多了几个判断
这是第一处需要修改的地方,还有两处分别是
前端页面入口文件index.php和微语首页 t/index.php,这两个地方都是调用后台设置的模版的.
//define('TEMPLATE_PATH', TPLS_PATH.Option::get('nonce_templet').'/');//前台模板路径,默认是获得后台设置的模版
define('TEMPLATE_PATH', TPLS_PATH.TEMPLATE_NAME.'/');//这里改为了结果判断处理的表达式
代码很简单,修改也很简单,有兴趣的可以自己试一试.

发表评论


粤ICP备15078261号 Powered by 黑暗之夜
Theme by 殷德瑶博客