本帖最后由 零风 于 2011-4-1 18:26 编辑
*************************************************
** 代码讲解基于版本:Discuz! X 1.5 / 2.0 GBK **
*************************************************
我们在设置一个全局的头部和底部广告时,会发现在在排行榜页面是不显示的。
我们简单分析下广告的机制,顺便修改代码,实现在 排行榜页面也可以显示头部和底部的广告。
首先,我们进入后台的 扩展->站点广告 页, 在这里有已经存在的广告形式,这里会看到有一个 自定义广告,
其实我们可以自己添加一些非系统本身自带的广告位广告,比如我们想给某个单独的频道添加一个广告位,就可以在这里添加。
添加完自定义告诉位以后,可以选择 站内 或者 站外调用。
当然在这里单独针对 排行榜页面 也是可以添加一个广告来实现给 排行榜 页面实现页头和页尾的广告。
但是我们要更进一步的分析系统自身的 页头广告 处理模式。
如果我们在后台添加一个系统内置广告时,在代码 /source/admincp/admincp_adv.php 中
会看到这样的一个代码处理:
require_once libfile('adv/'.$type, 'class');
$advclass = 'adv_'.$type;
$advclass = new $advclass;
$advnew = $_G['gp_advnew'];
这实际上说明我们添加的广告是对应着某一个文件中的某一个 类。
所有的这些广告对应着 /source/class/adv/ 下的文件。
页头广告对应着文件 /source/class/adv/adv_headerbanner.php
我们打开这个文件,会看到 一个类
我们关于这个类中的 targets 属性:
var $targets = array('portal', 'home', 'member', 'forum', 'group', 'userapp', 'plugin', 'custom');
这个说明了可以投放的页面,包括门户,空间,注册/登录,论坛,群组,应用,插件,自定义。
我们需要让排行榜也允许添加全局页头广告,实际上就是把排行榜的加到这个 targets 中。
排行榜的页面地址是 : misc.php
所以我们这里把 targets 修改为:
var $targets = array('portal', 'home', 'member', 'forum', 'group', 'userapp', 'plugin', 'misc', 'custom');
因为语言包的关系,我们需要在语言包中添加一个针对misc的文字说明
打开文件 /source/language/lang_admincp.php
搜到
'adv_edit_targets_plugin' => '独立插件',
在这个下面添加
'adv_edit_targets_misc' => '排行榜',
保存即可。
现在去后台添加页头广告可以选择在排行榜显示了。
在页脚显示的方法和这个一样,修改对应的文件既可。
|