The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
||||
|
||||
autodiscovery links in header
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:
|