Phpcms V9广告位循环数据调用方法详解
作者:欧阳 发布时间:2020年09月07日 阅读: 2,410 分类:日积月累
在以往的Phpcms教程中,都没有涉及到广告位的调用和设置,今天,在这里将分享CMSYOU最近在项目中对Phpcms V9广告位循环数据调用的一些实际经验,总结出来作为Phpcms V9广告位循环数据调用方法详解,在此与大家分享。
你对Phpcms V9广告位的了解有多少?在没看本文之前,你可能不会用,或者只用到过其中一两种,而在本教程之后,相信你对Phpcms V9广告位有更深的了解,希望你能灵活运用!下面CMSYOU从广告位的分类,到广告位循环调用做一个系统的详细介绍!
Phpcms V9广告位循环数据调用方法详解
一、Phpcms V9广告位的几种类别及对应数据表
Phpcms V9广告位管理位置:模块 > 模块管理 > 广告 >,打开后你可以系统默认已经了N个广告位。
Phpcms V9广告位当前有矩形横幅、固定位置、漂浮移动、对联广告、图片轮换广告、图片列表广告、文字广告和代码广告这8种类型。
细心的朋友可以发现这8个广告位对应的英文(代号)为:
banner、fixure、float、couplet、imagechange、imagelist、text
实际上,这也是对应的广告位数据库中的对应数据表的type名称,了了解对应的代码后,对之后的数据调用有很大的好处。
二、Phpcms V9广告位的调用方式:
Phpcms V9默认有三种调用方式,依次介绍如下。
2.1、JS调用代码(PHP动态调用):
{show_ad(1, 1)}
2.2、JS调用代码(PHP动态调用):
2.3、JS调用代码(JS静态调用)
不知道大家发现没有,官方给出来的默认调用方法,只能调用广告位,不能调用广告位中具体的广告条数和广告数据。那么,怎么对某一个广告位下面的广告数据进行循环调用呢?
下面这一调用方法就可以做到对Phpcms V9广告多条调用:
{pc:get sql="SELECT setting FROM cmsyou_poster WHERE spaceid = 12 AND type='images' AND disabled=0 ORDER BY listorder ASC" num="5"}
{loop $data $r}
<?php
eval("\$narry =$r[setting];");
?>
<a href="{$narry[1][linkurl]}" target="_blank"><img src="{$narry[1][imageurl]}" alt="{$narry[1][alt]}" width="690" height="200" /></a>
{/loop}
{/pc}
代码中,需要根据你自己的数据库表头前缀修改“cmsyou_poster ”,以便查找到数据库,不然会出错。
这一方法来自设计联盟的文章Phpcms V9图片轮换广告多条调用方法,不过这里只是对Phpcms V9图片轮换广告这一类别。下面第四条将详细讲解各类型的广告位循环调用数据方法。
三、Phpcms V9广告位循环数据调用方法和扩展应用。
3、Phpcms V9广告位循环数据调用方法
在上面的调用代码中,关键的参数有:spaceid = 12、type='images'、{$narry1}这三种类。
经过CMSYOU对数据的分析,不同广告类型的循环数据名称不同,下面依次列出来:
3.1、广告type有三种:text、image、flash,矩形横幅、固定位置、漂浮移动、对联广告、图片轮换广告、图片列表广告、文字广告和代码广告这8类广告中不同类别可选不同的type。
3.2、循环数据中$narry可以调用的数据有这么几个:
{$narry[1][paddleft]}、{$narry1}、{$narry[1][linkurl]}、{$narry1}、{$narry[1][alt]}、{$narry1}、{$narry1}
注:如果是对联广告会有{$narry[2][linkurl]}、{$narry2}、{$narry2}。
4、Phpcms V9广告位自定义PC标记调用方法
在这里再次就PC V9的广告位调用提供一个新的方法:自定义修改content_tag类,做到pc标签循环调用。
这个方法来源自PC V9自身的调用方式{pc:content 参数名="参数值" 参数名="参数值" 参数名="参数值"},比如:
{pc:content action="lists" cache="3600" num="20" page="$page"}{/pc}
这里的action,比较常见的是:栏目category、列表lists、推荐位position、相关文章relation、热门排行点击量hits、可视化pc_tag,具体方法函数文件:phpcms/modules/content/classes/content_tag.class.php,大家可以看下里边的函数写法。
根据这些函数写法,不防为广告位也自定义pc标记调用函数:
/**
* 广告位循环调用
* @param $data
*/
public function ads($data) {
$this->dbads = pc_base::load_model('poster_model');
$where = '1';
$spaceid = $data['spaceid'] ? intval($data['spaceid']) :"";
if ($spaceid) $where .= " AND `spaceid`='".$spaceid."' AND disabled='0'" ;
$return= $this->dbads->select($where, '*', $data['limit'], $data['order']);
$result=array();
foreach ($return AS $value){
$result[$value['id']]['title']=$value['name'];
$temp=string2array($value['setting']);
$result[$value['id']]['alt']=$temp['1']['alt'];
$result[$value['id']]['imageurl']=$temp['1']['imageurl'];
$result[$value['id']]['url']=$temp['1']['linkurl'];
}
return $result;
}
注:上面的函数代码加在最后类的结尾前,上一个函数结尾处。
这样,前台模板文件就可以这样调用指定id、指定条数的广告数据了:
{pc:content action="ads" spaceid="9" order="listorder ASC" num="5"}
{loop $data $r}
<li><a class="item" href="{$r['url']}" title="{$r['alt']}" target="_blank"><img class="bg" src="{$r['imageurl']}" alt="{$r['alt']}" /></a></li>
{/loop}
{/pc}
如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。
如果您觉得本文还不错,欢迎分享/打赏本文。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!