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