PDA

View Full Version : replacing everything between a div in a template


Dr.CustUmz
04-10-2016, 03:06 AM
Say I want to replace this snippit in showthread_quickreply:

<div class="controlbar" style="padding-$stylevar[right]:8px">
<fieldset style="border:0px; padding:0px; margin:0px">
<if condition="$show['qr_require_click']">
<textarea name="message" id="{$editorid}_textarea" rows="10" cols="60" style="width:100%; height:{$editor_height}px" tabindex="1" dir="$stylevar[textdirection]" disabled="disabled">$vbphrase[click_quick_reply_icon]</textarea>
<else />
<textarea name="message" id="{$editorid}_textarea" rows="10" cols="60" style="width:100%; height:{$editor_height}px" tabindex="1" dir="$stylevar[textdirection]"></textarea>
</if>
</fieldset>
<!--width:$stylevar[messagewidth]-->
</div>

I want to replace it with my own template.

I've tried a few combinations similar to:
$test = '<div class=\"controlbar\" style=\"padding-$stylevar[right]:8px\">.*</div>';
$vbulletin->templatecache['showthread_quickreply'] = str_replace($test,fetch_template('drc_iiu_test'),$ vbulletin->templatecache['showthread_quickreply']);

but I can't get any result to display, is there a way to replace everything in between that div?

squidsk
04-10-2016, 05:48 AM
Don't escape the double quotes, it isn't required in the test string because the string is enclosed in single quotes.

Dr.CustUmz
04-10-2016, 01:29 PM
$test = '<div class="controlbar" style="padding-$stylevar[right]:8px">.*</div>';
$vbulletin->templatecache['showthread_quickreply'] = str_replace($test,fetch_template('drc_iiu_test'),$ vbulletin->templatecache['showthread_quickreply']);
still nothing =/

MarkFL
04-10-2016, 02:05 PM
Here's what I do when I am trying to edit a template via a plugin and experiencing difficulty...first I look at the template code before any alterations at runtime, and copy/paste that code into a text editor.

Next, I manually edit the template to make the desired change, and look at this at runtime and copy/paste that below the previous paste into my text editor.

Then, revert the template back to its original state.

Now I have the desired before/after to inspect in my text editor, and it is easier to see what I need to do to make the desired change using PHP.

Dr.CustUmz
04-10-2016, 04:35 PM
i went about doing it pretty much that way lol, with a bunch of minor changes

things are not named the final name this is just my build procedure lol, i know... sloppy =)
it'll be sexy and make sence in the end
example:
//showthread_quickreply

$drcrb_hd = '</fieldset>';
$find = '<textarea name=\"message\" id=\"{$editorid}_textarea\"';
$replace = '<textarea class=\"form-control comment-form-textarea\" name=\"message\" id=\"{$editorid}_textarea\"';
$find2 = '<div class=\"controlbar\"';
$replace2 = '<div class=\"controlbar upload-enabled\"';

$vbulletin->templatecache['showthread_quickreply'] = str_replace($drcrb_hd,fetch_template('drc_iiu_belo w_txtarea').$drcrb_hd,$vbulletin->templatecache['showthread_quickreply']);
$vbulletin->templatecache['showthread_quickreply'] = str_replace($find,$replace,$vbulletin->templatecache['showthread_quickreply']);
$vbulletin->templatecache['showthread_quickreply'] = str_replace($find2,$replace2,$vbulletin->templatecache['showthread_quickreply']);

//newthread
$find6 = '$newpost[message]</textarea>';
$find4 = '<textarea name=\"message\" id=\"{$editorid}_textarea\"';
$replace4 = '<textarea class=\"form-control comment-form-textarea\" name=\"message\" id=\"{$editorid}_textarea\"';
$find3 = '<td class=\"controlbar\">';
$replace3 = '<td class=\"controlbar upload-enabled\">';
$vbulletin->templatecache['editor_toolbar_on'] = str_replace($find6,$find6.fetch_template('drc_iiu_ below_txtarea'),$vbulletin->templatecache['editor_toolbar_on']);
$vbulletin->templatecache['editor_toolbar_on'] = str_replace($find4,$replace4,$vbulletin->templatecache['editor_toolbar_on']);
$vbulletin->templatecache['editor_toolbar_on'] = str_replace($find3,$replace3,$vbulletin->templatecache['editor_toolbar_on']);

and I could fully replace the template with my copied changes like:
$vbulletin->templatecache['editor_toolbar_on'] = $vbulletin->templatecache['drc_iiu_editor_toolbar_on'];

I just thought, "hey can I just change everything in between a div, that'd be so much easier and the user wouldn't have to worry about if my complete change is going to screw up their template."

but grabbing things that SHOULD be there no matter how custom a theme is ...SHOULD work for everyone lol

Dr.CustUmz
04-13-2016, 06:11 PM
preg_replace -_- lmao, too bad the products done now, will come in handy in the future though =)