请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

ecshop053首页调用促销倒计时

一、修改ecshop程序部分 打开includes中的lib_goods.php这个文件
找到get_promote_goods()函数在
(大概在396行)$goods[$idx]['url']          = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']);和 return $goods;}
中间添加下面的代码
  1. /* 促销时间倒计时 */
  2. $$$$time = gmtime();
  3. if ($$$$time >= $$$$row['promote_start_date'] && $$$$time <= $$$$row['promote_end_date'])
  4. {
  5. $$$$goods[$$$$idx]['gmt_end_time'] = local_date('M d, Y H:i:s',$$$$row['promote_end_date']);
  6. }
  7. else
  8. {
  9. $$$$goods[$$$$idx]['gmt_end_time'] = 0;
  10. }
复制代码

二、打开模板下的库文件夹library找到并打开促销产品的库文件recommend_promotion.lbi添加下面的代码
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  2. <!-- {if $$$$promotion_goods} -->
  3. <script >
  4. var Tday = new Array();
  5. var daysms = 24 * 60 * 60 * 1000
  6. var hoursms = 60 * 60 * 1000
  7. var Secondms = 60 * 1000
  8. var microsecond = 1000
  9. var DifferHour = -1
  10. var DifferMinute = -1
  11. var DifferSecond = -1
  12. function clock(key)
  13. {
  14. var time = new Date()
  15. var hour = time.getHours()
  16. var minute = time.getMinutes()
  17. var second = time.getSeconds()
  18. var timevalue = ""+((hour > 12) ? hour-12:hour)
  19. timevalue +=((minute < 10) ? ":0":":")+minute
  20. timevalue +=((second < 10) ? ":0":":")+second
  21. timevalue +=((hour >12 ) ? " PM":" AM")
  22. var convertHour = DifferHour
  23. var convertMinute = DifferMinute
  24. var convertSecond = DifferSecond
  25. var Diffms = Tday[key].getTime() - time.getTime()
  26. DifferHour = Math.floor(Diffms / daysms)
  27. Diffms -= DifferHour * daysms
  28. DifferMinute = Math.floor(Diffms / hoursms)
  29. Diffms -= DifferMinute * hoursms
  30. DifferSecond = Math.floor(Diffms / Secondms)
  31. Diffms -= DifferSecond * Secondms
  32. var dSecs = Math.floor(Diffms / microsecond)

  33. if(convertHour != DifferHour) a="<font color=red>"+DifferHour+"</font>天";
  34. if(convertMinute != DifferMinute) b="<font color=red>"+DifferMinute+"</font>时";
  35. if(convertSecond != DifferSecond) c="<font color=red>"+DifferSecond+"</font>分"
  36. d="<font color=red>"+dSecs+"</font>秒"
  37. if (DifferHour>0) {a=a}
  38. else {a=''}
  39. document.getElementById("leftTime"+key).innerHTML = a + b + c + d; //显示倒计时信息

  40. }
  41. </script>
  42. <div class="module">
  43. <h1 class="mod11tit"><p>{$$$$lang.promotion_goods}</p>
  44. <a href="../search.php?intro=promotion" class="more">更多>></a></h1>
  45. <div class="promotion_goods">
  46. <!--{foreach from=$$$$promotion_goods key=key item=goods name="promotion_foreach"}-->
  47. <!-- {if $$$$smarty.foreach.promotion_foreach.index lt 4} 限制显示数量 -->
  48. <div class="goodsbox">
  49. <div class="imgbox"><a href="{$$$$goods.url}"><img src="{$$$$goods.thumb}" border="0" alt="{$$$$goods.name|escape:html}"/></a></div>
  50. <ul>
  51. <li><a href="{$$$$goods.url}" title="{$$$$goods.name|escape:html}">{$$$$goods.short_name|truncate:18}</a></li>
  52. <li>优惠价格:<b>{$$$$goods.promote_price}</b></li>
  53. <li>剩余:<font class="f4" id="leftTime{$$$$key}">{$$$$lang.please_waiting}</font></li>
  54. </ul>
  55. </div>
  56. <!-- {/if} -->
  57. <script>
  58. Tday[{$$$$key}] = new Date("{$$$$goods.gmt_end_time}");
  59. window.setInterval(function()
  60. {clock({$$$$key});}, 1000);
  61. </script>
  62. <!--{/foreach}-->
  63. </div>
  64. </div>
  65. <!-- {/if} -->
复制代码
然后保存 刷新即可。

注:1.注意代码中的绿色字体 key=key 在网上有很多ecshop首页调用倒计时的代码,但是缺少了key=key 这一个导致显示出来的内容是:正在载入,请稍等...    结果时间就是显示不出来。
2.在加入key=key的后,显示时间是NaN时NaN分NaN秒,这个问题也困扰我很长时间,问了一下些ecshop的群,但是没问来帮助指导一下,在ecshop的论坛里面貌似有解决这个问题的办法,但是帖子被屏蔽了。于是我想可能这个问题涉及到了很多朋友挣rmb比较敏感。后来无意间想到清除一下缓存试试,结果成功了。其实很简单,在后台清除一下ecshop的缓存就可以解决这个问题了。
3.当然,你的代码可以不和我的完全一样,从中摘出你需要的代码放到recommend_promotion.lbi这个促销商品的库文件中同样可以实现。
4.此代码实现后,并不完美,仔细观察,首页的倒计时时间和详细的产品页面的倒计时相差8个小时,怎么来解决呢。
在/data/config.php 中找到: $timezone    = "UTC";  改为  $timezone    = "PRC"; 就可以了。 然后 保存 清楚缓存 刷新页面 就可以使首页和产品页面的倒计时时间保持一致了。

这篇文章可能会影响到一些朋友,但是这只是个人在学习 使用ecshop的过程中遇到的问题,以及自己摸索出来的解决办法,希望能帮助那些和我一样苦逼的朋友。



回复

使用道具 举报

大神点评4

test123 2014-3-17 14:34:30 显示全部楼层
很牛逼的代码啊
回复 支持 反对

使用道具 举报

test123 2014-3-17 14:59:00 显示全部楼层
感谢分享!!!感谢分享!!!
回复 支持 反对

使用道具 举报

test123 2014-3-17 14:59:34 显示全部楼层
感谢分享!!!感谢分享!!!
回复 支持 反对

使用道具 举报

mkoyyyyy 2014-6-12 11:38:29 显示全部楼层
修改ecshop程序部分 打开includes中的lib_goods.php这个文件
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

    热门帖子
  • 精华
  • 新帖
快速回复 返回顶部 返回列表