zencart前页和后页算法分析
2012-05-29 11:45 来源:www.chinab4c.com 作者:zencart专家
zencart确实是一个出色的程序,在这个系统中,各个部分都设计的非常合理,也非常的简单.比如zencart前页和后页算法分析,我们就不难发现,在这个算法里面,确实是简单而又朴素,通过分类ID取得商品的ID.还可以对各种方式进行排序,从而在zencart商品页面获得该商品前页和后页商品信息。
先看includes/modules/product_prev_next.php页面.
$sql = "select p.products_id, p.products_model, p.products_price_sorter, pd.products_name, p.products_sort_order
from " . TABLE_PRODUCTS . " p, "
. TABLE_PRODUCTS_DESCRIPTION . " pd, "
. TABLE_PRODUCTS_TO_CATEGORIES . " ptc
where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id= '" . (int)$_SESSION['languages_id'] . "' and p.products_id = ptc.products_id and ptc.categories_id = '" . (int)$current_category_id . "'" .
$prev_next_order;
$products_ids = $db->Execute($sql);
$products_found_count = $products_ids->RecordCount();
while (!$products_ids->EOF) {
$id_array[] = $products_ids->fields['products_id'];
$products_ids->MoveNext();
}
通过分类,就可以取得该分类下的商品ID信息.从而进行排序.取得了商品的ID之后,我们就可以按照需求来获取我们的商品信息了,如果该商品列表只有一个商品,那么前页和后页都是本身,如果有2个商品,那么前页就是第一个商品和到2个商品。
foreach ($id_array as $key => $value) {
if ($value == (int)$_GET['products_id']) {
$position = $counter;
if ($key == 0) {
$previous = -1; // it was the first to be found
} else {
$previous = $id_array[$key - 1];
}
if (isset($id_array[$key + 1]) && $id_array[$key + 1]) {
$next_item = $id_array[$key + 1];
} else {
$next_item = $id_array[0];
}
}
$last = $value;
$counter++;
}
通过这段代码我们可以看到。
1:取得zencart商品前页
if ($key == 0) {
$previous = -1; // it was the first to be found
} else {
$previous = $id_array[$key - 1];
}
如果该数组为空,那么就不存在商品的前面和后面关系,否则取得该商品ID的前面数组$key-1
2:取得zencart商品后页
if (isset($id_array[$key + 1]) && $id_array[$key + 1]) {
$next_item = $id_array[$key + 1];
} else {
$next_item = $id_array[0];
}
如果该商品ID的后面$key+1存在,那么返回该商品,否则就返回第一个.
3:通过循环商品ID取得商品总数量$counter
这个算法真简洁,确实不错。以上就是对zencart前页和后页算法分析总结。
来源:http://www.chinab4c.com
最近更新
常用插件
- ecshop通用红包编码
很多时候,为了结合促销,必须扩展一下ecshop的红包功能。ecshop的红包...
- ecshop红包修改成满多少减
我们在长期使用ecshop的时候,我们可以发现。ecshop的红包是一个非常强...
- ecshop降价通知登记插件
ecshop降价通知登记插件,主要是为了方便某些客户,对商品价格要求比...
- ecshop购物车功能改进[插件
ecshop购物车功能改进[插件套餐]主要是我们最近开发工作和开发项目中。...
- ecshop分类树中统计商品数
最近忙于开发其他项目,在不少朋友不断要求和催促的情况下,做出了该小...