vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.6 Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=194)
-   -   Administrative and Maintenance Tools - Edit Templates On Fly - A step towards easy-to-install modifications (https://vborg.vbsupport.ru/showthread.php?t=145649)

Milad 04-26-2007 12:23 PM

Quote:

Originally Posted by magnus (Post 1234621)
Here's an example from one of my modifications using preg_replace in order to make on-the-fly template changes to all templates -- including modified ones:

PHP Code:

$find '/<tr(.*)>/';
preg_match($find$vbulletin->templatecache['threadbit'], $match);
$vbulletin->templatecache['threadbit'] = preg_replace($find'<tr' $match[1] . ' id=\"vbpostrow_$thread[' . ($vbulletin->options['ajax_firstpost_firstlast'] ? 'lastpostid' 'firstpostid') . ']\">'$vbulletin->templatecache['threadbit']);
unset(
$find$match);
            
$find '/\$thread\[title_editable\](\s*)<div(.*)?>/';
preg_match($find$vbulletin->templatecache['threadbit'], $match);
$vbulletin->templatecache['threadbit'] = preg_replace($find$match[0] . $match[1] . '    <img id=\"vbpostimg_$thread[' . ($vbulletin->options['ajax_firstpost_firstlast'] ? 'lastpostid' 'firstpostid') . ']\" src=\"$stylevar[imgdir_button]/expand.gif\" onclick=\"return vbpost_get($thread[' . ($vbulletin->options['ajax_firstpost_firstlast'] ? 'lastpostid' 'firstpostid') . '])\" onMouseOver=\"this.style.cursor=\'pointer\';\" />'$vbulletin->templatecache['threadbit']);
unset(
$find$match); 

The problem with using str_replace is that most people have a tendency to edit their templates. Thus, the static text you're searching the template for may have been changed. Now, if the text has been removed altogether there's nothing you can do -- however, if say by default you're looking for:
HTML Code:

<div>
And, in the users template it's changed to:
HTML Code:

<div class="alt1">
Your str_replace is NOT going to find it:
PHP Code:

$output str_replace('<div>''<div id="MyID">'$text); 

However, using preg_replace WILL:
PHP Code:

$output preg_replace('/<div(.*)>/''<div id="MyID">'$text); 

In my example code above, I use preg_match to retain the user's variables even after inserting my own:
PHP Code:

preg_match('/<div(.*)>/'$text$match);
$output preg_replace('/<div(.*)>/''<div' $match[1] . ' id=\"MyID\">'$text); 



You presented a very good points, I'll implement them for sure.
I hadn't thought about preg_replace ereg_replace and preg_match, they must be used.

Thank you very much.


All times are GMT. The time now is 01:45 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.01092 seconds
  • Memory Usage 1,746KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_html_printable
  • (4)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (1)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete