Как вывести список товаров из нескольких категорий и их подкатегорий вместе с кратким описанием в CodeIgniter 4?

Как настроить вывод товаров на сайте в зависимости от уровня категории: показывать превью подкатегорий без товаров только на верхнем уровне категории, а все товары из дочерних категорий - на всех остальных уровнях категорий?
  • 2 июля 2024 г. 7:02
Ответы на вопрос 1
Для вывода списка товаров из нескольких категорий и их подкатегорий вместе с кратким описанием в CodeIgniter 4, вам необходимо создать модели, контроллер и представление со следующим кодом:

1. Модель `ProductModel.php`:
```php
<?php

namespace App\Models;

use CodeIgniter\Model;

class ProductModel extends Model
{
    protected $table = 'products';
    protected $primaryKey = 'id';
    protected $allowedFields = ['name', 'description', 'category_id'];

    public function getProductsByCategories($categories)
    {
        $query = $this->db->table('products')
            ->select('name, description, category_id')
            ->whereIn('category_id', $categories)
            ->get();

        return $query->getResult();
    }
}
```

2. Контроллер `ProductController.php`:
```php
<?php

namespace App\Controllers;

use App\Models\ProductModel;

class ProductController extends BaseController
{
    public function index()
    {
        $productModel = new ProductModel();

        // Список нескольких категорий и их подкатегорий
        $categories = [1, 2, 3]; // пример категорий

        $data['products'] = $productModel->getProductsByCategories($categories);

        return view('products', $data);
    }
}
```

3. Представление `products.php`:
```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Products</title>
</head>
<body>
    <h1>Products List</h1>
    <ul>
        <?php foreach ($products as $product): ?>
            <li>
                <h3><?= $product->name ?></h3>
                <p><?= $product->description ?></p>
            </li>
        <?php endforeach; ?>
    </ul>
</body>
</html>
```

Чтобы настроить вывод товаров на сайте в зависимости от уровня категории, вы можете использовать условия в представлении для отображения превью подкатегорий без товаров только на верхнем уровне категории и вывода всех товаров из дочерних категорий на всех остальных уровнях категорий.

Например, в представлении `products.php` вы можете добавить следующее условие для показа превью подкатегорий без товаров:
```html
<ul>
    <?php foreach ($products as $product): ?>
        <li>
            <h3><?= $product->name ?></h3>
            <p><?= $product->description ?></p>
        </li>
    <?php endforeach; ?>
    <?php if (empty($products)): ?>
        <li>No products in this category</li>
    <?php endif; ?>
</ul>
```

Таким образом, вы сможете управлять выводом товаров на сайте в зависимости от выбранного уровня категории.
Похожие вопросы