它以前工作得很好,但是现在每当我创建一个新产品时,它都不会出现在任何地方,不在我插入的类别或最新产品中。但是当我尝试通过在特殊区域添加新价格来更新旧产品时,它正在更新。我尝试手动清除缓存,但没有任何反应。我所有的产品也都启用了。
我还尝试在谷歌中寻找答案,我发现最接近的是最新产品没有更新,但这个问题是在 2009 年提出的,给出的答案不适用。我也不熟悉 php 所以...有人可以帮忙吗?
它以前工作得很好,但是现在每当我创建一个新产品时,它都不会出现在任何地方,不在我插入的类别或最新产品中。但是当我尝试通过在特殊区域添加新价格来更新旧产品时,它正在更新。我尝试手动清除缓存,但没有任何反应。我所有的产品也都启用了。
我还尝试在谷歌中寻找答案,我发现最接近的是最新产品没有更新,但这个问题是在 2009 年提出的,给出的答案不适用。我也不熟悉 php 所以...有人可以帮忙吗?
逐步检查
我正在获取产品所在的类别页面 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 查询或包含一些缺失值“很可能它将是添加产品的日期”
或者你说你的旧产品工作正常意味着有一些日期问题检查它