modoer自带了可自定义商家模板的功能,这样就方便了区分某些特殊用户与大众。
你可以写一套自己的模板放在templates/item下,官方自带的有一个yifei的模板,你在写模板的时候可以参考。
但是后来会发现一个问题,即便写了模板,点击查看地图也会是默认的样式,那么这样就使得某些用户的特殊需求无法达到(恩恩,我遇到了这样的客户)。
先来分析下进入map页面的链接
- <a href="{$MOD[url]}shop_map.php?action=big&shopid=$shop[sid]" target="_blank">查看大图</a>
根据链接来看,调用的程序文件是shop/shop_map.php这个文件。从逻辑上来想,加一个判定,如果是使用我们做的模板,那么进入特定的地图页,如果不是,则进入默认的地图页。
首先打开shop_map.php来看一下本身的源代码。会在底部发现
- require_once MUDDER_ROOT.'header.php';
- require_once template($tpl_name);
- footer();
这三行。分别的作用应该一目了然。既然我们要特殊处理我们的模板,那么就不能加载header和footer这2个文件。先删掉或者注释掉。但是删掉或者注释掉之后,默认的地图也没有了头尾,这个回头要特殊处理一下。
接下来,我们要给一个判定的条件,来实现我们想要的东西。
回到我们的链接分析,后面传的参数有action=big&shopid=$shop[sid],shopid显而易见,那么action是干嘛的呢?
我们去shop_map.php看下,一下就豁然开朗了。
关键性的两句
- }elseif($action == 'big') {
- $tpl_name = 'shop_mapview';
说明这个action值是用来判定模板的。
那么我们可以顺着这个思路走下去,假如我们传另一个参数进去配对另一个shopmap的模板呢?
那么我们整个复制以下代码
- elseif($action == 'big') {
- $tpl_name = 'shop_mapview';
- $shopid = (int) $shopid;
- if($shopid > 0) {
- $shop = getItem($shopid);
- if($shop) {
- //$shop['mappoint'] = trim($shop['mappoint']);
- if($shop['mappoint'][0] && $shop['mappoint'][1]) {
- $shop['map'] = true;
- //$shop['mappoint'] = explode(',', $shop['mappoint']);
- } else {
- $shop['map'] = false;
- }
- if(!$shop['map']) {
- redirect('商铺未标记,您可以再商铺页面添加标注。', 'shop.php?shopid='.$shopid);
- }
- $pcd = substr($shop['classcode'], 0, 2);
- $shop['shopname'] .= $shop['subname'] ? "({$shop['subname']})" : '';
- $shop['address'] = $_areacodes[$shop['areacode']].$shop['address'];
- $subtitle = $shop['shopname'].'_地图位置';
- } else {
- redirect('商铺不存在或已删除。', NULL);
- }
- } else {
- redirect('商铺不存在。', NULL);
- }
- }
修改其中action后面的big以及tpl_name后面的shop_mapview,至于叫什么那随便你自己开心了~
那么我们还有一个地方需要修改,改为如下(假设我把big改为了kele)
- <a href="{$MOD[url]}shop_map.php?action=kele&shopid=$shop[sid]" target="_blank">查看大图</a>
那么,点击这个自然就会转到了你kele这个action对应的tpl_name模板了。
接着我们来解决map显示页面。因为我们刚才去掉了头尾2个部分,所以我们在做map页面的时候需要自己写一个头尾进去,这样整个地图页也就个性化了,而默认的模板也去掉了头尾,所以也要做修改,自己头部和尾部的文件写到templates/shop_mapview.htm里
到此基本大工告成。以后有别的模板,可以仿造这样修改。
别的办法我不知道是否有,而且代码的修改是否合理。只是在原有的基础上稍作修改,达到了我所期望的效果,而又避免了模板冲突的问题~
如果大家有好的方法,欢迎踊跃讨论。