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

Reply
 
Thread Tools Display Modes
  #1  
Old 06-21-2012, 01:19 AM
NathanLedet NathanLedet is offline
 
Join Date: Nov 2005
Posts: 85
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Injecting code into existing template code

I'm not sure how to do this. I'm not sure if I need to use hooks or if I can do a str_replace (is that even good practice with vB4?).

Basically, I want to write a plugin that injects an image in the header, after the "Welcome, user" text.

The easy thing would be to just modify the template, but I want to avoid modifying any of the core templates.

header template
PHP Code:
<li class="welcomelink">
     {
vb:rawphrase welcome_x_link_y
     {
vb:raw bbuserinfo.username}, 
     {
vb:link member, {vb:raw bbuserinfo}}}
//injected code here?
</li
Reply With Quote
  #2  
Old 06-21-2012, 01:43 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The only way to do it without modifying the template (or doing something a lot more complicated) would be to do a str_replace at some point, either before or after it's rendered. But it can be difficult to figure out exactly what string to match.

Looking at the compiled header template from the database (which is what will be in the template cache), the part you want looks like this:

Code:
vB_Template_Runtime::linkBuild("member", $bbuserinfo) . '') . '</li>

and you'd want to insert your code just before the </li> at the end. So maybe something like this (maybe at hook parse_templates):

PHP Code:
$injected_code "something";
$find 'vB_Template_Runtime::linkBuild("member", $bbuserinfo) . \'\') . \'</li>';
$replace 'vB_Template_Runtime::linkBuild("member", $bbuserinfo) . \'\') . \'' $injected_code '</li>';

$vbulletin->templatecache['header'] = str_replace($find$replace$vbulletin->templatecache['header']); 
(BTW, I haven't tried this at all)


You may also be interested in this mod: www.vbulletin.org/forum/showthread.php?t=152931 although I haven't tried it myself.
Reply With Quote
  #3  
Old 06-21-2012, 07:17 AM
NathanLedet NathanLedet is offline
 
Join Date: Nov 2005
Posts: 85
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Very helpful. Thank you.

And yes, that mod will most definitely help out. Thanks for the link!
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:57 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.08897 seconds
  • Memory Usage 2,182KB
  • 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
  • (1)bbcode_code
  • (2)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (3)post_thanks_box
  • (3)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit_info
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)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