热搜词
发表于 2016-11-20 16:40:54 | 显示全部楼层 |阅读模式
江湖家居门户系统至尊版,版本和更新日期为:VERSION:ZXF2.0   RELEASE:20150520。

bug现象为:
家居商城广告不显示,查看源代码发现所有广告图片的url地址,都不含网站域名,相关代码如下:

<img src="./attachs/photo/201511/20151124_B64DB03451DC8E97181F1F6E91A4D3F1.jpg" alt="商城首页轮转广告2" text="商城首页轮转广告2"  width="980" height="250"/>

造成访问家居商城首页时,所有广告图片实际地址自动加上当前域名,变成
  1. http://www.域名.com/mall/attachs/photo/201511/20151124_B64DB03451DC8E97181F1F6E91A4D3F1.jpg
复制代码

这样的地址,真实地址实为
  1.   http://www.域名.com/attachs/photo/201511/20151124_B64DB03451DC8E97181F1F6E91A4D3F1.jpg
复制代码


解决方法:用江湖家居门户系统至尊版_20150818版中的 \system\models\adv\adv.mdl.php 替换同名文件即了。

此文件代码如下 :

  1. <?php
  2. /**
  3. * Copy Right IJH.CC
  4. * Each engineer has a duty to keep the code elegant
  5. * Author @shzhrui<Anhuike@gmail.com>
  6. * $Id: adv.mdl.php 14902 2015-08-12 10:17:00Z xiaorui $
  7. */

  8. if(!defined('__CORE_DIR')){
  9.     exit("Access Denied");
  10. }

  11. class Mdl_Adv_Adv extends Mdl_Table
  12. {   
  13.    
  14.     protected $_table = 'adv';
  15.     protected $_pk = 'adv_id';
  16.     protected $_cols = 'adv_id,theme,theme_id,page,title,from,limit,config,desc,tmpl,orderby,audit,closed,dateline';
  17.     protected $_orderby = array('orderby'=>'ASC', 'adv_id'=>'DESC');
  18.     protected $_pre_cache_key = 'adv-adv-list';

  19.     protected static $_allow_from = array('text'=>'文字广告','photo'=>'图片广告','product'=>'产品广告','flash'=>'Flash广告','lunzhuan'=>'轮转广告','script'=>'代码广告');


  20.     public function detail($adv_id, $closed=false)
  21.     {
  22.         if(!$adv_id = intval($adv_id)){
  23.             return false;
  24.         }else if(!$detail = $this->adv($adv_id)){
  25.             return false;
  26.         }else{
  27.             $detail['items'] = K::M('adv/item')->items_by_adv($adv_id);
  28.         }
  29.         return $detail;
  30.     }
  31.    
  32.     public function adv($adv_id)
  33.     {
  34.             if(!$adv_id = intval($adv_id)){
  35.                     return false;
  36.             }else if($items = $this->fetch_all()){
  37.                     return $items[$adv_id];
  38.             }
  39.             return false;
  40.     }

  41.     public function adv_by_name($name)
  42.     {
  43.         if(!$name = trim($name)){
  44.             return false;
  45.         }else if($items = $this->fetch_all()){
  46.             foreach($items as $k=>$v){
  47.                 if($v['title'] == $name){
  48.                     return $v;
  49.                 }
  50.             }
  51.         }
  52.         return false;
  53.     }

  54.     public function from_list()
  55.     {
  56.         return self::$_allow_from;
  57.     }

  58.     public function block($params, $tmpl, $smarty)
  59.     {
  60.         if($adv_id = intval($params['adv_id'])){
  61.             if(!$detail = $this->detail($adv_id)){
  62.                 return false;
  63.             }
  64.             $adv = $detail;
  65.         }else if($params['name']){
  66.             if(!$adv = $this->adv_by_name($params['name'])){
  67.                 return false;
  68.             }else if(!$detail = $this->detail($adv['adv_id'])){
  69.                 return false;
  70.             }           
  71.         }else{
  72.             return false;
  73.         }
  74.         $adv['GUID'] = K::GUID('adv');
  75.         $nums = intval($params['limit']);
  76.         $order = strtolower($params['order']);
  77.         $order = in_array($order,array('asc','desc','rand')) ? $order : "asc";
  78.         if($items = $detail['items']){
  79.             $adv_item_attr = '';
  80.             if(in_array($adv['from'], array('photo', 'product', 'lunzhuan','falsh'))){
  81.                 if($adv['config']['width']){
  82.                     $adv_item_attr .= ' width="'.$adv['config']['width'].'"';
  83.                 }
  84.                 if($adv['config']['height']){
  85.                     $adv_item_attr .= ' height="'.$adv['config']['height'].'"';
  86.                 }
  87.             }
  88.             $item_list = array();
  89.             foreach($items as $k=>$v){
  90.                 if(empty($v['audit'])){
  91.                     continue;
  92.                 }else if($v['stime'] && ($v['stime'] > __TIME)){
  93.                     continue;
  94.                 }else if($v['ltime'] && ($v['ltime'] < __TIME)){
  95.                     continue;
  96.                 }else if($params['city_id']){
  97.                     if($params['city_id'] != $v['city_id']){
  98.                         continue;
  99.                     }
  100.                 }
  101.                 if($v['target']){
  102.                     $v['a_attr'] = ' title="'.$v['title'].'" target="'.$v['target'].'"';
  103.                 }
  104.                 $v['item_attr'] = $adv_item_attr;
  105.                 $item_list[$k] = $v;
  106.             }
  107.             if(empty($item_list)){
  108.                 return false;
  109.             }
  110.             $item_list = array_values($item_list);
  111.             if('desc' == $order){
  112.                 $item_list = array_reverse($item_list);
  113.             }else if('rand' == $order){
  114.                 shuffle($item_list);
  115.             }
  116.             if($nums > 0){
  117.                 $item_list = array_slice($item_list,0,$nums);
  118.             }
  119.             if(empty($tmpl)){
  120.                 $tmpl = $adv['tmpl'];
  121.                 $tmpl = str_replace(array('[loop]', '[/loop]'), array('<{foreach $items as $item}>', '<{/foreach}>'), $tmpl);
  122.                 $data = $smarty->tpl_vars;
  123.                 $smarty->assign('adv', $adv);
  124.                 $smarty->assign('items', $item_list);
  125.                 $content = $smarty->fetch("string:{$tmpl}");
  126.                 $smarty->tpl_vars = $data;
  127.             }else{
  128.                 $smarty->assign('adv', $adv);
  129.                 $content = '';
  130.                 foreach($item_list as $item){
  131.                     $smarty->assign('item', $item);
  132.                     $content .= $smarty->fetch("string:{$tmpl}");
  133.                 }               
  134.             }
  135.             return $content;
  136.         }
  137.         return false;
  138.     }   

  139.     public function create($data, $checked=false)
  140.     {
  141.         if(!$checked && !($data = $this->_check($data))){
  142.             return false;
  143.         }
  144.         $data['dateline'] = __CFG::TIME;
  145.         if($adv_id = $this->db->insert($this->_table, $data, true)){
  146.             $this->flush();
  147.         }
  148.         return $adv_id;
  149.     }

  150.     public function update($adv_id, $data, $checked=false)
  151.     {
  152.         if(!$adv_id = intval($adv_id)){
  153.             return false;
  154.         }else if(!$checked && !($data = $this->_check($data,  $adv_id))){
  155.             return false;
  156.         }
  157.         if($ret = $this->db->update($this->_table, $data, $this->field($this->_pk, $adv_id))){
  158.             $this->flush();
  159.         }
  160.         return $ret;
  161.     }

  162.     protected function _format_row($row)
  163.     {
  164.         $row['config'] = unserialize($row['config']);
  165.         $row['from_title'] = self::$_allow_from[$row['from']];
  166.         if(empty($row['tmpl'])){
  167.             $row['tmpl'] = file_get_contents(__CORE_DIR.'models/adv/tmpl/'.$row['from'].'.html');
  168.         }
  169.         return $row;
  170.     }

  171.     protected function _check($data, $adv_id=null)
  172.     {
  173.         unset($data['adv_id'], $data['dateline']);
  174.         if(!$adv_id || isset($data['title'])){
  175.             if(empty($data['title'])){
  176.                 $this->err->add(' 广告位名称不能为空', 401);
  177.                 return false;
  178.             }else if($adv = K::M('adv/adv')->adv_by_name($data['title'])){
  179.                 if(!$adv_id || $adv_id != $adv['adv_id']){
  180.                     $this->err->add(' 广告位名称不能重复', 402);
  181.                     return false;                       
  182.                 }
  183.             }
  184.         }
  185.         if(!$adv_id && empty($data['theme'])){
  186.                 $data['theme'] = 'default';
  187.         }
  188.         if(!$adv_id || isset($data['from'])){
  189.             $from_list = self::$_allow_from;
  190.             $from = (string)$data['from'];
  191.             if(empty($from_list[$from])){
  192.                 $data['from'] = 'text';
  193.             }         
  194.         }
  195.         if(isset($data['config'])){
  196.             $data['config'] = serialize($data['config']);
  197.         }
  198.         if(isset($data['orderby'])){
  199.             $data['orderby'] = (int)$data['orderby'];
  200.         }
  201.         if(isset($data['audit'])){
  202.             $data['audit'] = $data['audit'] ? 1 : 0;
  203.         }
  204.         return parent::_check($data);
  205.     }        

  206. }
复制代码


下载地址:
adv.mdl_江湖家居V6.0至尊版_20150818.rar (2.05 KB, 下载次数: 227)
全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-10-5 10:53 , Processed in 0.206210 second(s), 29 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team