The Arcive of vBulletin Modifications Site. |
|
|
#1
|
||||
|
||||
|
I'm currently working on a script that produces XML/RDF output for some of vBulletin's data.
For that I'd also like to make a plugin that puts different autodiscovery links into the headers of various vBulletin pages. E. g. for forumdisplay.php it should put <link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=forum&id=XXX" /> into its header (with XXX being the id of the currently viewed forum) There seems to be no way to hook into the header, I only found the possibility to manually edit templates. Is it possible to have autodiscovery links that change according to which forum/post/user profile page is viewed? Can that be done in a way so that a user installing such a plugin doesn't have to do any maual editing of templates? |
|
#2
|
||||
|
||||
|
Use the hook global_setup_complete.
Code:
if (isset($foruminfo['forumid']))
{
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=forum&id='.$foruminfo['forumid'].'" />';
}
$headinclude contains the meta tags and a few other additions, anything you add there will go between the <head></head> tags. |
|
#3
|
||||
|
||||
|
Thanks RedTyger - that was a very helpful answer!
Now I try to distinguish if a forum, thread, post or user profile is currently displayed and give only the appropriate autodiscovery link for that. E. g. when a post is viewed, don't give additional links for the thread or forum it is in. I came up with this code that I included at the hook location you told me: Code:
$vbulletin->input->clean_array_gpc('r', array( 'userid' => INT ));
if ($vbulletin->GPC['userid']) {
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=user&sioc_id='.$vbulletin->GPC['userid'].'" />';
} elseif ($vbulletin->GPC['postid']) {
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=post&sioc_id='.$vbulletin->GPC['postid'].'" />';
} elseif ($vbulletin->GPC['threadid']) {
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=thread&sioc_id='.$vbulletin->GPC['threadid'].'" />';
} elseif ($vbulletin->GPC['forumid']) {
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=forum&sioc_id='.$vbulletin->GPC['forumid'].'" />';
} else {
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=site" />';
}
Is there another, more elegant solution for that? |
|
#4
|
||||
|
||||
|
You could use a switch if you wanted it to be a little neater I suppose, I personally would use THIS_SCRIPT to determine when links are used as the other variables may be added or used elsewhere.
Code:
switch (THIS_SCRIPT)
{
case 'member':
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=user&sioc_id='.$_REQUEST['u'].'" />';
break;
case 'showpost':
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=post&sioc_id='.$_REQUEST['p'].'" />';
break;
case 'showthread':
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=forum&sioc_id='.$_REQUEST['t'].'" />';
break;
case 'forumdisplay':
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=forum&sioc_id='.$_REQUEST['f'].'" />';
break;
default:
$headinclude .= '<link rel="meta" type="application/rdf+xml" title="SIOC" href="sioc.php?sioc_type=site" />';
}
You can clean the $_REQUEST values if you want, but as they're not accessing any data and the forum will deal with incorrect values by default it's probably not necessary. |
|
#5
|
||||
|
||||
|
Ah, I didn't know about THIS_SCRIPT, that's just what I needed - thank you!
|
![]() |
|
|
| X vBulletin 3.8.12 by vBS Debug Information | |
|---|---|
|
|
More Information |
|
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|