首页 文章

如何通过ID隐藏Opencart类别的产品?

提问于
浏览
0

我在Opencart有一个网站 . 我们在我们的商店有几百种产品,我们正试图为SEO目的(或搜索)排名,但我们只希望他们的基础产品显示在类别页面上 .

让我们说如果我在PHP字符串中使用ID,我想要隐藏类别中的所有产品:

444,443,145,97,459,460,454,451,450,449,445,446,447,448,457,456,387,385

乘以30,因为我们在该特定类别中有很多产品 .

有谁知道我会怎么做?我是否可以添加到类别模板或类别控制器中,以隐藏产品根据ID显示在类别页面上 .

1 回答

  • 0

    正如@Jonid Bendo在评论中所说,你真的对如何实现这一点有很多选择 .

    首先,我不明白为什么你不禁用这些产品,或者更好,从你的类别中删除它们 .

    我可以提出两种方法:

    • 数据库级别 .

    • 控制器级别 .

    Database level 您可以在产品中创建额外的字段bool类型,以确定您可以选择与否的类型,并在数据库请求中添加此条件:

    $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' |||| AND p.show_cat = '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";
    

    Controller level

    获得产品清单后,逐个(不是很好的技术)消除具有特定ID的产品 .

    还有许多其他解决方案,仅取决于您希望花费多少工作和时间以及实现哪些质量 .

相关问题