Opencart 3.0——在类别页面上按 ID 显示类别中的所有产品
Opencart 3.0 -- Display All Products from Category by ID on Category Page
我切换到 Opencart 3.0.. 不喜欢 .tpl 到 .twig 的变化。
无论如何,我一直在尝试在另一个类别页面上显示特定类别的所有产品,但无济于事。
我发现了这个 foreach 循环:
{% for product in products %}
我想象的是
<?php foreach ($products as $product) { //do something } ?>
我尝试将循环添加到路径中:
catalog/view/theme/*/template/product/category.twig
但它只显示我当前所在的当前类别页面 ID 中的产品。
如有任何帮助,我们将不胜感激。
在 OC 上直接编辑文件通常是不好的做法,而是查看 OCMOD 或 VQMOD 进行运行时更改但不编辑核心文件。当然,这现在可能是一个额外的并发症。
如果您查看 /catalog/controller/product/
文件夹中的 category.php 文件第 150 行,您会看到以下代码行:
$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);
您需要做的是使用必要的过滤器创建一个新的 $filter_data
变量,如果您只需要类别 ID 即可。
看下面这行:
$results = $this->model_catalog_product->getProducts($filter_data);
它正在调用位于模型 CatalogCategory
(/catalog/model/product.php
) 中的方法 getProducts
此方法将根据传递给方法和 return 一个带有结果的关联数组(因此恰当地命名为 $results
变量)。
我们首先查看的控制器文件然后遍历这些 $results
并将值存储在 $data['products']
.
中
综上所述,您可以尝试以下方法:
$data['products2'] = array();
$new_filter_data = array(
'filter_category_id' => 13 // or any relevant ID
);
$results2 = $this->model_catalog_product->getProducts($new_filter_data);
这不是一个完整的解决方案,因为控制器文件会继续调整图像大小、获取评论等。因此您需要根据您的需要进行调整并尝试一下。
只需确保您正在处理网站的本地副本!
我切换到 Opencart 3.0.. 不喜欢 .tpl 到 .twig 的变化。
无论如何,我一直在尝试在另一个类别页面上显示特定类别的所有产品,但无济于事。
我发现了这个 foreach 循环:
{% for product in products %}
我想象的是
<?php foreach ($products as $product) { //do something } ?>
我尝试将循环添加到路径中:
catalog/view/theme/*/template/product/category.twig
但它只显示我当前所在的当前类别页面 ID 中的产品。
如有任何帮助,我们将不胜感激。
在 OC 上直接编辑文件通常是不好的做法,而是查看 OCMOD 或 VQMOD 进行运行时更改但不编辑核心文件。当然,这现在可能是一个额外的并发症。
如果您查看 /catalog/controller/product/
文件夹中的 category.php 文件第 150 行,您会看到以下代码行:
$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);
您需要做的是使用必要的过滤器创建一个新的 $filter_data
变量,如果您只需要类别 ID 即可。
看下面这行:
$results = $this->model_catalog_product->getProducts($filter_data);
它正在调用位于模型 CatalogCategory
(/catalog/model/product.php
) 中的方法 getProducts
此方法将根据传递给方法和 return 一个带有结果的关联数组(因此恰当地命名为 $results
变量)。
我们首先查看的控制器文件然后遍历这些 $results
并将值存储在 $data['products']
.
综上所述,您可以尝试以下方法:
$data['products2'] = array();
$new_filter_data = array(
'filter_category_id' => 13 // or any relevant ID
);
$results2 = $this->model_catalog_product->getProducts($new_filter_data);
这不是一个完整的解决方案,因为控制器文件会继续调整图像大小、获取评论等。因此您需要根据您的需要进行调整并尝试一下。
只需确保您正在处理网站的本地副本!