PDA

View Full Version : sub pages from custom portal.


MjrGaelic
09-23-2007, 05:47 PM
I have tried posting this question in the appropriate channels without the response so I'm hoping you coders can help.

This should be theoretically simple however I digress I'm not a coder and I can't resolve even a simple concept.

The task is to load sub_pages from smedd's portal and I want to do so without having to create additional php pages for each page I want to have. so, basically index.php?page=mypagename.

I'm ok with creating a page.php so that I can call out like page.php?do=mypagename etc.

I've gone through the API tutorial and while it partially works it uses the forum template not the index.php format.

Here is the code for my index.php

<?php
/*================================================= =====================*\
|| ################################################## ################## ||
|| # SmEdD's Portal # ||
|| # ---------------------------------------------------------------- # ||
|| # Copyright ?2006 Stephen "SmEdD" Medd # ||
|| # http://www.smedd.com | stevemedd@gmail.com # ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
|| ################################################## ################## ||
\*================================================ ======================*/

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

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT', 'index');

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

// get special data templates from the datastore
$specialtemplates = array(
'newscache'
);

// pre-cache templates used by all actions
$globaltemplates = array(
'smedd_index',
'smedd_newsbits',
'smedd_header',
'smedd_footer'
);

$actiontemplates = array();

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

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

// ######################### PROCESS NEWS ############################
if (!empty($vbulletin->newscache))
{
foreach ($vbulletin->newscache AS $news)
{
$vbcollapse['collapseobj_newsid'] =& $vbcollapse["collapseobj_newsbit_$news[threadid]"];
$vbcollapse['collapseimg_newsid'] =& $vbcollapse["collapseimg_newsbit_$news[threadid]"];

$show['reply-s'] = true;
if ($news['replycount'] == 1)
{
$show['reply-s'] = false;
}

$news['time'] = vbdate($vbulletin->options['timeformat'], $news['dateline']);
$news['date'] = vbdate($vbulletin->options['dateformat'], $news['dateline'], 1);
eval('$newsbits .= "' . fetch_template('smedd_newsbits') . '";');
}

// memory saving
unset($newscache, $news);
}

// #################### EVAL GLOBAL TEMPLATES #######################
// Clear the header and footer variables so we can set them again without problems!
unset($header, $footer);

$vbphrase['powered_by_vbulletin'] = "Home page powered by SmEdD's Portal, Copyright &copy;2006, Stephen Medd.<br />\n" . $vbphrase['powered_by_vbulletin'];

// Output all the templates
eval('$header = "' . fetch_template('smedd_header') . '";');
eval('$footer = "' . fetch_template('smedd_footer') . '";');
if ($shownewpm)
{
eval('$footer .= "' . fetch_template('pm_popup_script') . '";');
}

eval('print_output("' . fetch_template('smedd_index') . '");');
?>


I've tried adding:

if ($_REQUEST['do'] == 'ventrilo')
{
eval('print_output("' . fetch_template('page_ventrilo') . '");');
}


but nothing happens (ventrilo is the example, and the templates name is page_ventrilo)

If possible what I would like to have is a piece of code in the page that would call out custom templates.. I know vbadvanced does this seamlessly but I don't want to run vbadvanced, just syndicate news and add my own content.

Can anyone offer a suggestion or 2 to point me in the right direction?

If you need, the context of the project is here (http://www.edmontongamers.com/eodmod/forum) so you can see what I'm working towards.

Kind regards,

Ryan

Paul M
09-23-2007, 09:54 PM
You don't say where you added that code - but remember that you can only call print_output once() - once you call that, the page is output and execution ends.

MjrGaelic
09-25-2007, 12:42 AM
Thanks for responding Paul,

I placed the last bit of code at the end of the page before the final ?> as instructed in the tutorial I read.

How do I set the print_out to be dynamic so that I can generate URL's like page.php?do=mypage where mypage is a template.

Dismounted
09-25-2007, 05:22 AM
<?php
/*================================================= =====================*\
|| ################################################## ################## ||
|| # SmEdD's Portal # ||
|| # ---------------------------------------------------------------- # ||
|| # Copyright ?2006 Stephen "SmEdD" Medd # ||
|| # http://www.smedd.com | stevemedd@gmail.com # ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ---------------- VBULLETIN IS NOT FREE SOFTWARE ---------------- # ||
|| # http://www.vbulletin.com | http://www.vbulletin.com/license.html # ||
|| ################################################## ################## ||
\*================================================ ======================*/

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

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('THIS_SCRIPT', 'index');

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

// get special data templates from the datastore
$specialtemplates = array(
'newscache'
);

// pre-cache templates used by all actions
$globaltemplates = array(
'smedd_index',
'smedd_newsbits',
'smedd_header',
'smedd_footer'
);

$actiontemplates = array();

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

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

// ######################### PROCESS NEWS ############################
if (!empty($vbulletin->newscache))
{
foreach ($vbulletin->newscache AS $news)
{
$vbcollapse['collapseobj_newsid'] =& $vbcollapse["collapseobj_newsbit_$news[threadid]"];
$vbcollapse['collapseimg_newsid'] =& $vbcollapse["collapseimg_newsbit_$news[threadid]"];

$show['reply-s'] = true;
if ($news['replycount'] == 1)
{
$show['reply-s'] = false;
}

$news['time'] = vbdate($vbulletin->options['timeformat'], $news['dateline']);
$news['date'] = vbdate($vbulletin->options['dateformat'], $news['dateline'], 1);
eval('$newsbits .= "' . fetch_template('smedd_newsbits') . '";');
}

// memory saving
unset($newscache, $news);
}

// #################### EVAL GLOBAL TEMPLATES #######################
// Clear the header and footer variables so we can set them again without problems!
unset($header, $footer);

$vbphrase['powered_by_vbulletin'] = "Home page powered by SmEdD's Portal, Copyright &copy;2006, Stephen Medd.<br />\n" . $vbphrase['powered_by_vbulletin'];

// Output all the templates
eval('$header = "' . fetch_template('smedd_header') . '";');
eval('$footer = "' . fetch_template('smedd_footer') . '";');
if ($shownewpm)
{
eval('$footer .= "' . fetch_template('pm_popup_script') . '";');
}

if ($_REQUEST['do'] == 'ventrilo')
{
eval('print_output("' . fetch_template('page_ventrilo') . '");');
}
else
{
eval('print_output("' . fetch_template('smedd_index') . '");');
}
?>

MjrGaelic
09-25-2007, 05:16 PM
Thank you dismounted, I'll try that this evenin when I get home. As I plan to add many pages to the site am I correct that I will be adding code for each page like:


if ($_REQUEST['do'] == 'ventrilo')
{
eval('print_output("' . fetch_template('page_ventrilo') . '");');
}
else
{
if ($_REQUEST['do'] == 'page1')
{
eval('print_output("' . fetch_template('page_page1') . '");');
}
else
{
if ($_REQUEST['do'] == 'page2')
{
eval('print_output("' . fetch_template('page_page2') . '");');
}
else
{

and so on?

Dismounted
09-26-2007, 06:45 AM
if ($_REQUEST['do'] == 'ventrilo')
{
eval('print_output("' . fetch_template('page_ventrilo') . '");');
}
else if ($_REQUEST['do'] == 'page1')
{
eval('print_output("' . fetch_template('page_page1') . '");');
}
else if ($_REQUEST['do'] == 'page2')
{
eval('print_output("' . fetch_template('page_page2') . '");');
}
else
{
eval('print_output("' . fetch_template('smedd_index') . '");');
}

Opserty
09-26-2007, 04:37 PM
Use switch as opposed to multiple elseif's I'm pretty sure they work as expected in vB.

http://php.net/switch

MjrGaelic
09-26-2007, 11:36 PM
Thank you Dismounted. For clenliness sake I've actually created a page.php and call the evals from there..

Opserty, what advantage is switch over what has been presented. I looked it over and it looked like I'd need a good sit down and a coffee to apply it.

Dismounted
09-27-2007, 05:04 AM
Converted to switches :).
switch ($_REQUEST['do'])
{
case 'ventrilo':
eval('print_output("' . fetch_template('page_ventrilo') . '");');
break;
case 'page1':
eval('print_output("' . fetch_template('page_page1') . '");');
break;
case 'page2':
eval('print_output("' . fetch_template('page_page2') . '");');
break;
default:
eval('print_output("' . fetch_template('smedd_index') . '");');
break;
}