0

它以前工作得很好,但是现在每当我创建一个新产品时,它都不会出现在任何地方,不在我插入的类别或最新产品中。但是当我尝试通过在特殊区域添加新价格来更新旧产品时,它正在更新。我尝试手动清除缓存,但没有任何反应。我所有的产品也都启用了。

我还尝试在谷歌中寻找答案,我发现最接近的是最新产品没有更新,但这个问题是在 2009 年提出的,给出的答案不适用。我也不熟悉 php 所以...有人可以帮忙吗?

4

1 回答 1

0

逐步检查

我正在获取产品所在的类别页面 opencart2\catalog\controller\product\category.php

$results = $this->model_catalog_product->getProducts($filter_data);

检查 $results 是否提供一些输出,如果没有,则转到 opencart2\catalog\model\catalog\product.php

检查第 59 行 getProducts() 函数并检查 $sql 是否提供输出

public function getProducts($data = array()) {
      $sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 
      WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, 
      (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id 
      AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 
      AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) 
      AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) 
      ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, 
      (SELECT price FROM " . DB_PREFIX . "product_special ps 
      WHERE ps.product_id = p.product_id 
      AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' 
      AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) 
      AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) 
      ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special";

只有在这里您才能发现您的产品是从数据库中出来的,如果不是,那么更正您的 sql 查询或包含一些缺失值“很可能它将是添加产品的日期”

或者你说你的旧产品工作正常意味着有一些日期问题检查它

于 2015-03-25T10:40:24.727 回答