33.3.2 显示特定种类的图书
当browsenode(查看一个种类)事件被执行时,将运行如下代码:
showCategories($mode);
$category=getCategoryName($browseNode);
if(!$category||($category=='Best Selling Books')){
echo"<h1>Current Best Sellers</h1>";
}else{
echo"<h1>Current Best Sellers in".$category."</h1>";
}
showCategories()函数将显示选中种类的列表,我们可以在页面的最上方看到这个列表。getCategoryName()函数返回给定browsenode号条件下的当前种类名称。showBrowseNode()函数将在一个页面中显示该目录下的图书。
下面,我们先来分析showCategories()函数。该函数代码如程序清单33-5所示。
程序清单33-5 categoryfunctions.php函数库中的showCategories()函数——种类列表
//display a starting list of popular categories
function showCategories($mode){
global$categoryList;
echo"<hr/><h2>Selected Categories</h2>";
if($mode=='Books'){
asort($categoryList);
$categories=count($categoryList);
$columns=4;
$rows=ceil($categories/$columns);
echo"<table border=\"0\"cellpadding=\"0\"cellspacing=\"0\"
width=\"100%\"><tr>";
reset($categoryList);
for($col=0;$col<$columns;$col++){
echo"<td width=\"".(100/$columns)."%\"valign=\"top\"><ul>";
for($row=0;$row<$rows;$row++){
$category=each($categoryList);
if($category){
$browseNode=$category['key'];
$name=$category['value'];
echo"<li><span class=\"category\">
<a href=\"index.php?action=browsenode&browseNode="
.$browseNode."\">".$name."</a></span></li>";
}
}
echo"</ul></td>";
}
echo"</tr></table><hr/>";
}
以上函数使用categoryList数组将browsenode号映射到种类名称,该数组在constants.php函数库中声明。所需的browsenode将被硬编码到这个数组中。该函数还将对这个数组进行排序,并且显示不同的种类。
在主事件循环中,接下来调用的getCategoryName()函数可以用来查询当前正在查看的browsenode名称,这样我们就可以在页面上显示一个标题,例如,“Current Best Sellers in Business&Investing(当前商业和投资领域中最热销的产品)”。它将在前面提到的categoryList数组中查询这个关键字。
在这里,真正有趣的地方是从调用showBrowseNode()函数开始的。这个函数如程序清单33-6所示。
程序清单33-6 bookdisplayfunctions.php函数库中的showBrowseNode()函数——种类列表
//For a particular browsenode,display a page of products
function showBrowseNode($browseNode,$page,$mode){
$ars=getARS('browse',array('browsenode'=>$browseNode,
'page'=>$page,'mode'=>$mode));
showSummary($ars->products(),$page,$ars->totalResults(),
$mode,$browseNode);
这个函数将实现两个功能。首先,它将调用cachefunctions.php函数库中的getARS()函数。getARS()函数将获得并返回一个AmazonResultSet对象(稍后将详细介绍这个对象)。接下来,该函数将调用bookdisplayfunctions.php函数库中的showSummary()函数来显示所获得的信息。
getARS()函数绝对是整个应用程序的关键部分。如果我们按部就班了解其他操作(查看详细信息、图像以及搜索)我们将发现这个函数经常用到。