调用信息平台中的广告系统

master
cyc 8 years ago
parent 6b444395a1
commit 45c8363e26

@ -10,6 +10,40 @@ class ajax extends CI_Controller {
echo $html;
}
//ajax调用广告
public function getads(){
$data = array();
$guideUrl = $this->input->get_post('murl');
if($guideUrl == NULL){
//$guideUrl = '/liuzhou/';
exit('err!');
}
$adcont = false;
if($adcont){
}else{
$this->load->model('Advertise_model', 'mAds');
//新广告系统
$infoads = $this->mAds->get_advertise_by_url($guideUrl);
//print_r($infoads);
if($infoads == NULL){
die('err');
}
foreach ($infoads as $key => $value) {
if(isset($value->adp_ic_url)){
$data[$key]['url'] = $value->adp_ic_url;
}
$data[$key]['adid'] = $value->ad_id;
$data[$key]['content'] = $value->ad_content;
$data[$key]['expire'] = date('Y-m-d',$value->ad_expire);
$data[$key]['status'] = $value->ad_status;
}
$adcont = json_encode($data);
}
header("Content-type: application/json");
die($adcont);
}
}

@ -0,0 +1,130 @@
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Advertise_model extends CI_Model
{
function __construct() {
parent::__construct();
$this->HT = $this->load->database('HT', TRUE);
}
/**
* function 用于提取指定页面关联的广告
* $pageurl:需要展示广告的页面url
* $place: 广告位
*/
public function get_advertise_by_url($pageurl, $place = false) {
//获取当前页面关联的广告
$data = array();
$site_code = Site_Code;
//$site_code = 'gm';
$ad_list = $this->get_advertise($site_code, $pageurl, $place);
//尝试根据当前页面的信息ID来提取广告
//CH统一只用URL查询
if (empty($ad_list)) {
$info_detail = $this->get_detail($pageurl);
if (empty($info_detail)) return array();
$ad_list = $this->get_advertise($site_code, $pageurl, $place, $info_detail->ic_id);
}
//当前页面没有关联广告的话,取父级节点的广告代替
if (empty($ad_list)) {
//获取父级信息节点关联的适用于当前页面的广告
$parent_ads = $this->get_parent_ads($info_detail->is_path, $site_code, time(), $place);
if (empty($parent_ads)) {
//url匹配不到数据的话尝试用父节点的信息内容ic_id来匹配
$parent_ads = $this->get_parent_ads($info_detail->is_path, $site_code, time(), $place, true);
}
if (empty($parent_ads)) return array();
//重新排序,方便提取直接父节点的广告数据
$temp = array();
foreach ($parent_ads as $p) {
$temp[$p->is_id][] = $p;
}
//优先获取直接父节点关联的广告,以此类推
$is_id_array = explode(',', $info_detail->is_path);
krsort($is_id_array);
foreach ($is_id_array as $isid) {
if ($isid != '' && isset($temp[$isid])) {
$ad_list = $temp[$isid];
break;
}
}
}
//返回当前页面所有广告位的广告,按广告索引
$advertise = array();
if (!empty($ad_list)) {
foreach ($ad_list as $ad) {
$advertise[$ad->ad_place] = $ad;
}
}
return $advertise;
}
//获取指定页面指定位置的广告
public function get_advertise($site_code, $adp_ic_url, $ad_place = false, $ic_id = false) {
$adp_ic_url = $ic_id ? $ic_id : $adp_ic_url;
//当url匹配不到数据的时候该用信息内容ID匹配
$mapsql = $ad_place == false ? '' : " AND ad_place='$ad_place' ";
$sql = "SELECT adp_id,
adp_ic_url,
adp_forself,
ad_id,
ad_is_id,
ad_title,
ad_content,
ad_expire,
ad_place,
ad_sitecode,
ad_status,
ad_createtime
FROM infoAdvertise LEFT JOIN infoAdvertisePage ON ad_id=adp_ad_id
WHERE ad_status=1 AND adp_ic_url='$adp_ic_url' AND ad_sitecode=? AND ad_expire>? $mapsql";
$query = $this->HT->query($sql, array($site_code, time()));
//echo '<!--'.$this->HT->last_query().'-->';
$result = $query->result();
return $result;
}
//获取父级信息节点关联的可以用于子节点的广告
public function get_parent_ads($path, $site_code, $ad_expire, $ad_place = false, $icid_flag = false) {
$compare_string = $icid_flag ? 'convert(nvarchar, ic_id)' : 'ic_url';
//当url匹配不到数据的时候该用信息内容ID匹配
$path = $path . "0";
$mapsql = $ad_place == false ? '' : " AND ad_place='$ad_place' ";
$sql = " SELECT ad_id,
ad_is_id,
ad_title,
ad_content,
ad_expire,
ad_place,
ad_sitecode,
ad_status,
ad_createtime,
is_id
FROM infoAdvertise
LEFT JOIN infoAdvertisePage ON ad_id=adp_ad_id
LEFT JOIN infoContents ON adp_ic_url={$compare_string}
LEFT JOIN infoStructures ON ic_id=is_ic_id AND is_id in ($path)
WHERE ad_sitecode=? and is_sitecode=? and ad_status=1 AND (adp_forself=1 or (adp_forself = 3 AND adp_ic_url LIKE {$compare_string})) AND ad_expire>? $mapsql";
$query = $this->HT->query($sql, array($site_code, $site_code, $ad_expire));
//echo '<!--' . $this->HT->last_query() . '-->';
$result = $query->result();
return $result;
}
public function get_detail($url) {
$sql = "SELECT TOP 1 * FROM infoContents a INNER JOIN infoStructures b ON a.ic_id = b.is_ic_id WHERE ic_url = ? AND ic_status = 1 AND ic_sitecode = 'ah'";
$query = $this->HT->query($sql, array($url));
$row = $query->row();
return $row;
}
}

@ -4,4 +4,31 @@
<a href="<?php echo $v->ic_url;?>" title="<?php echo $v->ic_url_title;?>"><li class="<?php echo $key===0?"":"";?>"><?php echo $v->ic_url_title;?></li></a>
<?php }?>
</ul>
</ul>
<script>
$(function(){
var purl = window.location.pathname || '';
if(purl == ''){
return false;
}
$.ajax({
url:'/ajax_get/getads/',
type:'POST',
data:{murl:purl},
error:function(){
console.log('err 500');
},
success:function(obj){
if(obj == 'err'){
return false;
}
if(typeof obj.left_nav_top != 'undefined'){
$('.ArticleList').prepend(obj.left_nav_top.content);
}
if(typeof obj.left_nav_bottom != 'undefined'){
$('.ArticleList').append(obj.left_nav_bottom.content);
}
}
});
})
</script>
Loading…
Cancel
Save