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()函数绝对是整个应用程序的关键部分。如果我们按部就班了解其他操作(查看详细信息、图像以及搜索)我们将发现这个函数经常用到。