您现在的位置是:首页 > 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安装配置问题
相关教程
图文教程
Discuz论坛使用时页面卡顿的解决方法
当你刚开始使用Discuz论坛时,可能会遇到页面卡顿的问题,这不仅影响用户体验,还可能让新手望而却步。Discuz作为一个功能强大的开源论坛系统,支持众多插件和主题
Discuz的NT企业版Sphinx全文搜索
在前文中,介绍了Discuz!NT引入SPHINX的背景和相应的客户端的C#代码架构实现。今天这篇文章将会介绍如果在LINUX环境下安装配置SPHINX中文搜索工具,也就是服务器配置方案.
Discuz和jQuery冲突怎么办
Common.js是官方自带的,我没改过它,所以不可能出错,所以问题就应该是两者冲突了。导致的结果我也发现了,前台的DIY功能不能用了。
Discuz开发头条小程序的特色功能与应用
当我们决定使用discuz开发头条小程序时,首先需要考虑的是如何将discuz的功能与小程序的特性结合起来。discuz的用户系统可以直接用于小程序的用户认证和管理
相关源码
-
(PC+WAP)蓝色智能环保机械设备网站营销型pbootcms模板下载本模板基于PbootCMS系统开发,为环保设备制造企业设计,特别适合展示环保机械、智能装备等产品。采用响应式技术,确保各类设备参数和技术方案在不同终端上都能清晰展示。查看源码 -
(自适应响应式)瓷砖大理石装修建材类网站pbootcms模板html5模板本模板基于PbootCMS开发,针对瓷砖、大理石等建材行业特点进行优化设计。采用响应式布局技术,确保产品展示效果在不同设备上都能合理呈现。模板特别强化了石材纹理的视觉表现力,帮助建材企业更好地展示产品质感。查看源码 -
(自适应响应式)房产合同知识产权企业管理pbootcms模板下载本模板基于PbootCMS系统开发,为知识产权服务、法律咨询及企业合同管理等行业设计。采用严谨专业的布局风格,突出法律文书与知识产权服务行业特色,适合展示各类法律服务和知识产权相关内容。查看源码 -
(自适应响应式)超市仓储仓库货架展架网站pbootcms源码下载本模板为货架展架、仓储货架行业量身打造,采用PbootCMS内核开发,充分考虑了货架产品展示和企业形象展示的需求。模板设计简洁大方,突出产品特点,能够有效展示各类货架产品的规格参数和应用场景,帮助访客快速了解企业核心业务和产品优势。查看源码 -
(自适应响应式)英文外贸医疗科研耗材设备pbootcms网站模板为医疗设备和外贸企业设计的响应式网站模板,基于PbootCMS系统开发。突出医疗产品认证展示和国际化特性,通过专业化的产品参数展示模块和文档管理系统,满足医疗行业严格的信息披露要求。查看源码 -
自适应html5二极管LED灯具灯饰类企业网网站模板该PbootCMS内核开发的响应式模板专为LED照明、灯具制造类企业设计,通过HTML5技术实现手机与PC端自适应显示,确保跨设备访问体验一致。企业可快速替换图文内容适配其他工业领域查看源码
| 分享笔记 (共有 篇笔记) |
