Не выводить в аналогах пустые товары
This commit is contained in:
parent
ab97036822
commit
68d26118ab
|
@ -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">
|
||||
|
|
|
@ -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 ?>" />
|
||||
|
|
Reference in New Issue