Go Back   vb.org Archive > vBulletin Article Depository > Read An Article > vBulletin 4 Articles

Reply
 
Thread Tools
[vBulletin 4] Simple way of including an external PHP file
Crimm's Avatar
Crimm
Join Date: Feb 2007
Posts: 170

 

Show Printable Version Email this Page Subscription
Crimm Crimm is offline 05-12-2010, 10:00 PM

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
  • Hook Location: What area of the forums you want this variable to appear. Don't know where? Use global_start
  • Title: Give it a title
  • Execution order: Your choice
  • Plugin PHP Code:

    Code:
    ob_start();
      require_once('LOCATION OF EXTERNAL FILE');
      $php_include = ob_get_contents();
    ob_end_clean();
    vB_Template::preRegister('TEMPLATE YOU ARE USING',array('php_include' => $php_include));

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}
That's it - Pretty simple; see?

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));
Thanks to David IB again.

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!
Reply With Quote
  #92  
Old 12-29-2012, 05:27 PM
cultd3ad cultd3ad is offline
 
Join Date: Nov 2007
Posts: 3
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
Reply With Quote
  #93  
Old 12-29-2012, 09:21 PM
acast acast is offline
 
Join Date: Aug 2008
Posts: 179
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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));
What i am doing wrong?

Thanks for your help.
Reply With Quote
  #94  
Old 12-29-2012, 11:30 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by cultd3ad View Post
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
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.
Reply With Quote
  #95  
Old 12-29-2012, 11:33 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by acast View Post
What i am doing wrong?

Thanks for your help.

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().
Reply With Quote
  #96  
Old 12-30-2012, 08:13 AM
acast acast is offline
 
Join Date: Aug 2008
Posts: 179
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kh99 View Post
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().
Still the same with that modification:

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));
It appears in all pages, and the forum dissapears.

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>&nbsp;<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} &nbsp;<input type="text" class="bginput" name="symbol" size="10" maxlength="10"/>
		</td>
		<td>
			{vb:rawphrase ambst_shares} &nbsp;<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>
Reply With Quote
  #97  
Old 12-30-2012, 12:27 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #98  
Old 12-30-2012, 12:35 PM
acast acast is offline
 
Join Date: Aug 2008
Posts: 179
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kh99 View Post
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.
The same file twice where?

This is the end of the vbtrade.php
Code:
print_output($templater->render());
How can i use an iframe? Is a tutorial or something here? I never heard that.

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?
Reply With Quote
  #99  
Old 12-30-2012, 12:55 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by acast View Post
The same file twice where?

Both of your 'require_once' lines have the same file name.


Quote:
This is the end of the vbtrade.php
Code:
print_output($templater->render());
How can i use an iframe? Is a tutorial or something here? I never heard that.
iframe is an html tag (you don't need to create a bbocde to use one in a template).

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?
Reply With Quote
  #100  
Old 12-30-2012, 01:06 PM
acast acast is offline
 
Join Date: Aug 2008
Posts: 179
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kh99 View Post
Both of your 'require_once' lines have the same file name.




iframe is an html tag (you don't need to create a bbocde to use one in a template).

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?
Ok, i'll explain, because perhaps i am wrong.

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>
And i read that in vb4 you have to register the variables to make it work, so i thought that i have to register the variables stocktable and preview to make it work. Am i wrong?
Reply With Quote
  #101  
Old 12-30-2012, 01:16 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by acast View Post
And i read that in vb4 you have to register the variables to make it work, so i thought that i have to register the variables stocktable and preview to make it work. Am i wrong?

So far that all looks OK. Edit: but I guess the issue is, where are those variables coming from?
Reply With Quote
Reply

Thread Tools

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 04:43 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.08571 seconds
  • Memory Usage 2,341KB
  • Queries Executed 26 (?)
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
  • (9)bbcode_code
  • (8)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_article
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (11)post_thanks_box
  • (7)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)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_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
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete