PDA

View Full Version : Adding to $ad_location


Sarteck
06-18-2011, 05:58 AM
Right... So there's no template hook right where I really want to add some stuff. There IS, however, a {vb:raw ad_location.global_header1} seated nicely where it would be perfect for me to add what it is I want to add.

What I've been doing for the past few years is just modifying the header template to stick in my own variable[s], but that gets tedious for two reasons: one, when I download a Style that has a modified header template, it doesn't inherit the change from the Parent Style I stick all my styles under, so I have to manually edit it (in addition, I have to do that each time I update the styles, for multiple skins, and it sucks); two, when I update vBulletin, if there's any modifications to the header template, sometimes the template merge will fail, and I'll be stuck with an "old" header template.


Okay, enough with my reasoning, now onto what I want to do, and what trouble I'm having!


I have a plugin on the parse_templates hook (which is where I usually put my plugins that add to the $template_hook variable) that adds my information to the variables I manually stuck into that header template.

I've tried, a few times, to add to the $ad_location variable, with no success in anything actually showing.


global $ad_location;
$ad_location['global_header1'] .= $cba_main;


It just acts as if I did nothing. :<



Could someone tell me if there's some kind of magic spell I have to recite to use the $ad_location asI would the $template_hook?

TheLastSuperman
06-18-2011, 06:25 AM
What are you trying to add? Why not use the Ad Manager and insert what you want, this way it auto-inserts that into all of your styles and you don't need to edit the same ad template in every style.

:cool:.

Sarteck
06-18-2011, 06:34 AM
Well, correct me if I'm wrong (since I've never used the Ad manager, I very well could be), but using the Ad Manager would not allow me to add custom content pulled from my database, modified by PHP, etc. etc., right?


To get into the gory details of it:

require_once(DIR . '/includes/class_bbcode.php');
$cba_announcements = '';
$cbaids = array();


$cba_results = $vbulletin->db->query_read("SELECT announcementid, cbmp_order, content, title FROM cbmp_tabs_content WHERE enabled=1 ORDER BY cbmp_order");
while ($cba = $vbulletin->db->fetch_array($cba_results))
{
$cbaids[] = $cba['announcementid'];
$cba_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
$cba['content'] = $cba_parser->do_parse($cba['content']);
$cba['content'] = str_replace("'",'\\\'',$cba['content']);
$cba['content'] = str_replace("\n",'',$cba['content']);
$cba['content'] = str_replace("\r",'',$cba['content']);
$cba['title'] = $cba_parser->do_parse($cba['title']);
$cba['title'] = str_replace("'",'\\\'',$cba['title']);
$cba_jsbit_template = vB_Template::create('cba_announcement_jsbit');
$cba_jsbit_template->register('cba', $cba);
$cba_announcements .= $cba_jsbit_template->render();
unset($cba_jsbit_template);
}
$cba_id=$cbaids[rand(0,intval(sizeof($cbaids)-1))];

$cba_main_template = vB_Template::create('cba_main');
$cba_main_template->register('cba_announcements', $cba_announcements);
$cba_main_template->register('cba_id', $cba_id);
$cba_main = $cba_main_template->render();


That's the code I wrote. It adds in a basic ad-like slider, but the "ads" are announcements the leaders of the "Guilds" at my site have added. I need to be able to add that stuff in that cba_main template I created, since it handles the JavaScript for it and everything.



This is going to sound silly, but another reason I haven't tried the Ad Manager is that it's never worked for me. X3 It always loads a blank, gray page. (I've never bothered trying to fix it, because I never wanted to add any ads, heh.)