PDA

View Full Version : Possible template issue


leonarrias
01-19-2011, 08:14 PM
Hi there, had a good look around the articles area before deciding to post this asking for help.

Looked at the 'how to add custom vbulletin page for VB4' done the new template named it, done the php file and added a nice little dropdown box to link it to.

However, when i try to add content to the page i have my major issue:

Presently i have the custom page content in the actual php page, resulting in said content being at the very top of the page.

The content is php code to check if a server(s) is online or offline....if i try to put this into the customer template i made, then all i get is what i pasted coughed up on the page, unparsed.

That is my problem....putting the php code in the php file makes it work, but it sticks at the top of the page, if i put the code in the template, the format works, but it doesn't parse in php.

Page in question: http://flexgaming.net/servers.php

Anyone able to help with this?

Many thanks!

Lynne
01-19-2011, 09:14 PM
You'll need to post your full php page and your template in order for anyone to see what is wrong. Please use the code tags when you do so.

leonarrias
01-19-2011, 09:18 PM
Okay here's the template and php code.

Template:
{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml" dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
<head>
<title>{vb:raw vboptions.bbtitle} - {vb:raw pagetitle}</title>
{vb:raw headinclude}
{vb:raw headinclude_bottom}
</head>
<body>

{vb:raw header}

{vb:raw navbar}

<div id="pagetitle">
<h1>{vb:raw pagetitle}</h1>
</div>
<h2 class="blockhead">Title</h2>
<div class="blockbody">

<-I enter my text here->

<div class="blockrow">
</div>
</div>

{vb:raw footer}
</body>
</html>

PHP FILE CODE:

<?php

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

// #################### DEFINE IMPORTANT CONSTANTS #######################

define('THIS_SCRIPT', 'FlexGaming Servers List');
define('CSRF_PROTECTION', true);
// 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('serverslist',
);

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

// ######################### REQUIRE BACK-END ############################
// if your page is outside of your normal vb forums directory, you should change directories by uncommenting the next line
// chdir ('/path/to/your/forums');
require_once('./global.php');
$navbits[$parent] = 'Servers';
// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = construct_navbits(array('' => 'Flex-Gaming Servers List'));
$navbar = render_navbar_template($navbits);

$data .= "
<style>
td,body
{
font-family: Arial, Helvetica, sans-serif;
font-size: 8pt;
color: #444444;
}
</style>
<br>
<center>
<div style=\"border-bottom:1px #999999 solid;width:480;\"><b>
<font size='1' color='#3896CC'>Service Status</font></b>
</div>
</center>
<br>";

//configure script
$timeout = "1";

//set service checks
//$port[1] = "80"; $service[1] = "Apache"; $ip[1] ="";
$port[1] = "25565"; $service[1] = "<font size='2' color='#3896CC'>*Official FlexGaming* - MineCraft Server</font>"; $ip[1] ="81.19.212.247";
$port[2] = "25566"; $service[2] = "<font size='2' color='#3896CC'>*FlexGaming Member Hosted* - MineCraft Server</font>"; $ip[2] ="62.75.149.88";
/*$port[4] = "25"; $service[4] = "Email(POP3)"; $ip[4] ="";
$port[5] = "143"; $service[5] = "Email(IMAP)"; $ip[5] ="";
$port[6] = "2095"; $service[6] = "Webmail"; $ip[6] ="";
$port[7] = "2082"; $service[7] = "Cpanel"; $ip[7] ="";
$port[8] = "80"; $service[8] = "Internet Connection"; $ip[8] ="google.com";
$port[9] = "2086"; $service[9] = "WHM"; $ip[9] =""; */

//
// NO NEED TO EDIT BEYOND HERE
// UNLESS YOU WISH TO CHANGE STYLE OF RESULTS
//

//count arrays
$ports = count($port);
$ports = $ports + 1;
$count = 1;

//beggin table for status
$data .= "<table width='480' border='1' cellspacing='0' cellpadding='3' style='border-collapse:collapse' bordercolor='#333333' align='center'>";

while($count < $ports){

if($ip[$count]==""){
$ip[$count] = "localhost";
}

$fp = @fsockopen("$ip[$count]", $port[$count], $errno, $errstr, $timeout);
if (!$fp) {
$data .= "<tr><td>$service[$count]</td><td bgcolor='#FFC6C6'>Offline </td></tr>";
} else {
$data .= "<tr><td>$service[$count]</td><td bgcolor='#D9FFB3'>Online</td></tr>";
}
$count++;

}

//close table
$data .= "</table>";

echo $data;
/*$data1 .= "
<br>
<center>
<div style=\"border-bottom:1px #999999 solid;width:480;\"><b>
<font size='1' color='#3896CC'>Server Information</font></b>
</div>
</center><BR>"; */

$data1 .= "<table width='480' border='1' cellspacing='0' cellpadding='3' style='border-collapse:collapse'

bordercolor='#333333' align='center'>";

/*//GET SERVER LOADS
$loadresult = @exec('uptime');
preg_match("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+(
[0-9\.]+)/",$loadresult,$avgs);


//GET SERVER UPTIME
$uptime = explode(' up ', $loadresult);
$uptime = explode(',', $uptime[1]);
$uptime = $uptime[0].', '.$uptime[1];

$data1 .= "<tr><td>Server Load Averages </td><td>$avgs[1], $avgs[2], $avgs[3]</td>\n";
$data1 .= "<tr><td>Server Uptime </td><td>$uptime </td></tr>";
$data1 .= "</table>";
echo $data1;*/


// ###### YOUR CUSTOM CODE GOES HERE #####
$pagetitle = 'Server List';

// ###### NOW YOUR TEMPLATE IS BEING RENDERED ######

$templater = vB_Template::create('serverslist');
$templater->register_page_templates();
$templater->register('navbar', $navbar);
$templater->register('pagetitle', $pagetitle);
print_output($templater->render());

?>


Hope this helps, i've looked it over and as previously stated, really stumped.

Lynne
01-19-2011, 09:27 PM
Do not "echo" $data. You need to put the data variable into your template after registering it. You add something like this at the bottom:

$templater->register('pagetitle', $pagetitle);
$templater->register('data', $data);

print_output($templater->render());

And this in your template:
<h2 class="blockhead">Title</h2>
<div class="blockbody">

{vb:raw data}

<div class="blockrow">

leonarrias
01-19-2011, 09:40 PM
That's done the trick, thank you very much.

Will explore that in better detail so i can learn from it, that had me fuming a good full day, again many thanks Lynne!