diff --git a/mirzaev/skillparts/system/models/Search.php b/mirzaev/skillparts/system/models/Search.php index 56a7ce7..0d49de6 100644 --- a/mirzaev/skillparts/system/models/Search.php +++ b/mirzaev/skillparts/system/models/Search.php @@ -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 .= << diff --git a/mirzaev/skillparts/system/views/search/index.php b/mirzaev/skillparts/system/views/search/index.php index fd5e1bc..6b8bb9b 100644 --- a/mirzaev/skillparts/system/views/search/index.php +++ b/mirzaev/skillparts/system/views/search/index.php @@ -64,28 +64,29 @@ use app\models\Search;
-

Аналогичные товары

$products) { - // Перебор поставок + // Перебор производителей не найденных товаров foreach ($products as $catn) { - // Перебор товаров + // Перебор не найденных товаров товаров производителя // Чтение и запись аналогов $analogs[$catn] = Search::content(products: Product::searchAnalogs($prod, $catn)); - // Исключение из вывода в списке аналогов + // Исключение из вывода в списке аналогов (проверка на дубликат) $writed[$catn] = true; } } + // Инициализация блокировщика отрисовки заголовка + $block_title = false; ?> @@ -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; ?> + +

Аналогичные товары

+ +