Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 12-06-2007, 10:54 AM
Cloud-Warrior's Avatar
Cloud-Warrior Cloud-Warrior is offline
 
Join Date: Feb 2002
Location: Galway, Ireland
Posts: 100
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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?
Reply With Quote
  #2  
Old 12-06-2007, 11:21 AM
RedTyger's Avatar
RedTyger RedTyger is offline
 
Join Date: Nov 2006
Location: UK
Posts: 1,310
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #3  
Old 12-06-2007, 03:44 PM
Cloud-Warrior's Avatar
Cloud-Warrior Cloud-Warrior is offline
 
Join Date: Feb 2002
Location: Galway, Ireland
Posts: 100
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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" />';
}
I think this solution is a bit awkward, and I'm not sure if there are situations in which it might not work.
Is there another, more elegant solution for that?
Reply With Quote
  #4  
Old 12-07-2007, 07:30 AM
RedTyger's Avatar
RedTyger RedTyger is offline
 
Join Date: Nov 2006
Location: UK
Posts: 1,310
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #5  
Old 12-10-2007, 10:04 AM
Cloud-Warrior's Avatar
Cloud-Warrior Cloud-Warrior is offline
 
Join Date: Feb 2002
Location: Galway, Ireland
Posts: 100
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ah, I didn't know about THIS_SCRIPT, that's just what I needed - thank you!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 08:52 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.08127 seconds
  • Memory Usage 2,204KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (3)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete