ZenCart用户选择分类页每页显示产品数量的方法

用于收藏精华贴子、网友共享的资料等。可以回复,不能发新贴。

版主: Jack

版面规则
本版面不能发新贴,可以回复

ZenCart用户选择分类页每页显示产品数量的方法

帖子hopestar86 » 2012-05-19 23:57

zencart默认分类页每页显示产品数量是固定的,今天教大家怎样让顾客可以选择每页显示的产品的数量。

效果图

方式一:全部展示

方式二:下拉框


修改方法
1.导入sql
代码: 全选
INSERT INTO configuration (configuration_id, configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, last_modified, date_added, use_function, set_function)
VALUES
(NULL, 'Custom Products Listing- Number Per Page', 'CUSTOM_LISTING_NUMBER', '3,6,9', 'Example 3,6,9', 8,295, NOW(), NOW(), NULL, NULL);

然后,后台—Configuration—Product Listing—Custom Products Listing- Number Per Page填写可供选择的每页产品数量。
2.includes\modules\YOUR_TEMPLATE\product_listing.php中,查找
代码: 全选
$show_submit = zen_run_normal();

后台增加
代码: 全选
$allnum=$db->Execute($listing_sql);
if(isset($_GET['pagesize']) && (int) $_GET['pagesize'] >0 && (int) $_GET['pagesize'] < 5000){
   $pagenum=(int) $_GET['pagesize'];
}elseif($_GET['pagesize']=='all'){
   $pagenum=$allnum->RecordCount();
}else{
   $pagenum=MAX_DISPLAY_PRODUCTS_LISTING;
}

查找
代码: 全选
$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_PRODUCTS_LISTING, 'p.products_id', 'page');

修改为
代码: 全选
$listing_split = new splitPageResults($listing_sql, $pagenum, 'p.products_id', 'page');

3.includes\templates\YOUR_TEMPLATE\templates\tpl_modules_product_listing.php中,查找
代码: 全选
<div id="productsListingTopNumber" class="navSplitPagesResult back"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></div>
<div id="productsListingListingTopLinks" class="navSplitPagesLinks forward"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, zen_get_all_get_params(array('page', 'info', 'x', 'y', 'main_page'))); ?></div>
<br class="clearBoth" />

如果使用全部展示方式,在其后增加
代码: 全选
<?php
      $perPage=$_GET['pagesize'];
      $parameters = zen_get_all_get_params(array('page', 'info', 'x', 'y', 'pagesize'));
        $perpage_links = '<div class="perPage">Items Per Page: ';
      $array_perpage=explode(',',CUSTOM_LISTING_NUMBER);
      foreach($array_perpage as $value){
        $perpage_links .= ($perPage!=$value) ? '<a href="' . zen_href_link($_GET['main_page'], $parameters.'&pagesize=' .$value, 'NONSSL') . '">'.$value.'</a>' :$value;
      $perpage_links .= ' | ';
      }
        $perpage_links .= ($perPage!='all') ? '<a href="' . zen_href_link($_GET['main_page'], $parameters.'&pagesize=all&', 'NONSSL') . '">All</a>' : 'ALL';
        $perpage_links .= '</div>';
      $parameters='';
      echo $perpage_links;
?>

如果使用下拉框方式,在其后增加
代码: 全选
<?php
      $perPage=$_GET['pagesize'];
      $parameters = zen_get_all_get_params(array('page', 'info', 'x', 'y', 'pagesize'));
      $perpage_links = '<div class="perPage"><strong>Show: </strong>';
      $perpage_links .='<select name="pagesize" onchange="changePagesize(this);">';
      $array_perpage=explode(',',CUSTOM_LISTING_NUMBER);
      foreach($array_perpage as $value){
         if($perPage==$value){
               $perpage_links .='<option value="'.$value.'" selected="selected">'.$value.'</option>';
         }else{
               $perpage_links .='<option value="'.$value.'">'.$value.'</option>';
         }
      }
      if($perPage=='all'){
         $perpage_links .='<option value="all" selected="selected">All</option>';
      }else{
         $perpage_links .='<option value="all">All</option>';
      }
      $perpage_links .='</select>';
      $perpage_links .= '</div>';
      echo $perpage_links;
?>
<script language="javascript"  type="text/javascript">
function changePagesize(obj){
         window.location.href= "<?php echo str_replace('amp;','',zen_href_link($_GET['main_page'], $parameters, 'NONSSL')) ?>"+ "&pagesize="+obj.value;
}
</script>

大家可以根据上面的思路,写出更多如 商品横竖排,价格从高到低 从低到高等加强用户体验的方法

本文转载自:E-zencart,一起进步
原文地址http://www.ezencart.com/pages/798.html
hopestar86
高级会员
高级会员
 
帖子: 140
注册: 2010-02-04 9:56
地址: http://www.ezencart.com zencart技术博客

Re: ZenCart用户选择分类页每页显示产品数量的方法

帖子zencarter » 2012-05-20 9:46

谢谢分享,很好
头像
zencarter
VIP会员
VIP会员
 
帖子: 831
注册: 2011-06-22 15:03
地址: zencart模板建站 zencart数据采集
QQ 帐号: 631992791

Re: ZenCart用户选择分类页每页显示产品数量的方法

帖子su35 » 2012-06-19 8:09

在产品列表页面修改成功。想将其移植到所有产品页面。对其中的$listing_sql在所有产品页面的对应变量是否是$products_all_query_raw不清楚。也没查到$listing_sql在那里定义的,内容是什么。请完全看懂了代码的朋友指教。
su35
中级会员
中级会员
 
帖子: 60
注册: 2011-06-07 0:11

Re: ZenCart用户选择分类页每页显示产品数量的方法

帖子su35 » 2012-06-19 11:44

问题解决。这两个变量确实是对应关系。
su35
中级会员
中级会员
 
帖子: 60
注册: 2011-06-07 0:11

Re: ZenCart用户选择分类页每页显示产品数量的方法

帖子fancyh » 2012-09-10 16:12

要转移到所有产品页面 应该怎么修改? 求分享
fancyh
普通会员
普通会员
 
帖子: 23
注册: 2010-11-06 12:29

Re: ZenCart用户选择分类页每页显示产品数量的方法

帖子zhanwen12@126.com » 2013-06-19 18:15

楼主,你好!
是这样的,我按照你的方法添加,但在过程中,
<?php
$perPage=$_GET['pagesize'];
$parameters = zen_get_all_get_params(array('page', 'info', 'x', 'y', 'pagesize'));
$perpage_links = '<div class="perPage"><strong>Show: </strong>';
$perpage_links .='<select name="pagesize" onchange="changePagesize(this);">';
$array_perpage=explode(',',CUSTOM_LISTING_NUMBER);
foreach($array_perpage as $value){
if($perPage==$value){
$perpage_links .='<option value="'.$value.'" selected="selected">'.$value.'</option>';
}else{
$perpage_links .='<option value="'.$value.'">'.$value.'</option>';
}
}
if($perPage=='all'){
$perpage_links .='<option value="all" selected="selected">All</option>';
}else{
$perpage_links .='<option value="all">All</option>';
}
$perpage_links .='</select>';
$perpage_links .= '</div>';
echo $perpage_links;
?>
<script language="javascript" type="text/javascript">
function changePagesize(obj){
window.location.href= "<?php echo str_replace('amp;','',zen_href_link($_GET['main_page'], $parameters, 'NONSSL')) ?>"+ "&pagesize="+obj.value;
}
</script>
因为布局问题,我把这一段放在别的位置;前台显示成功了,后台也有,但是我选择显示多少数量时没效果,原本是20个每一页,选择30后依然还是20的,不变的,请问这是什么问题呢?
zhanwen12@126.com
 
帖子: 2
注册: 2013-06-19 18:08


  • 相关话题
    回复总数
    阅读次数
    最新文章

回到 精华共享



在线用户

正在浏览此版面的用户:没有注册用户 和 0 位游客