主页 » 建站笔记 » 正文

ECSHOP显示即将拍卖的商品和已结束拍卖商品

 bandian 5,636 ℃ 3条点评
小号字体中号字体大号字体
显示正在拍卖的商品和暂未开始的商品然后是显示已结束的拍卖活动 ECSHOP默认是只显示正在拍卖的商品的,很明显如果能让访客看到即将拍卖的商品和...

ECSHOP默认是只显示正在拍卖的商品的,很明显如果能让访客看到即将拍卖的商品和往期已经结束的拍卖活动的话效果会好很多,也更利于网站推广。

显示正在拍卖的商品和暂未开始的商品

1.修改auction.php中调用商品的查询条件。

将:

$sql = "SELECT a.*, IFNULL(g.goods_thumb, '') AS goods_thumb " .
            "FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS a " .
                "LEFT JOIN " . $GLOBALS['ecs']->table('goods') . " AS g ON a.goods_id = g.goods_id " .
            "WHERE a.act_type = '" . GAT_AUCTION . "' " .
            "AND a.start_time <= '$now' AND a.end_time >= '$now' AND a.is_finished < 2 ORDER BY a.act_id DESC";

修改为:

$sql = "SELECT a.*, IFNULL(g.goods_thumb, '') AS goods_thumb " .
            "FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS a " .
                "LEFT JOIN " . $GLOBALS['ecs']->table('goods') . " AS g ON a.goods_id = g.goods_id " .
            "WHERE a.act_type = '" . GAT_AUCTION . "' " .
            "AND a.end_time >= '$now' ORDER BY a.start_time ASC";

主要修改的是最后一行的查询条件,现在的查询结果是:列表会列出所有没有结束的拍卖活动,这就包括了已经开始的和还没有开始的,然后以开始时间正序排列。
然后修改前台模板,其实不改也是可以的,但是为了分别应用不用的样式还是改一下比较好。

2.修改前台模板

auction_list.dwt文件中的循环格式改为:

<!-- {foreach from=$auction_list item=auction} 循环拍卖活动开始 -->
   <!-- {if $auction.status_no eq 1} -->
   此处是正在拍卖的模板
   <!-- {elseif $auction.status_no eq 0} -->
   此处是即将拍卖的模板
   <!--{/if}-->
<!--{/foreach}-->

然后是显示已结束的拍卖活动

1.同样还是修改auction.php文件

在文件末尾的“?>”之前加上这一段(这一段我是直接复制的上面现有的代码做了一点修改):

function auc_get_auction_last()
{
    $now = gmtime();
    $sql = "SELECT a.act_id, a.goods_id, a.goods_name, a.ext_info, g.goods_thumb ".
            "FROM " . $GLOBALS['ecs']->table('goods_activity') . " AS a," .
                      $GLOBALS['ecs']->table('goods') . " AS g" .
            " WHERE a.goods_id = g.goods_id" .
            " AND a.act_type = '" . GAT_AUCTION . "'" .
            " AND a.is_finished = 1" .
            " AND a.end_time < '$now'" .
            " AND g.is_delete = 0" .
            " ORDER BY a.start_time DESC" .
            " LIMIT 10";
    $res = $GLOBALS['db']->query($sql);
    $list = array();
    while ($row = $GLOBALS['db']->fetchRow($res))
    {
        $ext_info = unserialize($row['ext_info']);
        $arr = array_merge($row, $ext_info);
        $arr['formated_end_price'] = price_format($arr['end_price']);
        $arr['thumb'] = get_image_path($row['goods_id'], $row['goods_thumb'], true);
        $arr['url'] = build_uri('auction', array('auid' => $arr['act_id']));
        $arr['short_name']   = $GLOBALS['_CFG']['goods_name_length'] > 0 ?
                                           sub_str($arr['goods_name'], $GLOBALS['_CFG']['goods_name_length']) : $arr['goods_name'];
        $arr['short_style_name']   = add_style($arr['short_name'],'');
        $list[] = $arr;
    }
    return $list;
}

因为考虑到已结束的拍卖商品只是做一个展示作用,不会需要去显示很多,所以在上面限制了只显示最近结束的10条拍卖活动,也没有单独去设计一个独立的页面来展示往期拍品。
在前台显示的时候用jQuery插件jCarouselLite添加了一个轮播滾动的效果。

2.然后在70多行的模板赋值程序块里面插入:

$smarty->assign('last_auction',	 auc_get_auction_last());   // 往期拍卖

保存文件。

3.最后在前台模板auction_list.dwt中你认为合适的地方插入类似于下面的模板:

<div>
<ul>
<!-- {foreach from=$last_auction item=auction} 循环往期拍卖活动开始 -->
<li class="last_list">
<div class="pm_img">
      <a href="{$auction.url}" rel="external nofollow" ><img class="lazy " src="https://www.augsky.com/wp-content/plugins/jquery-image-lazy-loading/images/grey.gif" data-original="{$auction.goods_thumb}" border="0" alt="{$auction.goods_name|escape:html}" style="vertical-align: middle;width:200px;height:200px;" /><noscript><img src="{$auction.goods_thumb}" border="0" alt="{$auction.goods_name|escape:html}" style="vertical-align: middle;width:200px;height:200px;" /></noscript></a>
      </div>
<div class="pm_info">
      <span class="pm_name"><a href="{$auction.url}" class="f5" rel="external nofollow" >{$auction.goods_name|escape:html}</a></span>
    <span class="pm_jiage">成交价:{$auction.formated_end_price}</span>
      </div>
</li>
      <!--{/foreach}-->
</ul>
</div>
上一篇:ecshop不能发送邮件,提示”access is denied“和“Error:need RCPT command”
下一篇:datatables修改英文为中文
版权信息
本文遵循 BY-NC-SA 共享方式,永久链接:https://www.augsky.com/?p=978
转载请注明转自 » 格部落格 » ECSHOP显示即将拍卖的商品和已结束拍卖商品

已有3条评论,欢迎点评!

  1. avatar#3过眼云嫣

    您好,我用了你的方法之后,预览必须依托正在拍卖的商品才能出现,如果没有正在拍卖的商品,预览的商品就不会出现,这个 是怎么回事呢?

    2018-03-14 pm5:15回复
  2. avatar#2www.9778.com

    拿望远镜看别人,拿放大镜看自己。

    2016-03-01 pm3:44回复
  3. avatar#1尚吾网QQ-14022301

    闲来无事,到此一游

    乙未年(羊)九月初九 2015-10-21

    2015-10-21 am9:34回复