View Full Version : Help with plugin to output stuff in header
mojodeluxe
01-31-2012, 03:25 AM
I want to harmonize my newly installed forum with the rest of my site. For this, I use xmlrpc to pull the site's html header in the hope of using same html code in the forum header.
I wrote the following plugin, using global_start as the hook. The code looks like this :
require_once('xmlrpclibrary.inc');
$m = new xmlrpcmsg('method.name');
$c = new xmlrpc_client("/xmlrpc.php", "mydomain.com", 80);
$r = $c->send($m);
if (!$r->faultCode()) {
$v = $r->val->me['string'];
}
$myhtmlheader = print $v;
*************
And then I put {vb:raw myhtmlheader} in the header template. Unfortunately, the result is output before anything else on the page (before the html <head> tag, before the DOCTYPE even, etc.).
I've also tried to replace the last line with:
ob_start();
print $v;
$myhtmlheader = ob_get_contents();
ob_end_clean;
but that doesn't seem to output anything in the template.
Any idea about what I'm doing wrong ?
Many thanks
Max Taxable
01-31-2012, 03:27 AM
And then I put {vb:raw myhtmlheader} in the header template. Unfortunately, the result is output before anything else on the page (before the html <head> tag, before the DOCTYPE even, etc.)Does it make any difference what line in the header template you put the call on?
mojodeluxe
01-31-2012, 03:28 AM
Good question Max.
No it doesn't. I've tried it a numerous place, nesting it in different div tags, etc.
Max Taxable
01-31-2012, 03:30 AM
Have you tried different hooks?
mojodeluxe
01-31-2012, 03:34 AM
I've tried a few, I don't remember which honestly. Right now I have debug mode turned on and I know I've tried global_start which I understand is called quite early, and also forumhome_complete and page_templates which are 2 of the last ones.
Max Taxable
01-31-2012, 03:43 AM
I'm stumped because I don't see anything in the code that would place this input information above the rest of the code in the header template. It should marry to where you put the call.
mojodeluxe
01-31-2012, 03:55 AM
I'm stumped because I don't see anything in the code that would place this input information above the rest of the code in the header template. It should marry to where you put the call.
I have a feeling my issue may be related to the "print" in my code, perhaps that causes the problem as the global_start hook is called quite early.
--------------- Added 1327986209 at 1327986209 ---------------
I've also tried to replace the last line with:
ob_start();
print $v;
$myhtmlheader = ob_get_contents();
ob_end_clean;
This code actually has a typo in it, ob_end_clean; should be ob_end_clean();
Oddly enough, when I use this code with the typo (i.e. ob_end_clean;), the result is similar to simply using $myhtmlheader = print $v;, that is the output appears on the very top of the html document, before the DOCTYPE.
Using the proper ob_end_clean(); code doesn't return anything on the page.
--------------- Added 1327988678 at 1327988678 ---------------
Got it
require_once('xmlrpclibrary.inc');
$m = new xmlrpcmsg('method.name');
$c = new xmlrpc_client("/xmlrpc.php", "mydomain.com", 80);
$r = $c->send($m);
if (!$r->faultCode()) {
$v = $r->val->me['string'];
}
$myhtmlheader = $v;
vB_Template::preRegister(
'header', array('myhtmlheader' => $myhtmlheader)
);
then use {vb:raw myhtmlheader} in the template file.
Link to further examples : https://vborg.vbsupport.ru/showthread.php?t=228078
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.