Opencart 3.0-在类别页面上按ID显示类别中的所有产品

时间:2019-11-18 23:03:13

标签: php opencart opencart-3

我切换到了Opencart 3.0。.不喜欢将.t​​pl更改为.twig。

无论如何,我一直试图在另一个类别页面上显示特定类别的所有产品,但都没有用。

我发现了这个foreach循环:

{% for product in products %}

我想读的是

<?php foreach ($products as $product) { //do something } ?>

我尝试将Loop添加到路径:

catalog/view/theme/*/template/product/category.twig

,但仅显示我当前使用的当前类别页面ID中的产品。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在OC上,直接编辑文件通常是一种不好的做法,而是查看OCMOD或VQMOD进行运行时更改,但不编辑核心文件。现在,这可能会带来额外的复杂性。

如果您查看第150行附近data-gt文件夹中的category.php文件,则会看到以下代码行:

/catalog/controller/product/

您需要做的是使用必要的过滤器创建一个新的$data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); 变量,如果仅此而已,您可以拥有类别ID。

查看下面的行:

$filter_data

它正在调用位于模型$results = $this->model_catalog_product->getProducts($filter_data); getProducts)中的方法CatalogCategory,该方法将基于传递给该方法的过滤器建立一个/catalog/model/product.php查询返回具有结果的关联数组(因此,恰当命名为SQL变量)。

我们首先查看的控制器文件然后遍历这些$results并将值存储在$results中。

将其放在一起,您可以尝试以下操作:

$data['products']

这不是一个完整的解决方案,因为控制器文件将继续调整图像大小,获取评论等。因此,您需要根据需要进行调整并稍作调整。

只需确保您正在使用网站的本地副本!