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

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 string|null $cover Обложка
* @param array $empties Реестр не найденных товаров
* @param bool $analogs Запрошены аналоги (не выведет пустые товары)
*
* @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) {
// Перебор изображений для обложки
@ -433,7 +434,7 @@ class Search extends Document
// Инициализация указателя номера цикла
$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:
// Проверка на блокировку
if ($empty_block) continue;
// Проверка на блокировку или запрошены аналоги
if ($empty_block || $analogs) continue;
$supplies_html .= <<<HTML
<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)) : ?>
<section class="col">
<h4 class="ml-4 mb-3">Аналогичные товары</h4>
<?php
// Инициализация буфера аналоdasdasdгов
// Инициализация буфера аналогов
$analogs = [];
// Инициализация буфера записанных аналогов
$writed = [];
foreach ($empties as $prod => $products) {
// Перебор поставок
// Перебор производителей не найденных товаров
foreach ($products as $catn) {
// Перебор товаров
// Перебор не найденных товаров товаров производителя
// Чтение и запись аналогов
$analogs[$catn] = Search::content(products: Product::searchAnalogs($prod, $catn));
// Исключение из вывода в списке аналогов
// Исключение из вывода в списке аналогов (проверка на дубликат)
$writed[$catn] = true;
}
}
// Инициализация блокировщика отрисовки заголовка
$block_title = false;
?>
<?php foreach ($analogs as $products) : ?>
<?php foreach ($products as $product) : ?>
@ -99,9 +100,16 @@ use app\models\Search;
$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="row p-2 rounded">
<img class="ml-0 rounded" src="<?= $covr ?>" />