查看: 101|回覆: 1

[教程] ECSHOP全部品牌页实现分页换页功能方法

[複製鏈接]

3

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-5-3
發表於 2023-6-2 00:00:00 | 顯示全部樓層 |閲讀模式

最近看到有朋友在论坛问到过此类问题,所以抽空写了下文,“在全部品牌页实现分页换页功能”,对商品品牌较多的朋友也许会有帮助,这个修改教程需要修改ecshop的系统文件,所以修改之前请先备份文件。

修改教程

打开brand.php找到

if (empty($brand_id))
{

再找到

exit();
}

将这两者之间的代码全部替换为下面代码


 

代码如下:


assign_template();
$position = assign_ur_here('', $_LANG['all_brand']);
$smarty->assign('page_title', $position['title']); // 页面标题
$smarty->assign('ur_here', $position['ur_here']); // 当前位置
$smarty->assign('categories', get_categories_tree()); // 分类树
$smarty->assign('helps', get_shop_help()); // 网店帮助
$smarty->assign('top_goods', get_top10()); // 销售排行
$sql = "SELECT count(*) as brand_count from ( select b.brand_id ".
"FROM " . $GLOBALS['ecs']->table('brand') . "AS b, ".
$GLOBALS['ecs']->table('goods') . " AS g ".
"WHERE g.brand_id = b.brand_id AND is_show = 1 " .
" AND g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 ".
"GROUP BY b.brand_id ) AS gb";
$brand_count=$GLOBALS['db']->getOne($sql); //品牌(含有商品的)数量 
$page = !empty($_REQUEST['page']) && intval($_REQUEST['page']) > 0 ? intval($_REQUEST['page']) : 1;
$size = 3;
$max_page = ($brand_count> 0) ? ceil($brand_count / $size) : 1;
if ($page > $max_page) {$page = $max_page;}
$start=($page - 1) * $size; 
$sql = "SELECT b.brand_id, b.brand_name, b.brand_logo, b.brand_desc, COUNT(*) AS goods_num, IF(b.brand_logo > '', '1', '0') AS tag ".
"FROM " . $GLOBALS['ecs']->table('brand') . "AS b, ".
$GLOBALS['ecs']->table('goods') . " AS g ".
"WHERE g.brand_id = b.brand_id AND is_show = 1 " .
" AND g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 ".
"GROUP BY b.brand_id HAVING goods_num > 0 ORDER BY tag DESC, b.sort_order ASC limit $start,$size";
$row = $GLOBALS['db']->getAll($sql);
foreach ($row AS $key => $val)
{
$row[$key]['url'] = build_uri('brand', array('cid' => $cat, 'bid' => $val['brand_id']), $val['brand_name']);
$row[$key]['brand_desc'] = htmlspecialchars($val['brand_desc'],ENT_QUOTES);
}
$pager['search'] = array( );
$pager = get_pager('brand.php', $pager['search'], $brand_count, $page, $size);
$pager['display'] = $display;
$smarty->assign('pager', $pager);
$smarty->assign('brand_list', $row); 
$smarty->display('brand_list.dwt');

 

 

打开 模板文件 brand_list.dwt 在你想要显示换页信息的地方加入下面代码

<!-- #BeginLibraryItem "/library/pages.lbi" --><!-- #EndLibraryItem -->

如果你使用的是官方默认模板,那么在

<div></div>

这行代码下面添加

<!-- #BeginLibraryItem "/library/pages.lbi" --><!-- #EndLibraryItem -->

这样就可以在品牌添加分页代码了。

回覆

使用道具 舉報

0

主題

1223

回帖

7459

積分

琼殿精英

金币
6236
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 1 小時前 | 顯示全部樓層
感谢楼主的分享!

这个功能确实很实用,对于品牌比较多的商城来说太需要分页了,不然品牌列表拉得太长用户体验很不好。
不过有个小问题想请教一下

1. 关于代码中的分页数量
我看到你设置的每页显示数量是 $size = 3;,这个数量是不是有点少了?一般品牌页显示6-12个比较合适吧?请问这个数值是根据什么来设定的呢?

2. 关于SQL查询效率
那个SQL语句用了子查询来统计品牌数量,在商品数据量很大的情况下会不会有点慢?有没有什么优化建议?

3. 模板问题
如果用的不是官方默认模板,是不是只需要在对应的模板文件里找到合适位置加上那个分页库文件引用就可以了?

另外想问下,改了这个之后会不会影响其他页面的正常功能?毕竟修改的是系统文件,还是有点担心的。

不管怎样,先 收藏了!等有空的时候来试试看效果。再次感谢楼主的无私分享![em01]
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部