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

时间:2014-05-02 03:00:51

标签: opencart

我在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 :(得分:0)

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

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

我可以提出两种方法:

  • 数据库级别。
  • 控制器级别。

数据库级 您可以在产品中创建额外的字段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";

控制器级别

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

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