PDA

View Full Version : PHP code in custom vbulletin page help needed


nirvana43
07-03-2009, 03:49 PM
Hello
I'm trying to design one custom page while keeping vbulletin header, navbar and footer on it.
I've referred to following topics :
https://vborg.vbsupport.ru/showthread.php?t=62164&highlight=logicians
https://vborg.vbsupport.ru/showthread.php?t=217075
http://www.vbulletin.com/forum/showthread.php?t=197563

Here is the custom page i wanna have headers and footers on.
http://www.projectsplanet.org/forums/testverify.php (http://www.projectsplanet.org/forums/testverify.php)
Enter code 1234test to test above page.

When i try to put my code as follows in custom template created in Vbulletin admin CP, i'm getting error :
$stylevar[htmldoctype]
<html dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
<title>$vboptions</title>
$headinclude
</head>
<body>
$header

$navbar

[B][MY CODE GOES HERE]

$footer
</body>
</html>


When i try to save above template, i get following error :
The following error occurred when attempting to evaluate this template:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home2/******/public_html/forums/includes/adminfunctions_template.php(3729) : eval()'d code on line 16

I guess its because i'm also trying to write php code within template.
Please check attached php file testverify.php
Please tell me how do i put vbulletin header, navbar and footer there.

Following are the contents of attached testverify.php if you do not wish to download it :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Purchase AdiInviter</title>
</head>

<body>
<?php
$done=0;
$trid=$_POST['trans'];
if (!empty($_POST['step'])) $step=$_POST['step'];
else $step='inp';

?>
<table class="tborder" cellpadding="6" cellspacing="1" border="0" width="70%" align="center">

<tr>
<td class="tcat">Verify</td>
</tr>
<tr>
<td class="panelsurround" align="center">
<div class="panel">
<div align="left">
<div style="margin: 10px">
<?php
if ($step=="inp")
{
?>
<form id="verify" name="verify" method="post" action="">
<label>
<div align="center">
<p><strong>Enter Paypal Transaction ID of VbInviter Payment :</strong>
<input type="text" name="trans" id="trans" />
</p>
<p>
<input type="hidden" name="step" value="transid">
<input type="submit" name="step" id="step" value="verify" />
<br />
</p>
</div>
</label>
</form>
</div>

</div>
</div>
<?php
}
else if ($step=="verify")
{
//////////////////////////////////////////////////////////////////////////////////
$clients="1234test";
/////////////////////////////////////////////////////////////////////////////////
if ($trid==$clients)
{
$done=1;
}
else
{
$done=0;
}
if ($done==1)
{
?>
<div align="center">
<p><strong>
Successfully verified!
</strong></p>
<br />
<span class="highlight style2">Package #1</span><br />
Discount Price = <strong>45$ USD</strong><br />
<a href="http://www.projectsplanet.org/purchase.php">Click here to check Package #1 features. </a><br />
<----------Buy Link---------->
<br /><br />
<span class="highlight style2">Package #2</span><br />
Discount Price = <strong>80$ USD</strong><br />
<a href="http://www.projectsplanet.org/purchase.php">Click here to check Package #2 features. </a><br />
<----------Buy Link---------->

</div>
</div>

</div>
</div>

<?php
}
else if ($done==0)
{

?>
<div align="center">
<p><strong>
You have entered wrong transaction id.
</strong><br /><br />
<a href="verify.php">Click here to try again</a>.</p>
</div>
</div>

</div>
</div>

<?php
}
}
?>
</div>

</div>
</div>
</td>
</tr>
</table>

</body>
</html>





Detailed instructions are much appreciated.
Regards

EDIT - I dont wanna use <IFRAME> tag (Even with auto resizing <IFRAME> java script) :p

Dismounted
07-04-2009, 06:47 AM
Follow the instructions in the article you linked to yourself: https://vborg.vbsupport.ru/showthread.php?t=62164

In vBulletin, any HTML is placed inside templates. Processing is done in PHP, then the template(s) is called upon and echoed to the client.

nirvana43
07-04-2009, 08:33 AM
Follow the instructions in the article you linked to yourself: https://vborg.vbsupport.ru/showthread.php?t=62164

In vBulletin, any HTML is placed inside templates. Processing is done in PHP, then the template(s) is called upon and echoed to the client.

i tried to do the same but it aint working... i'm getting errors as mentioned above.
I've attached the code too... can you please tell me what exactly i'm suppose to write in template? :confused:

Dismounted
07-04-2009, 09:24 AM
Templates contain no PHP code, apart from variables. The template you posted is "empty", that is, you don't put in the most important bit - your code...

nirvana43
07-04-2009, 10:41 AM
Templates contain no PHP code, apart from variables. The template you posted is "empty", that is, you don't put in the most important bit - your code...

then what could be the solution on this? because my custom page contains lots of PHP code (Same logic i will be using for other custom pages which will be containing only pure PHP code, even HTML is echoed in my custom PHP page).
So all i want to know is how can i have vbulletin header, footer and navbar on any custom page? :o

Dismounted
07-04-2009, 11:41 AM
Your logic needs to be done and results stored in variables for later use in templates. That's how it is done in vBulletin.

nirvana43
07-05-2009, 01:36 AM
Your logic needs to be done and results stored in variables for later use in templates. That's how it is done in vBulletin.

now thats helpful.
here is what i understood :
i gotta put php logic only in testverify.php which will also contains following code in turn :
<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'test'); // change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(

);

// get special data templates from the datastore
$specialtemplates = array(

);

// pre-cache templates used by all actions
$globaltemplates = array(
'TEST',
);

// pre-cache templates used by specific actions
$actiontemplates = array(

);

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');

// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = array();
$navbits[$parent] = 'Test Page';

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('TEST') . '");');


MY PHP CODE GOES HERE


?>
Then i have to echo variables and html in vbulletin template.

Is that correct?

Dismounted
07-05-2009, 05:13 AM
Any processing needs to be done before any print_output() calls. Values should be assigned to variables. These variables are used in templates.

The best example I can give you is vBulletin itself.

nirvana43
07-05-2009, 08:57 AM
Any processing needs to be done before any print_output() calls. Values should be assigned to variables. These variables are used in templates.

The best example I can give you is vBulletin itself.

I solved it... thank you for your support sir. :)