1.择选广告关联的信息页面的时候,如果是手工页面,也就是不在信息平台里面的,请填写该页面的url链接;
2.如果是信息平台里面的信息页面,可以选择填页面的url链接,也可以填它在信息平台里的信息内容ID,就是信息标题旁边那个ID;
3.信息平台里面的信息有url的话,建议优先填url,没有url的信息再填信息ID;
1.查看当前页面是否在广告系统里关联了广告;
2.如果有关联广告,则直接读取该广告到网前;
3.如果没有关联广告,并且当前页面信息存在于信息平台,则查看它的父节点是否关联了广告,优先读取最接近的父级节点的广告;
<script type="text/javascript">
function get_advertise()
{
var url="<?php echo site_url('index.php/diy_tour/ajax/get_advertise'); ?>";
var pageurl=location.href;
$.post(url,{"pageurl":pageurl},function(json_data) {
if (!json_data) return false;
var json_data = $.parseJSON(json_data);
for (var key in json_data) {
var ad_place=json_data[key].ad_place;
var ad_content='<div class="advertise_elem" data-ad_id="'+json_data[key][ad_place].adp_id+'">'+json_data[key][ad_place].ad_content+'</div>';
//在对应的地方填充广告
if (ad_place=='right_nav_bottom'){
$(".circuit_price").after(ad_content);
}else if (ad_place=='centent_bottom'){
$("#included").after(ad_content);
}
}
});
}
//保存广告点击数据
$("body").on('click','.advertise_elem a',function(event){
event.preventDefault();
var link=$(this).attr('href');
var adp_id=$(this).parents('.advertise_elem').attr('data-ad_id'),
url="<?php echo site_url('index.php/diy_tour/ajax/set_advertise_rate'); ?>";
$.post(url,{"adp_id":adp_id},function(result) {
location.href=link;
});
});
</script>
public function get_advertise()
{
$this->load->model('Information_model');
$pageurl=$this->input->post('pageurl');
$place=$this->input->post('place')?$this->input->post('place'):false;
//获取当前页面关联的广告
$pageurl=str_replace('http://'.$this->config->item('Site_Domain'),'',$pageurl);
//$pageurl=str_replace('http://202.103.68.34:9091','',$pageurl);
$advertise=$this->Information_model->get_advertise_by_url($pageurl,$place);
$ad_list=$ad_lists=array();
foreach ($advertise as $key => $value) {
foreach ($value as $k => $v) {
$ad_list[$key][$k]=$v;
}
$ad_lists[]=array("ad_place"=>$key,$key=>$ad_list[$key]);
}
echo json_encode($ad_lists);
}
public function set_advertise_rate()
{
$this->load->model('Information_model');
$adp_id=$this->input->post('adp_id');
if ($this->Information_model->set_advertise_rate($adp_id)) {
echo 1;
}
else{
echo 0;
}
}
/**
* $pageurl:需要展示广告的页面url
* $place: 广告位
* $loadview:0 返回广告列表,1 直接输出广告内容
*/
public function get_advertise_by_url($pageurl,$place=false)
{
//获取当前页面关联的广告
$data=array();
$site_code=$this->config->item('Site_Code');
$ad_list=$this->get_advertise($site_code,$pageurl,$place);
//尝试根据当前页面的信息ID来提取广告
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;
$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()));
$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?'ic_id':'ic_url';
$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,
adp_id
FROM infoAdvertise
LEFT JOIN infoAdvertisePage ON ad_id=adp_ad_id
LEFT JOIN infoContents ON adp_ic_url=convert(nvarchar, $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 AND ad_expire>? $mapsql";
$query = $this->HT->query($sql,array($site_code,$site_code,$ad_expire));
$result = $query->result();
return $result;
}
public function set_advertise_rate($adp_id)
{
if (empty($adp_id)) {
return false;
}
$sql = "UPDATE infoAdvertisePage
SET adp_click=adp_click+1
WHERE adp_id=?";
$result = $this->HT->query($sql, array($adp_id));
return $result;
}