ecshop首頁調用促銷倒計時

在使用ecshop作站的時候,若是設置了促銷產品或者促銷活動,須要顯示出來倒計時的時間,在網上也找了不少代碼,結果都是不盡如意,有這樣那樣的問題,如下問題是我自身在結合網上找到的代碼,並進行調整實現的,分享出來供你們參考,但願可以幫助那些和我遇到一樣問題的朋友。 php


1、修改ecshop程序部分 打開includes中的lib_goods.php這個文件 html

找到get_promote_goods()函數在 緩存

(大概在396行)$goods[$idx]['url']          = build_uri('goods', array('gid' => $row['goods_id']), $row['goods_name']); return $goods;} 函數

中間添加下面的代碼 學習

 /* 促銷時間倒計時 */ 字體

        $time = gmtime(); ui

        if ($time >= $row['promote_start_date'] && $time <= $row['promote_end_date']) url

        { spa

              $goods[$idx]['gmt_end_time']  = local_date('M d, Y H:i:s',$row['promote_end_date']); htm

        }

        else

        {

            $goods[$idx]['gmt_end_time'] = 0;

        }

    }

2、打開模板下的庫文件夾library找到並打開促銷產品的庫文件recommend_promotion.lbi添加下面的代碼

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<!-- {if $promotion_goods} -->

<script >

var Tday = new Array();

var daysms = 24 * 60 * 60 * 1000

var hoursms = 60 * 60 * 1000

var Secondms = 60 * 1000

var microsecond = 1000

var DifferHour = -1

var DifferMinute = -1

var DifferSecond = -1

function clock(key)

  {

   var time = new Date()

   var hour = time.getHours()

   var minute = time.getMinutes()

   var second = time.getSeconds()

   var timevalue = ""+((hour > 12) ? hour-12:hour)

   timevalue +=((minute < 10) ? ":0":":")+minute

   timevalue +=((second < 10) ? ":0":":")+second

   timevalue +=((hour >12 ) ? " PM":" AM")

   var convertHour = DifferHour

   var convertMinute = DifferMinute

   var convertSecond = DifferSecond

   var Diffms = Tday[key].getTime() - time.getTime()

   DifferHour = Math.floor(Diffms / daysms)

   Diffms -= DifferHour * daysms

   DifferMinute = Math.floor(Diffms / hoursms)

   Diffms -= DifferMinute * hoursms

   DifferSecond = Math.floor(Diffms / Secondms)

   Diffms -= DifferSecond * Secondms

   var dSecs = Math.floor(Diffms / microsecond)

   

   if(convertHour != DifferHour) a="<font color=red>"+DifferHour+"</font>天";

   if(convertMinute != DifferMinute) b="<font color=red>"+DifferMinute+"</font>時";

   if(convertSecond != DifferSecond) c="<font color=red>"+DifferSecond+"</font>分"

     d="<font color=red>"+dSecs+"</font>秒"

     if (DifferHour>0) {a=a} 

     else {a=''}

   document.getElementById("leftTime"+key).innerHTML = a + b + c + d; //顯示倒計時信息

  

  }

</script>

<div class="module">

<h1 class="mod11tit"><p>{$lang.promotion_goods}</p>   

    <a href="../search.php?intro=promotion" class="more">更多>></a></h1>

<div class="promotion_goods">

<!--{foreach from=$promotion_goods key=key item=goods name="promotion_foreach"}-->

<!-- {if $smarty.foreach.promotion_foreach.index lt 4} 限制顯示數量 -->

   <div class="goodsbox">

  <div class="imgbox"><a href="{$goods.url}"><img src="{$goods.thumb}" border="0" alt="{$goods.name|escape:html}"/></a></div>

<ul>         

  <li><a href="{$goods.url}" title="{$goods.name|escape:html}">{$goods.short_name|truncate:18}</a></li>

       <li>優惠價格:<b>{$goods.promote_price}</b></li>

      <li>剩餘:<font class="f4" id="leftTime{$key}">{$lang.please_waiting}</font></li>

       </ul>

</div>

<!-- {/if} --> 

    <script>

Tday[{$key}] = new Date("{$goods.gmt_end_time}");   

window.setInterval(function()     

{clock({$key});}, 1000);     

</script>

   <!--{/foreach}-->

</div>

</div>

<!-- {/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的過程當中遇到的問題,以及本身摸索出來的解決辦法,但願能幫助那些和我同樣苦逼的朋友。

相關文章
相關標籤/搜索