灰儿 发表于 2016-11-20 16:40:54

江湖家居V6.0至尊版_20150520_家居商城广告不显示bug

江湖家居门户系统至尊版,版本和更新日期为:VERSION:ZXF2.0   RELEASE:20150520。

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

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

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

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

此文件代码如下 :

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

if(!defined('__CORE_DIR')){
    exit("Access Denied");
}

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

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


    public function detail($adv_id, $closed=false)
    {
      if(!$adv_id = intval($adv_id)){
            return false;
      }else if(!$detail = $this->adv($adv_id)){
            return false;
      }else{
            $detail['items'] = K::M('adv/item')->items_by_adv($adv_id);
      }
      return $detail;
    }
   
    public function adv($adv_id)
    {
            if(!$adv_id = intval($adv_id)){
                  return false;
            }else if($items = $this->fetch_all()){
                  return $items[$adv_id];
            }
            return false;
    }

    public function adv_by_name($name)
    {
      if(!$name = trim($name)){
            return false;
      }else if($items = $this->fetch_all()){
            foreach($items as $k=>$v){
                if($v['title'] == $name){
                  return $v;
                }
            }
      }
      return false;
    }

    public function from_list()
    {
      return self::$_allow_from;
    }

    public function block($params, $tmpl, $smarty)
    {
      if($adv_id = intval($params['adv_id'])){
            if(!$detail = $this->detail($adv_id)){
                return false;
            }
            $adv = $detail;
      }else if($params['name']){
            if(!$adv = $this->adv_by_name($params['name'])){
                return false;
            }else if(!$detail = $this->detail($adv['adv_id'])){
                return false;
            }         
      }else{
            return false;
      }
      $adv['GUID'] = K::GUID('adv');
      $nums = intval($params['limit']);
      $order = strtolower($params['order']);
      $order = in_array($order,array('asc','desc','rand')) ? $order : "asc";
      if($items = $detail['items']){
            $adv_item_attr = '';
            if(in_array($adv['from'], array('photo', 'product', 'lunzhuan','falsh'))){
                if($adv['config']['width']){
                  $adv_item_attr .= ' width="'.$adv['config']['width'].'"';
                }
                if($adv['config']['height']){
                  $adv_item_attr .= ' height="'.$adv['config']['height'].'"';
                }
            }
            $item_list = array();
            foreach($items as $k=>$v){
                if(empty($v['audit'])){
                  continue;
                }else if($v['stime'] && ($v['stime'] > __TIME)){
                  continue;
                }else if($v['ltime'] && ($v['ltime'] < __TIME)){
                  continue;
                }else if($params['city_id']){
                  if($params['city_id'] != $v['city_id']){
                        continue;
                  }
                }
                if($v['target']){
                  $v['a_attr'] = ' title="'.$v['title'].'" target="'.$v['target'].'"';
                }
                $v['item_attr'] = $adv_item_attr;
                $item_list[$k] = $v;
            }
            if(empty($item_list)){
                return false;
            }
            $item_list = array_values($item_list);
            if('desc' == $order){
                $item_list = array_reverse($item_list);
            }else if('rand' == $order){
                shuffle($item_list);
            }
            if($nums > 0){
                $item_list = array_slice($item_list,0,$nums);
            }
            if(empty($tmpl)){
                $tmpl = $adv['tmpl'];
                $tmpl = str_replace(array('', ''), array('<{foreach $items as $item}>', '<{/foreach}>'), $tmpl);
                $data = $smarty->tpl_vars;
                $smarty->assign('adv', $adv);
                $smarty->assign('items', $item_list);
                $content = $smarty->fetch("string:{$tmpl}");
                $smarty->tpl_vars = $data;
            }else{
                $smarty->assign('adv', $adv);
                $content = '';
                foreach($item_list as $item){
                  $smarty->assign('item', $item);
                  $content .= $smarty->fetch("string:{$tmpl}");
                }               
            }
            return $content;
      }
      return false;
    }   

    public function create($data, $checked=false)
    {
      if(!$checked && !($data = $this->_check($data))){
            return false;
      }
      $data['dateline'] = __CFG::TIME;
      if($adv_id = $this->db->insert($this->_table, $data, true)){
            $this->flush();
      }
      return $adv_id;
    }

    public function update($adv_id, $data, $checked=false)
    {
      if(!$adv_id = intval($adv_id)){
            return false;
      }else if(!$checked && !($data = $this->_check($data,$adv_id))){
            return false;
      }
      if($ret = $this->db->update($this->_table, $data, $this->field($this->_pk, $adv_id))){
            $this->flush();
      }
      return $ret;
    }

    protected function _format_row($row)
    {
      $row['config'] = unserialize($row['config']);
      $row['from_title'] = self::$_allow_from[$row['from']];
      if(empty($row['tmpl'])){
            $row['tmpl'] = file_get_contents(__CORE_DIR.'models/adv/tmpl/'.$row['from'].'.html');
      }
      return $row;
    }

    protected function _check($data, $adv_id=null)
    {
      unset($data['adv_id'], $data['dateline']);
      if(!$adv_id || isset($data['title'])){
            if(empty($data['title'])){
                $this->err->add(' 广告位名称不能为空', 401);
                return false;
            }else if($adv = K::M('adv/adv')->adv_by_name($data['title'])){
                if(!$adv_id || $adv_id != $adv['adv_id']){
                  $this->err->add(' 广告位名称不能重复', 402);
                  return false;                     
                }
            }
      }
      if(!$adv_id && empty($data['theme'])){
                $data['theme'] = 'default';
      }
      if(!$adv_id || isset($data['from'])){
            $from_list = self::$_allow_from;
            $from = (string)$data['from'];
            if(empty($from_list[$from])){
                $data['from'] = 'text';
            }         
      }
      if(isset($data['config'])){
            $data['config'] = serialize($data['config']);
      }
      if(isset($data['orderby'])){
            $data['orderby'] = (int)$data['orderby'];
      }
      if(isset($data['audit'])){
            $data['audit'] = $data['audit'] ? 1 : 0;
      }
      return parent::_check($data);
    }      

}


下载地址:

页: [1]
查看完整版本: 江湖家居V6.0至尊版_20150520_家居商城广告不显示bug