Не выводить в аналогах пустые товары

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2022-04-13 13:54:07 +10:00
parent ab97036822
commit 68d26118ab
2 changed files with 19 additions and 10 deletions

View File

@ -393,10 +393,11 @@ class Search extends Document
* @param array $row Товар сгенерированный через Search::content() * @param array $row Товар сгенерированный через Search::content()
* @param string|null $cover Обложка * @param string|null $cover Обложка
* @param array $empties Реестр не найденных товаров * @param array $empties Реестр не найденных товаров
* @param bool $analogs Запрошены аналоги (не выведет пустые товары)
* *
* @return string HTML-элемент с товаром * @return string HTML-элемент с товаром
*/ */
public static function generate(array &$row, string|null &$cover = null, array &$empties = []): string public static function generate(array &$row, string|null &$cover = null, array &$empties = [], bool $analogs = false): string
{ {
foreach ($row['imgs'] ?? [] as &$img) { foreach ($row['imgs'] ?? [] as &$img) {
// Перебор изображений для обложки // Перебор изображений для обложки
@ -433,7 +434,7 @@ class Search extends Document
// Инициализация указателя номера цикла // Инициализация указателя номера цикла
$supply_iterator = 1; $supply_iterator = 1;
foreach (empty($row['supplies']) || $supplies_amount === 0 ? [null] : $row['supplies'] as $supply) { foreach (empty($row['supplies']) || $supplies_amount === 0 ? [null] : $row['supplies'] as &$supply) {
// Перебор поставок // Перебор поставок
// Инициализация модификатора класса // Инициализация модификатора класса
@ -477,8 +478,8 @@ class Search extends Document
// Поставки отстутвуют // Поставки отстутвуют
no_supplies: no_supplies:
// Проверка на блокировку // Проверка на блокировку или запрошены аналоги
if ($empty_block) continue; if ($empty_block || $analogs) continue;
$supplies_html .= <<<HTML $supplies_html .= <<<HTML
<div class="row $supply_class_modifier m-0 h-100 text-right"> <div class="row $supply_class_modifier m-0 h-100 text-right">

View File

@ -64,28 +64,29 @@ use app\models\Search;
<?php if (!empty($empties)) : ?> <?php if (!empty($empties)) : ?>
<section class="col"> <section class="col">
<h4 class="ml-4 mb-3">Аналогичные товары</h4>
<?php <?php
// Инициализация буфера аналоdasdasdгов // Инициализация буфера аналогов
$analogs = []; $analogs = [];
// Инициализация буфера записанных аналогов // Инициализация буфера записанных аналогов
$writed = []; $writed = [];
foreach ($empties as $prod => $products) { foreach ($empties as $prod => $products) {
// Перебор поставок // Перебор производителей не найденных товаров
foreach ($products as $catn) { foreach ($products as $catn) {
// Перебор товаров // Перебор не найденных товаров товаров производителя
// Чтение и запись аналогов // Чтение и запись аналогов
$analogs[$catn] = Search::content(products: Product::searchAnalogs($prod, $catn)); $analogs[$catn] = Search::content(products: Product::searchAnalogs($prod, $catn));
// Исключение из вывода в списке аналогов // Исключение из вывода в списке аналогов (проверка на дубликат)
$writed[$catn] = true; $writed[$catn] = true;
} }
} }
// Инициализация блокировщика отрисовки заголовка
$block_title = false;
?> ?>
<?php foreach ($analogs as $products) : ?> <?php foreach ($analogs as $products) : ?>
<?php foreach ($products as $product) : ?> <?php foreach ($products as $product) : ?>
@ -99,9 +100,16 @@ use app\models\Search;
$catn = $product['catn'] ?? 'Неизвестно'; $catn = $product['catn'] ?? 'Неизвестно';
// Генерация списка товаров // Генерация списка товаров
$supplies_html = Search::generate($product, $covr); $supplies_html = Search::generate($product, $covr, analogs: true);
// Не найдены поставки для аналогичного товара (не выводить в списке)
if (empty($supplies_html)) continue;
?> ?>
<?php if (!$block_title && $block_title = true) : ?>
<h4 class="ml-4 mb-3">Аналогичные товары</h4>
<?php endif ?>
<div class="col mb-2"> <div class="col mb-2">
<div class="row p-2 rounded"> <div class="row p-2 rounded">
<img class="ml-0 rounded" src="<?= $covr ?>" /> <img class="ml-0 rounded" src="<?= $covr ?>" />