首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在opencart中添加特价jquery倒计时计时器

尝试在opencart中添加特价jquery倒计时计时器
EN

Stack Overflow用户
提问于 2011-10-14 03:46:09
回答 2查看 3.3K关注 0票数 3

我试着把jquery的倒计时计时器放在opencart的特价里。

因为我们在打开的购物车管理面板中有特价的开始日期和结束日期,

我想让jquery计数计时器来显示剩余时间

(days:Hours:Min:SEC)

为了那个特价。

我得到了jquery倒计时的代码,并将其放在产品的模板文件中,但它不工作,没有帮助或互联网上的代码。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-14 08:49:46

问得好。正如您所提到的,您希望显示的数据已经是OpenCart的管理/后端的一部分,但它在前端不可用。我将向您展示如何添加它。

由于OpenCart的MVC架构,您必须在3个地方进行更改。模型、视图和控制器。首先,您必须从数据库中获取数据。因为我们希望对前端进行更改,所以所有内容都将包含在目录目录中。如果您查看代码,您会发现catalog/model/product.php/product.php。这是我们要进行第一次更改的地方。ModelCatalogProduct中提供了特价,但没有特价截止日期。您可以修改现有的getProduct()方法,也可以创建自己的方法。我将向您展示后者,而前者则留给用户作为练习。

catalog/model/catalog/product.php

代码语言:javascript
复制
class ModelCatalogProduct extends Model {
    ...

    // Return an array containing special (price, date_start, date_end).
    // or false if no special price exists.
    public function getSpecialPriceDates($product_id) {
        if ($this->customer->isLogged()) {
            $customer_group_id = $this->customer->getCustomerGroupId();
        } else {
            $customer_group_id = $this->config->get('config_customer_group_id');
        }
        $query = $this->db->query("SELECT price, date_start, date_end FROM " . DB_PREFIX . "product_special WHERE product_id = '" . (int)$product_id . "' AND customer_group_id = '" . (int)$customer_group_id . "' AND ((date_start = '0000-00-00' OR date_start < NOW()) AND (date_end = '0000-00-00' OR date_end > NOW())) ORDER BY priority ASC, price ASC LIMIT 1");

        if ($query->num_rows) {
            return array(
                'special'    => $query->row['price'],
                'date_start' => $query->row['date_start'],
                'date_end'   => $query->row['date_end'],
            );
        } else {
            return false;
        }
    }

    ...
}

太好了,现在有了一个函数getSpecialPriceDates(),您可以调用它来了解产品特惠何时结束。让我们使这些数据对View可用。为了做到这一点,我们必须将它添加到控制器中。在ControllerProductProduct中查找“特殊”变量的设置位置。

catalog/controller/product/product.php

代码语言:javascript
复制
...

if ((float)$product_info['special']) {
    $this->data['special'] = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));
    // +++ NEW CODE
    $special_info = $this->model_catalog_product->getSpecialPriceDates($product_id);
    if ($special_info) {
        $this->data['special_date_end'] = $special_info['date_end'];
    } else {
        $this->date['special_date_end'] = false;
    }
    // +++ END NEW CODE
} else {
    $this->data['special'] = false;
}

...

最后一项任务是在产品视图中实现计时器。这将位于类似于主题的位置(如果您有自己的主题,请将默认主题替换为{ catalog/view/theme/default/template/product/product.tpl -catalog/view/theme/default/template/product/product.tpl})。jQuery有很多不同的倒计时计时器解决方案,选择你的favorite吧。

catalog/view/theme/default/template/product/product.tpl

代码语言:javascript
复制
    <?php if (!$special) { ?>
    <?php echo $price; ?>
    <?php } else { ?>
    <span class="price-old"><?php echo $price; ?></span> <span class="price-new"><?php echo $special; ?></span>
      <?php if ($special_date_end): ?>
      <!-- TIMER CODE HERE -->
      <div class="timer"></div>
      <?php endif; ?>
    <?php } ?>
票数 5
EN

Stack Overflow用户

发布于 2011-10-14 03:55:06

Check我为你准备了什么

另请检查this

here上的更多选项

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7759607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档