您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
discuz X3.2自定义广告代码示例
乐菱2025-07-20Discuz教程已有人查阅
导读dz自身是支持自定义广告位的归属于自定义类别,在广告位图标上不能够醒目的显示而且一些必要的后台交互也不好实现,所以找葫芦画瓢做个系统广告。
dz自身是支持自定义广告位的归属于自定义类别,在广告位图标上不能够醒目的显示而且一些必要的后台交互也不好实现,所以找葫芦画瓢做个系统广告。
一、在source/class/adv中添加自定义的广告类文件adv_protaldropdown.php,格式为[adv_广告名]。
二、在source/language/adv中添加自定义的广告语言文件lang_protaldropdown.php,格式为[lang_广告名]。
三、在static/image/admincp中添加图标portaldropdown.gif,格式为[广告名.gif]
四、在template模板中放置广告展示位钩子
实例:<!--{ad/portaldropdown/gg_full wrapfix}-->
参数:钩子类别/广告名/广告所处div的class/队列广告排序位
lang_protaldropdown.php
evalcode()函数返回数组[check,create]
check:当前模块是否为广告投放范围,否则false;
create:当check为true时,建立组装广告代码(这里就可以灵活变动了)
check和create的值均为字符串语句,后台添加广告时由/source/admincp/admincp_adv.php处理存入数据库common_advertisement,启用广告时由/source/function/cache/cache_advs.php处理,build_cache_advs()函数读取common_advertisement表中所有的广告属性(adv_protaldropdown.php中的setting)建立缓存保存在common_syscache表中,全局钩子系统处理广告钩子所展示的广告时就进入广告执行阶段由/source/function/function_core.php中的adshow()函数执行adv_protaldropdown.php中evalcode()函数返回的字符串语句(@eval($evalcode['create'])),然后create中所组装的广告代码就得以展示,注意在调试时可以将代码直接插入到adshow函数测试,测试通过后将代码转义再放在adv_portaldropdown.php中的evalcode()函数中。
一、在source/class/adv中添加自定义的广告类文件adv_protaldropdown.php,格式为[adv_广告名]。
二、在source/language/adv中添加自定义的广告语言文件lang_protaldropdown.php,格式为[lang_广告名]。
三、在static/image/admincp中添加图标portaldropdown.gif,格式为[广告名.gif]
四、在template模板中放置广告展示位钩子
实例:<!--{ad/portaldropdown/gg_full wrapfix}-->
参数:钩子类别/广告名/广告所处div的class/队列广告排序位
lang_protaldropdown.php
<?php
/**
*[Discuz!] (C)2001-2099 Comsenz Inc.
*This is NOT a freeware, use is subject to license terms
*
*$Id: lang_portaldropdown.php 27449 2012-02-01 05:32:35Z zhangguosheng $
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
$lang = array
(
'portaldropdown_name' => '首页下拉广告',
'portaldropdown_desc' => '展现方式: 广告以长方形图片的形式显示于导航下方,展示规定时间后自动缩回,通常使用宽小高大的长方形图片或 Flash 的形式。对联广告一般只在使用像素约定主表格宽度的情况下使用,如使用超过 90% 以上的百分比约定主表格宽度时,可能会影响访问者的正常浏览。当访问者浏览器宽度小于 800 像素时,自动不显示此类广告。当前页面有多个对联广告时,系统会随机选取其中之一显示。<br />价值分析: 对联广告由于只展现于高分辨率(1024x768 或更高)屏幕的两侧,只占用页面的空白区域,因此不会招致访问者反感,能够良好的突出推广内容。但由于对分辨率和主表格宽度的特殊要求,使得广告的受众比例无法达到 100%。',
'portaldropdown_index' => '首页',
'portaldropdown_replay'=> '是否允许重播',
'portaldropdown_replay_comment' => '开启此项,该广告可重复展现',
'portaldropdown_disableclose' => '关闭广告的链接',
'portaldropdown_disableclose_comment' => '如果广告代码中已内置关闭操作,可以关闭系统预置的关闭链接',
'portaldropdown_show' => '显示',
'portaldropdown_hidden' => '隐藏',
'portaldropdown_yes'=>'是',
'portaldropdown_no'=>'否'
);
?>
adv_protaldropdown.php
<?php
/**
*/
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class adv_portaldropdown {//注意格式
var $version = '1.1';//版本
var $name = 'portaldropdown_name';//名称--对应语音文件的变量
var $description = 'portaldropdown_desc';//描述说明--对应语言文件中的变量,图1所以
var $copyright = '<a href="http:// .xingame.net" target="_blank">Netho</a>';//版权
var $targets = array( 'portal');//广告投放范围
var $imagesizes = array('900x300');//默认图片广告大小
function getsetting() {//广告参数选项设置
global $_G;
$settings = array(
'replay' => array(//是否重播
'title' => 'portaldropdown_replay',
'type' => 'mradio',
'value' => array(
array(0, 'portaldropdown_yes'),
array(1, 'portaldropdown_no'),
),
'default' => 0,
),
'disableclose' => array(//是否隐藏
'title' => 'portaldropdown_disableclose',
'type' => 'mradio',
'value' => array(
array(0, 'portaldropdown_show'),
array(1, 'portaldropdown_hidden'),
),
'default' => 0,
)
);
return $settings;
}
function setsetting(&$advnew, &$parameters) {
global $_G;
if(is_array($advnew['targets'])) {
$advnew['targets'] = implode("\t", $advnew['targets']);
}
$parameters['extra']['fullAdType']=$advnew['style']=='flash'?'flash':'jpg';
}
function evalcode($data) {//广告内容组装
$fullAdType=$data['parameters']['extra']['fullAdType'];
$adHTML=$data['code'];
$isReplay=$data['parameters']['extra']['replay']?'true':'false';
$create=$isReplay==='true'?'<div class="gg_fbtn" style="display: block;"><a style="" class="gg_freplay" title="重播" href="#"></a><a class="gg_fclose" title="关闭" href="#" style="display: none;"></a></div>':'';
$create.='<div class="gg_fcon" style="display: none;text-align: center;"></div>';
$create.='<script type="text/javascript">seajs.use("common", function(index){index.dropListAdv("'.$fullAdType.'",\\\''.$adHTML.'\\\','.$isReplay.');});</script>';
return array(
'check' => '
if($_G[\'basescript\'] != \'portal\' || CURMODULE != \'index\' ]))
) {
$checked = false;
}',
'create' => '
$temp=\''.$create.'\';
$adcode = empty($parameter[\'disableclose\']) ? (empty($_G[\'cookie\'][\'adclose_\'.$coupleadid]) ? \'<br /><a href="javascript:;"style="z-index: 200 !important;" onclick="setcookie(\\\'adclose_\'.$coupleadid.\'\\\', 1, 1);this.parentNode.style.display=\\\'none\\\'"><img src="\'.STATICURL.\'image/common/ad_close.gif" /></a>\'.$temp : \'\') : $temp;
',
);
}
}
?>
图标模板钩子(局部代码)
<!--{template common/header}-->
<!--[name]网站首页[/name]-->
<script type="text/javascript">
seajs.use("portal_index", function(index){index.init();});
</script>
<div class="wp">
<!--{ad/portaldropdown/gg_full wrapfix}-->
<!--[diy=diy1]-->
<div id="diy1" class="area"></div>
<!--[/diy]-->
<div id="bd">
<!-- 顶部推荐区begin -->
<div class="top-recommends cl">
<div class="newest-card">
<!--[diy=diy_panels]-->
<div id="diy_panels" class="area"></div>
<!--[/diy]-->
</div>
<div alog-alias="favsites" class="favsites-nav">
<!--[diy=diy_gamenav]-->
<div id="diy_gamenav" class="area"></div>
<!--[/diy]-->
</div>
</div>
<!-- 顶部推荐区end -->
接下来简单说说广告的流程evalcode()函数返回数组[check,create]
check:当前模块是否为广告投放范围,否则false;
create:当check为true时,建立组装广告代码(这里就可以灵活变动了)
check和create的值均为字符串语句,后台添加广告时由/source/admincp/admincp_adv.php处理存入数据库common_advertisement,启用广告时由/source/function/cache/cache_advs.php处理,build_cache_advs()函数读取common_advertisement表中所有的广告属性(adv_protaldropdown.php中的setting)建立缓存保存在common_syscache表中,全局钩子系统处理广告钩子所展示的广告时就进入广告执行阶段由/source/function/function_core.php中的adshow()函数执行adv_protaldropdown.php中evalcode()函数返回的字符串语句(@eval($evalcode['create'])),然后create中所组装的广告代码就得以展示,注意在调试时可以将代码直接插入到adshow函数测试,测试通过后将代码转义再放在adv_portaldropdown.php中的evalcode()函数中。
本文标签:
很赞哦! ()
上一篇:DiscuzNT安装配置问题
相关教程
图文教程
Xweibo for Discuz X1.5V1.1安装教程
修复Discuz!X 1.5 RELEASE 20110121中的安全机制更改,触发插件安全机制而引发无法同步主题到微薄的问题Xweibo for Discuz!X1.5V1.1 Release 2025-01-21
怎么搭建discuz论坛
CMS意为内容管理系统(可理解为由特定的语言写的一套程序,或后台)有论坛cms,商城cms,企业网站cms,留言cms,直播cms等(在虚拟机服务器中使用phpstudy集成环境搭建)
怎么用URLOS快速创建Discuz论坛
Discuz是国内大最多人使用的论坛社区系统,自2001年6月面世以来,Discuz已拥有15年以上的应用历史和200多万网站用户案例,是全球成熟度较高、覆盖率大的论坛软件系统之一。
Discuz X2任务开发教程实例
由于公司的需求要在系统中添加任务管理,用户通过完成任务而获得一定的奖励,因此其设计过程需要考虑到:1、由于任务都是在系统中相关功能块处做一些相关事情,比如说在做题系统中
相关源码
-
(自适应)五金配件机械加工设备pbootcms模板免费下载这款基于PbootCMS开发的网站模板为五金配件和机械加工行业设计,采用简洁有力的设计风格,突出工业产品的专业性和可靠性。模板结构清晰,功能完善,能够有效展示各类工业产品的技术参数和应用场景。查看源码 -
html5响应式pbootcms模板新闻资讯博客网站源码该模板采用PbootCMS内核开发,专为新闻资讯类网站打造,同时具备高度行业适配性--只需替换图文内容即可快速转型为企业官网、行业门户等各类站点。查看源码 -
pbootcms响应式蓝色旅游旅行社pbootcms网站源码下载为旅游公司、旅行社定制的响应式网站模板,聚焦旅游线路展示、景点推荐及预约服务场景。采用PbootCMS内核开发,自适应技术确保PC与手机端数据实时同步查看源码 -
(自适应)英文电子芯片电子元件网站pbootcms模板下载基于PbootCMS内核开发的电子元件类企业专用模板,采用响应式设计技术,适配电子元器件、集成电路、半导体等行业的品牌展示与技术文档发布需求。前端布局针对芯片参数表格与产品规格书展示进行深度优化。查看源码 -
(PC+WAP)盆栽绿植观赏植物花卉租赁免费pbootcms网站模板为花卉盆栽租赁、园林绿化企业打造的PbootCMS网站模板,采用较新内核开发,PC与移动端数据实时同步。通过清新自然的视觉设计,精准展现植物养护、花卉展示等业务场景,帮助用户快速建立专业级行业网站。查看源码 -
(自适应响应式)陶瓷研磨盘抛光机械设备pbootcms网站模板本模板基于PbootCMS系统开发,为研磨抛光设备制造企业设计,特别适合陶瓷研磨盘、抛光设备等表面处理设备展示。采用响应式布局技术,确保各类设备的参数和工艺在不同终端上都能清晰呈现。查看源码
| 分享笔记 (共有 篇笔记) |
