注册 登录
SINOFACE|海华网 返回首页

gws110的个人空间 http://sinoface.com/?7527 [收藏] [复制] [分享] [RSS]

日志

modoer个性化地图(ZT保存)

已有 977 次阅读2009-11-23 23:04 |个人分类:网站代码保存|

modoer自带了可自定义商家模板的功能,这样就方便了区分某些特殊用户与大众。

你可以写一套自己的模板放在templates/item下,官方自带的有一个yifei的模板,你在写模板的时候可以参考。

但是后来会发现一个问题,即便写了模板,点击查看地图也会是默认的样式,那么这样就使得某些用户的特殊需求无法达到(恩恩,我遇到了这样的客户)。

先来分析下进入map页面的链接

  1. <a href="{$MOD[url]}shop_map.php?action=big&shopid=$shop[sid]" target="_blank">查看大图</a>

根据链接来看,调用的程序文件是shop/shop_map.php这个文件。从逻辑上来想,加一个判定,如果是使用我们做的模板,那么进入特定的地图页,如果不是,则进入默认的地图页。

首先打开shop_map.php来看一下本身的源代码。会在底部发现

  1. require_once MUDDER_ROOT.'header.php';
  2. require_once template($tpl_name);
  3. footer();

这三行。分别的作用应该一目了然。既然我们要特殊处理我们的模板,那么就不能加载header和footer这2个文件。先删掉或者注释掉。但是删掉或者注释掉之后,默认的地图也没有了头尾,这个回头要特殊处理一下。

接下来,我们要给一个判定的条件,来实现我们想要的东西。
回到我们的链接分析,后面传的参数有action=big&shopid=$shop[sid],shopid显而易见,那么action是干嘛的呢?
我们去shop_map.php看下,一下就豁然开朗了。
关键性的两句

  1. }elseif($action == 'big') {
  2.     $tpl_name = 'shop_mapview';


说明这个action值是用来判定模板的。
那么我们可以顺着这个思路走下去,假如我们传另一个参数进去配对另一个shopmap的模板呢?
那么我们整个复制以下代码

  1. elseif($action == 'big') {
  2.     $tpl_name = 'shop_mapview';
  3.     $shopid = (int) $shopid;
  4.     if($shopid > 0) {
  5.         $shop = getItem($shopid);
  6.         if($shop) {
  7.             //$shop['mappoint'] = trim($shop['mappoint']);
  8.             if($shop['mappoint'][0] && $shop['mappoint'][1]) {
  9.                 $shop['map'] = true;
  10.                 //$shop['mappoint'] = explode(',', $shop['mappoint']);
  11.             } else {
  12.                 $shop['map'] = false;
  13.             }
  14.             if(!$shop['map']) {
  15.                 redirect('商铺未标记,您可以再商铺页面添加标注。', 'shop.php?shopid='.$shopid);
  16.             }
  17.             $pcd = substr($shop['classcode'], 0, 2);
  18.             $shop['shopname'] .= $shop['subname'] ? "({$shop['subname']})" : '';
  19.             $shop['address'] = $_areacodes[$shop['areacode']].$shop['address'];
  20.             
  21.             $subtitle = $shop['shopname'].'_地图位置';
  22.         } else {
  23.             redirect('商铺不存在或已删除。', NULL);
  24.         }
  25.     } else {
  26.         redirect('商铺不存在。', NULL);
  27.     }
  28. }

修改其中action后面的big以及tpl_name后面的shop_mapview,至于叫什么那随便你自己开心了~

那么我们还有一个地方需要修改,改为如下(假设我把big改为了kele)

  1. <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里

到此基本大工告成。以后有别的模板,可以仿造这样修改。

别的办法我不知道是否有,而且代码的修改是否合理。只是在原有的基础上稍作修改,达到了我所期望的效果,而又避免了模板冲突的问题~

如果大家有好的方法,欢迎踊跃讨论。

 

来源:http://www.kele5240.com/2152.html


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

Archiver|手机版|小黑屋|SINOFACE|海华网  

GMT-5, 2024-4-27 10:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部