Page Templates:Creating a Category Template

From Whirlwind eCommerce Wiki
Jump to: navigation, search
Page Template Managers

Create a category template

Creating a category template is very similar to creating a basic template, with the addition of children. Children are a list of homogeneous items, controlled by relationships in page management, that appear inside of a page. Children are synonymous with subcategories that are displayed in a category page, product pages that are displayed in a sub category page, photos that are displayed in a photo album page, cross sell product pages that appear in a product page, etc. Children are assigned to a page using relationship management in page management. Those assigned children (and associated data) are accessible via the pageChildrenGet function.

// note that we are skipping several of the typical elements of a page template
// to focus on the children element
// please see the 'creating a basic template' for other items you typically see in a template
// including menu bars, etc.
 
// always start your templates with any functions you require
// to gather the data you need for the page
 
// lets start by getting our child data
$children = eV::pageChildrenGet($pageId,"title,summaryImage,summary,link"); 
 
// our opening html tags
echo "<!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\" xml:lang=\"en\" lang=\"en\" dir=\"ltr\">
";
 
// now for the head
// notice we use some core variables here to specify the title, meta keywords and description
// the contents of these variables are controlled by page management
// note the use of the php htmlspecialchars function to ensure no characters in the variable content 'break' the tags
echo "
<head>
<meta name=\"keywords\" content=\"" . htmlspecialchars($metaKeywords) . "\">
<meta name=\"description\" content=\"" . htmlspecialchars($metaDescription) . "\">
<title>" . htmlspecialchars($metaTitle) . "</title>
</head>
";
 
// start the body tag
echo "<body>";
 
// lets build an outer table to hold our page content
echo "<table width=779>";
 
// this is the top banner
echo "<tr><td align=center><font size=6><b>WELCOME TO OUR WEB SITE</b></font></td></tr>";
 
// now lets display the center page content
echo "<tr><td valign=top>";
 
// first im going to display the message output
// this is a variable used to pass messages (errors, notifications, etc) from page to page for visitors
// you want this highlighted so it is brought to their attention
// only display this if it has value
if(!empty($attributes['message'])) echo "<font color=red>" . $attributes['message']] . "</font><br><br>";
 
// center page content
// pulled from core variables
// the contents of these variables is controlled via page management
echo "<b>$title</b><br><i>$subTitle</i><br><br>$copy<hr>";
 
// now I am going to show the children below the copy
// note you can display the children any way you wish (listed, like articles, checkerboard, with/without images, etc)
// just make sure you call on the fields you require via the fieldList attribute in the pageGetChildren function
// I'm going to display a checkerboard list of children
echo "<table align=center border=2><tr>";
 
// setting a counter
// this is to keep track of each cell, so we know when to start the next row
$counter = 0;
// lets loop thru the children
// remember $children is what we assigned the results of the pageGetChildren function
foreach($children as $child) {
// if we are after the 3rd cell, lets start a new row
if($counter/3 == intval($counter/3) && $counter != 0) echo "</tr><tr>";
// increment the counter
$counter++
// output the cell
echo "<td valign=top width=200>";
echo "<a href=\"" . $child['link'] . "\"><img src=\"" . $child['summaryImage'] . "\" border=0></a>";
echo "<br><a href=\"" . $child['link'] . "\"><b>" . $child['title'] . "</b></a><br>" . $child['summary'];
echo "</td>";
};
// close out the child table
echo "</tr></table>";
 
// now lets close out the center content cell
echo "</td></tr>";
 
// time for the bottom menu
echo "<tr><td colspan=2 align=center> | ";
foreach($bottomMenu as $menuItem) echo " <a href=\"" . $menuItem['link'] . "\" target=\"" . $menuItem['target'] . "\">" . $menuItem['text'] . "</a> | ";
echo "</td></tr>";
 
// close out the outer wrapping table
echo "</table>";
 
// close out the body and html
echo "</body>
</html>";
  • For details on using children, and more examples, see the pageChildrenGet function.
  • To many children to display on one page gracefully? use the handy pagination function to allow visitors to 'page' through a large number of results.