The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
[vBulletin 4] Simple way of including an external PHP file
There are other articles out there on variables, templates, etc on vBulletin 4. This is a simple example of including an external PHP files like you used to be able to do here: http://www.vbulletin.com/forum/showt...P-or-HTML-File Thanks to this Blog post by David IB http://www.vbulletin.com/forum/entry...s-to-templates and this article by cellarius https://vborg.vbsupport.ru/showthread.php?t=228078 I have figured out it's only a simple extra step. Step 1: Create a new plugin
Step 2: You will have to figure out these two entries for yourself: LOCATION OF EXTERNAL FILE & Hook Location To give you an example of what you should use is that if you want to display your external PHP file on your Forum's Home. Then replace these two with these values: Hook Location with forumhome_start TEMPLATE YOU ARE USING with FORUMHOME Keep in mind that global_start will still be acceptable, but it's extra loading time where it's not needed. Therefore choosing the optimum hook location is better for your performance overall. Step 3: Visit the Style Manager -> TEMPLATE YOU ARE USING and place the variable in your style where you want it. You will have to use the new format. Code:
{vb:raw php_include} Notes, If you want to: Include this PHP file in multiple templates then preRegister it for the multiple templates: Code:
vB_Template::preRegister('TEMPLATE YOU ARE USING',array('php_include' => $php_include)); vB_Template::preRegister('TEMPLATE YOU ARE USING 2',array('php_include' => $php_include)); I'm still learning as I go with vb4, but if I learn some more notes to add... I'll drop by here. I hope that helps some one out there! |
#92
|
|||
|
|||
Hi kh99,
thx to Replay and help me.... Your Info not Work! I have a failure in the Config or ? I use the php in the Sidebar Adden and this work fine! Why nothing Work in a Template? I have Read all howto and change some Codes, all not Work |
#93
|
|||
|
|||
Hi. I am having a problem, i registered two variables which are in the vbtrade_main template, and i want it to see it only in the php page vbtrade.php, but i see it in all pages! The forum also dissapears.
This is the code i put in the Hook Location with global_bootstrap_init_start Code:
ob_start(); require_once('vbtrade.php'); $stocktable = ob_get_contents(); ob_end_clean(); require_once('vbtrade.php'); $preview = ob_get_contents(); ob_end_clean(); vB_Template::preRegister('vbtrade_main',array('stocktable' => $stocktable)); vB_Template::preRegister('vbtrade_main',array('preview' => $preview)); Thanks for your help. |
#94
|
|||
|
|||
I'm sorry, but I don't understand. I understand that what I posted didn't work, but I don't understand the rest. Did you put that code in a template? It shouldn't go in a template, it needs to go in a plugin.
|
#95
|
|||
|
|||
It might only be that you're missing an ob_start() call. If you want to include two files separately, you would need to call ob_start() again after the first call to ob_end_clean(). |
#96
|
|||
|
|||
Quote:
Code:
ob_start(); require_once('vbtrade.php'); $stocktable = ob_get_contents(); ob_end_clean(); ob_start(); require_once('vbtrade.php'); $preview = ob_get_contents(); ob_end_clean(); vB_Template::preRegister('vbtrade_main',array('stocktable' => $stocktable)); vB_Template::preRegister('vbtrade_main',array('preview' => $preview)); The vbtrade_main template: Code:
{vb:stylevar htmldoctype} <html dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode} id="vbulletin_html"> <head> <title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title> <script type="text/javascript" src="clientscript/vbulletin_ajax_stocktrader.js"></script> {vb:raw headinclude} </head> <body> {vb:raw header} {vb:raw navbar} <br> <div id="pagetitle"> <h1>{vb:raw pagetitle}</h1> </div> <vb:if condition="$stocktable != null"> {vb:raw stocktable} <br> </vb:if> <!-- purchase preview --> <vb:if condition="$preview != null"> {vb:raw preview} <br> </vb:if> <!-- /purchase preview --> <!-- stock lookup table --> <form onsubmit="handle_stock_lookup(document.getElementById('lusymbol').value);return false;"> <table class='tborder' cellpadding='{vb:stylevar cellpadding}' cellspacing='{vb:stylevar cellspacing}' border='0' width='100%' align='center'> <tr><td class='tcat' colspan=99>Get Stock Quote</td></tr> <tr><td colspan=99 class=alt1><input type=text id='lusymbol' maxlength=10> <input class=button type=button onclick="handle_stock_lookup(document.getElementById('lusymbol').value);" value='Search'></td></tr> </table> </form> <div id='lookup_table'></div> <!-- /stock lookup table --> <br> <!-- buying table --> <table class="tborder" cellpadding="{vb:stylevar cellpadding}" cellspacing="{vb:stylevar cellspacing}" border="0" width="100%" align="center"> <tr> <td class="tcat" colspan=3> <a name="options" style="float:{vb:stylevar right}" href="#top" onclick="return toggle_collapse('newpost_options')"><img id="collapseimg_newpost_options" src="{vb:stylevar imgdir_button}/collapse_tcat$vbcollapse['collapseimg_newpost_options'].gif}" alt="" border="0" /></a> {vb:rawphrase ambst_buy} </td> </tr> <tbody id="collapseobj_newpost_options" style="$vbcollapse['collapseobj_newpost_options']"> <form action="vbtrade.php?do=previewpurchase" method="post" name="purchaseform"> <tr valign="top" class=alt1> <td> <b>{vb:rawphrase ambst_cashonhand} </b> {vb:raw cashonhand} </td> <td colspan=2> <vb:if condition="$vboptions['vbst_xchgrate']!=1"> <b>{vb:rawphrase ambst_usdonhand} </b>: \{vb:raw usdonhand} </vb:if> </td> </tr> <tr valign="top" class=alt2> <td> {vb:rawphrase ambst_symbol} <input type="text" class="bginput" name="symbol" size="10" maxlength="10"/> </td> <td> {vb:rawphrase ambst_shares} <input type="text" class="bginput" name="shares" size="10" maxlength="10"/> </td> <td> <input type="submit" class="button" name="sbutton" value="{vb:rawphrase ambst_previewpurchase} " accesskey="s" tabindex="1" /> </td> </tr> </form> </tbody> </table> <!-- /buying table --> {vb:raw footer} </body> </html> |
#97
|
|||
|
|||
That looks right, but it may have to do with what's in the scripts you're trying to include. For instance if they call exit() or die(), then that may be why the forum is disappearing. (If vbtrade.php is a vbulletin "powered" page that calls print_output() at the end, that would also do it). If that's the case, then maybe you can use an iframe instead.
Also I just noticed that you're including the same file twice - even if it worked, you'd probably get the same output for both. |
#98
|
|||
|
|||
Quote:
This is the end of the vbtrade.php Code:
print_output($templater->render()); Thanks for your answers! EDIT: An iframe is a bbcode. Do you mean i don't have to put the code in a new plugin, but in the new bbcode? The same code i put in the plugin? |
#99
|
|||
|
|||
Both of your 'require_once' lines have the same file name. Quote:
To be honest I'm not sure what you're trying to do. It looks like you're trying to use the method in this article to include output from an external file (vbtrade.php), but you also have a template. What are you using that template for, and what output do you expect from vbtrade.php? And where are you trying to include it? |
#100
|
|||
|
|||
Quote:
I am trying to make work a vb3 plugin in vb4, and i see in the template this lines: Code:
[B]<vb:if condition="$stocktable != null"> {vb:raw stocktable} <br> </vb:if> <!-- purchase preview --> <vb:if condition="$preview != null"> {vb:raw preview} <br> </vb:if> |
#101
|
|||
|
|||
Quote:
So far that all looks OK. Edit: but I guess the issue is, where are those variables coming from? |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|