我切换到了Opencart 3.0。.不喜欢将.tpl更改为.twig。
无论如何,我一直试图在另一个类别页面上显示特定类别的所有产品,但都没有用。
我发现了这个foreach循环:
{% for product in products %}
我想读的是
<?php foreach ($products as $product) { //do something } ?>
我尝试将Loop添加到路径:
catalog/view/theme/*/template/product/category.twig
,但仅显示我当前使用的当前类别页面ID中的产品。
任何帮助将不胜感激。
答案 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']
这不是一个完整的解决方案,因为控制器文件将继续调整图像大小,获取评论等。因此,您需要根据需要进行调整并稍作调整。
只需确保您正在使用网站的本地副本!