• 博客(0)
  • 资源 (1)

空空如也

ecmall插件

ecmall多店插件 <?php class SyspayModule extends IndexbaseModule { var $_datacall_mod; //数据调用模型 var $_x_mod; //需要调用的是那种数据,目前只是商品数据,以后可能会有店铺数据等等 var $_expires; //缓存到期时间 var $name_length; //保留的数据长度,大于此长度截取 var $charset; //字符编码 var $_doc_content; //输出内容 function __construct() { $this->SyspayModule(); } function SyspayModule() { parent::__construct(); $this->_datacall_mod = &af("datacall"); } function index() { $id = isset($_GET['id']) ? intval($_GET['id']) : 0; if (!$this->is_cached($id)) //检查缓存是否过期 { $data = $this->_datacall_mod->getOne($id); if (empty($data)) { return; } $this->name_length = $data['name_length']; $this->_expires = time() + $data['cache_time']; $this->charset = in_array($data['content_charset'], array('utf-8', 'gbk', 'big5')) ? $data['content_charset'] : CHARSET; if ($data['type'] == 'goods') //调用数据的类型为商品 { $this->_x_mod = &m('goods'); $conditions = ''; if (!empty($data['spe_data']['keywords'])) //关键字的SQL { if (strpos($data['spe_data']['keywords'], ' ') > 0) { $tmp_str = explode(' ', $data['spe_data']['keywords']); $tmp_con = ''; foreach ($tmp_str as $val) { $tmp_con .= "OR g.goods_name LIKE '%{$val}%' OR g.brand LIKE '%{$val}%'"; } $tmp_con = substr_replace($tmp_con, '', 0, 2); $conditions .= 'AND ('. $tmp_con . ')'; } else { $conditions .= "AND (g.goods_name LIKE '%{$data['spe_data']['keywords']}%' OR g.brand LIKE '%{$data['spe_data']['keywords']}%')"; } unset($tmp_con); } if (!empty($data['spe_data']['cate_id'])) //商品分类的where { $gcategory = &m('gcategory'); $ids = $gcategory->get_descendant($data['spe_data']['cate_id']); $conditions .= " AND g.cate_id " . db_create_in($ids); unset($ids); } if (!empty($data['spe_data']['brand_name'])) //品牌where { $conditions .= " AND g.brand LIKE '%{$data['spe_data']['brand_name']}%'"; } if (!empty($data['spe_data']['max_price'])) //价格最大值where { $conditions .= " AND gs.price < {$data['spe_data']['max_price']}"; } if (!empty($data['spe_data']['min_price'])) //价格最小值where { $conditions .= " AND gs.price > {$data['spe_data']['min_price']}"; } /* if (!empty($data['spe_data']['recommend'])) //是否推荐 { $conditions .= " AND g.recommended = 1"; }*/ $order = ''; if (!empty($data['spe_data']['sort_order'])) //排序where { $order = in_array($data['spe_data']['sort_order'], array('add_time','last_update')) ? "g.".$data['spe_data']['sort_order']." ".$data['spe_data']['asc_desc'] : "gst.".$data['spe_data']['sort_order']." ".$data['spe_data']['asc_desc']; } $con = array( 'conditions' => "1=1 ". $conditions, 'order' => $order, ); if (!empty($data['amount'])) { $con['limit'] = "0, ".$data['amount']; } $result = $this->_x_mod->get_list($con); if (empty($result)) { return ; } $this->js_write($data['header']); $body = $data['body']; foreach ($result as $val) { $code = str_replace('{goods_name}', empty($this->name_length) ? $val['goods_name'] : sub_str($val['goods_name'], $this->name_length), $body); $code = str_replace('{goods_full_name}', $val['goods_name'], $code); $code = str_replace('{goods_price}', $val['price'], $code); $code = str_replace('{goods_url}', site_url() . '/index.php?app=goods&amp;id='. $val['goods_id'], $code); $code = str_replace('{goods_image_url}', site_url() . '/' . $val['default_image'], $code); $content .= $code; unset($code); } $this->js_write($content); $this->js_write($data['footer']); $this->save_cache($id); } } $this->doc_output(); } function is_cached($id) { $file_path = ROOT_PATH . '/temp/js/datacallcache'. $id .'.js'; if (is_file($file_path)) { $content = file_get_contents($file_path); $idx = strpos($content , "%^@#!*"); $str = substr($content, 0 , $idx); $arr = explode('|', $str); $this->charset = $arr[0]; $this->_expires = $arr[1]; if (time() > $this->_expires) { return false; } else { $this->_doc_contents = substr($content, $idx + 6); return true; } } else { return false; } } function js_write($str) { $str = str_replace("\r", "", $str); $str = str_replace("\n", "", $str); $str = str_replace("'", "\\'", $str); $this->_doc_contents .= 'document.write(\''. $str .'\');'; } function save_cache($id) { $file_path = ROOT_PATH . '/temp/js/datacallcache'. $id .'.js'; ecm_mkdir(dirname($file_path)); file_put_contents($file_path, "{$this->charset}|{$this->_expires}%^@#!*" . $this->_doc_contents); } function doc_output() { header("Content-type:text/html;charset=" . $this->charset , true); $tmp_str = ecm_iconv(CHARSET, $this->charset, $this->_doc_contents); $output = $this->charset == 'utf-8' ? stripslashes($tmp_str) : $tmp_str; echo $output; } } ?>

2015-09-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除