马上注册,免费下载更多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
[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] - <?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://www.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;" οnclick="setcookie(\\\'adclose_\'.$coupleadid.\'\\\', 1, 1);this.parentNode.style.display=\\\'none\\\'"><img src="\'.STATICURL.\'image/common/ad_close.gif" /></a>\'.$temp : \'\') : $temp;
- ',
- );
- }
- }
- ?>
复制代码
模板钩子(局部代码)
[HTML] - <!--{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()函数中。
以上是个人理解的流程整理。。。。。。
实在是写不下去了!!!!
©DZ插件网所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 网站部分内容来源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,得到更好的正版服务。 您在本站任何的赞助购买、下载、查阅、回复等行为等均表示接受并同意签订《DZ插件网免责声明协议》。 如有侵权请邮件与我们联系处理: discuzaddons@vip.qq.com 并出示相关证明以便删除。敬请谅解!
|
|