Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 09-16-2009, 06:50 AM
AfterWorldForum AfterWorldForum is offline
 
Join Date: Dec 2008
Posts: 154
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default A question about programatically changing templates at runtime

Hi,

Recently, I downloaded and tested the CYB Donate mod, which will add an item called DONATE to the navbar. However, I was not really satisfied with the location of it (right next to the FAQ), and started looking for a less obtrusive spot to insert it.

Initially I figured I'd try positioning it directly left from the Log Out option, but gave up on that idea after quite some failures.

I then decided I'd instead add it to my footer, and eventually, after quite a bit of trying, I managed to position it at the very right, next to the "top" link. I have a question to satisfy my curiosity, though.

The link plugin-item (or object, not sure about the proper term) uses a str_replace function to change the template, like so:

Code:
$vbulletin->templatecache['footer'] = str_replace('$vbphrase[top]</a>','$vbphrase[top]</a> - $cyb_paypal_donate_link',$vbulletin->templatecache['footer']);
Note this is not the original code, but my customized version thereof. My question is: I also tried something along the lines of the code below, which did not work. Why does the code above do the trick, but does the code below fail?

Code:
$vbulletin->templatecache['footer'] = str_replace('<a href="#top" onclick="self.scrollTo(0, 0); return false;">$vbphrase[top]</a>' , $cyb_paypal_donate_link - 
<a href="#top" onclick="self.scrollTo(0, 0); return false;">$vbphrase[top]</a>' , $vbulletin->templatecache['footer']);
I have two possible explanations, but would like other input, so if the need arises again in the future, I can actually get things right the first time

1) The str_replace function only supports a certain amount of characters (Pretty sure this is not the case, as I also tried replacing parts of the code above, but to no avail)
2) It's due to there being HTML tags in the code, which at the time of the replace happening have already been parsed.

My money is on option 2, but a second opinion would be greatly appreciated, along with maybe some tips and hints on how to fiind out more.

Cheers.

Peter
Reply With Quote
  #2  
Old 09-16-2009, 02:48 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It's not 1), but it may be because you are using $vbphrase in there and the phrase may actually already be parsed at that time.
Reply With Quote
Reply

Thread Tools
Display Modes

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 11:08 PM.


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.06785 seconds
  • Memory Usage 2,168KB
  • 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
  • (2)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)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