View Full Version : Add new temp but error
Easy5s.net
06-25-2013, 11:15 AM
I created a new temp for my product but faulty:
Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\forum\includes\class_core.php(4633 ) : eval()'d code on line 90
this is code my temp test:
<div class="blockrow">
<label for="pmrecips_ctrl" class="floatcontainer full">
{vb:rawphrase recipients}:
<span class="hidden" onclick="return swapbcc(this);" id="bccspan">[<a href="javascript://" >{vb:rawphrase bcc}</a>]</span>
</label>
<script type="text/javascript" src="clientscript/vbulletin_ajax_suggest.js?v={vb:raw vboptions.simpleversion}"></script>
<div id="pmrecips" class="popupmenu nomouseover noclick nohovermenu">
<textarea class="primary full textbox popupctrl" id="pmrecips_ctrl" name="recipients" rows="{vb:if is_browser('mozilla'), 1, 2}" cols="50" tabindex="1">{vb:raw pm.recipients}</textarea>
</div>
<script type="text/javascript">
<!--
recip_sugg = new vB_AJAX_NameSuggest('recip_sugg', 'pmrecips_ctrl', 'pmrecips');
<vb:if condition="$show['sendmultiple']">recip_sugg.allow_multiple = true;</vb:if>
//-->
</script>
<p class="singledescription">{vb:rawphrase recipients_desc}</p>
</div>
And this code plugin:
$templater = vB_Template::create('test');
$test .= $templater->render();
$vbulletin->templatecache['newthread'] = str_replace('\' . $messagearea . \'', '<div class="blockrow">' . $test . '</div>\' . $messagearea . \'', $vbulletin->templatecache['newthread']);
What's in the template cache is php code, and I'd guess that the result of your str_replace() is php code with an error. But I don't know for sure because I'm not sure what $messagearea is set to.
Easy5s.net
06-25-2013, 01:40 PM
I just test 1 plugin and 1 temp was above fault, but when I remove the code
<script type="text/javascript">
<!--
recip_sugg = new vB_AJAX_NameSuggest('recip_sugg', 'pmrecips_ctrl', 'pmrecips');
<vb:if condition="$show['sendmultiple']">recip_sugg.allow_multiple = true;</vb:if>
//-->
</script>
no error in the temp but the temp does not work, the goal here is to remove a user name it will show up as full as sent private.
I want to create a username input (as in page send private) when users create new thread
nhawk
06-25-2013, 01:44 PM
Try this..
$vbulletin->templatecache['newthread'] = str_replace($messagearea, '<div class="blockrow">' . $test . '</div>' . $messagearea, $vbulletin->templatecache['newthread']);
Easy5s.net
06-25-2013, 01:49 PM
Try this..
$vbulletin->templatecache['newthread'] = str_replace($messagearea, '<div class="blockrow">' . $test . '</div>' . $messagearea, $vbulletin->templatecache['newthread']);
thank you, no error but not show in temp :)
nhawk
06-25-2013, 01:53 PM
Wait a second there is no $messagearea in the template you're trying to replace it in.
You want something like this...
$vbulletin->templatecache['newthread'] = str_replace('{vb:raw messagearea}', '<div class="blockrow">' . $test . '</div>' . '{vb:raw messagearea}', $vbulletin->templatecache['newthread']);
And it should be used in the process_templates_complete hook.
Easy5s.net
06-25-2013, 01:58 PM
not show :(
My first code it displays fine if removing line
<script type="text/javascript">
<!--
recip_sugg = new vB_AJAX_NameSuggest('recip_sugg', 'pmrecips_ctrl', 'pmrecips');
<vb:if condition="$show['sendmultiple']">recip_sugg.allow_multiple = true;</vb:if>
//-->
</script>
but if removed, the display features reminiscent name inactive
Scanu
06-25-2013, 02:02 PM
Template cache is compiled so this {vb:raw messagearea} becames $messagearea if i'm not wrong.
You can try this
$vbulletin->templatecache['newthread'] = str_replace($messagearea, '<div class="blockrow">' . $test . '</div>\' . $messagearea . \'', $vbulletin->templatecache['newthread']);
nhawk
06-25-2013, 02:05 PM
Template cache is compiled so this {vb:raw messagearea} becames $messagearea if i'm not wrong.
You can try this
$vbulletin->templatecache['newthread'] = str_replace($messagearea, '<div class="blockrow">' . $test . '</div>\' . $messagearea . \'', $vbulletin->templatecache['newthread']);
You're right. Normally I use preg_replace and compile_template. I forgot the compile_template part. :o
Easy5s.net
06-25-2013, 02:06 PM
Template cache is compiled so this {vb:raw messagearea} becames $messagearea if i'm not wrong.
You can try this
$vbulletin->templatecache['newthread'] = str_replace($messagearea, '<div class="blockrow">' . $test . '</div>\' . $messagearea . \'', $vbulletin->templatecache['newthread']);
not work, i user hook newthread_start
Scanu
06-25-2013, 02:07 PM
It could be a problem of the condition try to remove only the condition and leave the rest of the code just to see
--------------- Added 1372173285 at 1372173285 ---------------
else use this code by Boofo in the "parse_templates" hook
$templater = vB_Template::create('test');
$test = $templater->render();
require_once(DIR . '/includes/class_template_parser.php');
$parser = new vB_TemplateParser('{vb:raw messagearea}');
$parser->dom_doc = new vB_DomDocument($parser->fetch_dom_compatible());
$find = trim($parser->_parse_nodes($parser->dom_doc->childNodes()));
$vbulletin->templatecache['newthread'] = str_replace($find, $test, $vbulletin->templatecache['newthread']);
Easy5s.net
06-25-2013, 02:16 PM
It could be a problem of the condition try to remove only the condition and leave the rest of the code just to see
--------------- Added 1372173285 at 1372173285 ---------------
else use this code by Boofo
$templater = vB_Template::create('test');
$test = $templater->render();
require_once(DIR . '/includes/class_template_parser.php');
$parser = new vB_TemplateParser('{vb:raw messagearea}');
$parser->dom_doc = new vB_DomDocument($parser->fetch_dom_compatible());
$find = trim($parser->_parse_nodes($parser->dom_doc->childNodes()));
$vbulletin->templatecache['newthread'] = str_replace($find, $test, $vbulletin->templatecache['newthread']);
i have try it but not work :confused:
Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\forum\includes\class_core.php(4633 ) : eval()'d code on line 91
Scanu
06-25-2013, 02:27 PM
Mmh did you use "parse_templates" as hook location? If yes then i don't know what's the problem maybe this one is a little tricky but it should 100% works
Hook: parse_templates
$template = 'your template code';
require_once(DIR . '/includes/class_template_parser.php');
$parser = new vB_TemplateParser('{vb:raw messagearea}');
$parser->dom_doc = new vB_DomDocument($parser->fetch_dom_compatible());
$find = trim($parser->_parse_nodes($parser->dom_doc->childNodes()));
$parser = new vB_TemplateParser($template);
$parser->dom_doc = new vB_DomDocument($parser->fetch_dom_compatible());
$replace = trim($parser->_parse_nodes($parser->dom_doc->childNodes()));
$vbulletin->templatecache['newthread'] = str_replace($find, $replace, $vbulletin->templatecache['newthread']);
Put your template code in the template variable and remember to escape quotes!
Easy5s.net
06-25-2013, 02:34 PM
Mmh did you use "parse_templates" as hook location? If yes then i don't know what's the problem maybe this one is a little tricky but it should 100% works
Hook: parse_templates
$template = 'your template code';
require_once(DIR . '/includes/class_template_parser.php');
$parser = new vB_TemplateParser('{vb:raw messagearea}');
$parser->dom_doc = new vB_DomDocument($parser->fetch_dom_compatible());
$find = trim($parser->_parse_nodes($parser->dom_doc->childNodes()));
$parser = new vB_TemplateParser($template);
$parser->dom_doc = new vB_DomDocument($parser->fetch_dom_compatible());
$replace = trim($parser->_parse_nodes($parser->dom_doc->childNodes()));
$vbulletin->templatecache['newthread'] = str_replace($find, $replace, $vbulletin->templatecache['newthread']);
Put your template code in the template variable and remember to escape quotes!
with the above code it is not messagearea
145574
Scanu
06-25-2013, 02:35 PM
What's your exact code plugin?
Easy5s.net
06-25-2013, 02:43 PM
yes :)
Scanu
06-25-2013, 02:46 PM
this is the final code just replace "your template code" with your template code and it will work fine unless you won't escape quotes :)
$template = 'your template code';
require_once(DIR . '/includes/class_template_parser.php');
$parser = new vB_TemplateParser('{vb:raw messagearea}');
$parser->dom_doc = new vB_DomDocument($parser->fetch_dom_compatible());
$find = trim($parser->_parse_nodes($parser->dom_doc->childNodes()));
$parser = new vB_TemplateParser($template);
$parser->dom_doc = new vB_DomDocument($parser->fetch_dom_compatible());
$replace = trim($parser->_parse_nodes($parser->dom_doc->childNodes()));
$vbulletin->templatecache['newthread'] = str_replace($find, $find.$replace, $vbulletin->templatecache['newthread']);
Easy5s.net
06-25-2013, 02:52 PM
not work, you can TeamViewer help me :(
I need to create a user name is entered in newthread, and the user name are displayed like private.php page?do=newpm
Scanu
06-25-2013, 03:04 PM
My code is working? Do you want to add an input in the newthread page where users put username?
Easy5s.net
06-25-2013, 03:10 PM
My code is working? Do you want to add an input in the newthread page where users put username?
Your code does not work.
I want to create a new thread, enter username like this
145576
Scanu
06-25-2013, 03:15 PM
That's not easy as it seems that's a lot of work! You can't copy and paste codes from pm templates :) and even if you get this working on newthread page there is other works to do in the thread creation process! Just to know why do you need this? :)
Zachery
06-25-2013, 03:23 PM
You don't enter usernames in the newthread area though...
Easy5s.net
06-25-2013, 03:23 PM
I feel good and this is the function. I want to try it or to create new thread.
Zachery
06-25-2013, 03:25 PM
Why... you don't send new threads to people. You'd have to completely disable the ckeditor and add the custom code to it, or rewrite the vBulletin code to work inside of it (ckeditor).
Easy5s.net
06-25-2013, 03:27 PM
You don't enter usernames in the newthread area though...
I think if I can perform automatically add temp for my product. I not want to manually add temp :(
Easy5s.net
06-25-2013, 03:44 PM
blabla, i have done :D
Scanu
06-25-2013, 03:51 PM
Yes but this doesn't make sense after you put an username what do you expect from it? I mean nothing will happen :D
Zachery
06-25-2013, 04:02 PM
What does that field even do though?
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.