поиск+доставка

This commit is contained in:
Alisa
2026-06-07 13:12:42 +03:00
parent 65d182b4af
commit ee753429e2
20 changed files with 3429 additions and 91 deletions
+17 -3
View File
@@ -6,9 +6,11 @@ declare(strict_types=1);
/** @var array<string, mixed>|null $currentCategory */
/** @var array<int, array<string, mixed>> $products */
/** @var array<string, mixed> $pagination */
/** @var string|null $searchQuery */
$heading = $currentCategory['h1'] ?? $currentCategory['name'] ?? 'Каталог продукции';
$categoryDescription = trim((string) ($currentCategory['description'] ?? ''));
$searchQuery = trim((string) ($searchQuery ?? ''));
$pagination = $pagination ?? [
'base_path' => '/catalog',
'total' => count($products),
@@ -19,6 +21,7 @@ $pagination = $pagination ?? [
'has_more' => false,
'next_limit' => count($products),
];
$paginationGlue = str_contains((string) ($pagination['base_path'] ?? ''), '?') ? '&' : '?';
?>
<section class="catalog-layout">
<aside class="catalog-sidebar">
@@ -53,6 +56,17 @@ $pagination = $pagination ?? [
<h1><?= e($heading) ?></h1>
</div>
<?php if ($searchQuery !== ''): ?>
<section class="catalog-search-result-panel" aria-label="Результаты умного поиска">
<div>
<p class="eyebrow">Умный поиск</p>
<h2>Поиск по запросу: <?= e($searchQuery) ?></h2>
<p>Учитываем названия, категории, фасовки, похожие формулировки и бытовую логику покупки.</p>
</div>
<a href="/catalog">Сбросить поиск</a>
</section>
<?php endif; ?>
<section class="payment-benefit-banner cash-benefit-banner" aria-label="Выгода при оплате наличными">
<div class="cash-benefit-copy">
<p class="eyebrow">Выгода считается автоматически</p>
@@ -112,13 +126,13 @@ $pagination = $pagination ?? [
<?php if ($products === []): ?>
<div class="panel">
<p class="muted">В этой категории товары появятся после переноса каталога со старого сайта.</p>
<p class="muted"><?= $searchQuery !== '' ? 'По этому запросу пока ничего не найдено. Попробуйте другое название, фасовку или назначение.' : 'В этой категории товары появятся после переноса каталога со старого сайта.' ?></p>
</div>
<?php else: ?>
<div class="catalog-count-panel">
<span>Показано <?= e((string) $pagination['shown']) ?> из <?= e((string) $pagination['total']) ?> товаров</span>
<?php if (!empty($pagination['has_more'])): ?>
<a href="<?= e((string) $pagination['base_path']) ?>?limit=<?= e((string) $pagination['next_limit']) ?>">Показать еще</a>
<a href="<?= e((string) $pagination['base_path']) ?><?= e($paginationGlue) ?>limit=<?= e((string) $pagination['next_limit']) ?>">Показать еще</a>
<?php endif; ?>
</div>
@@ -133,7 +147,7 @@ $pagination = $pagination ?? [
<?php for ($pageNumber = 1; $pageNumber <= (int) $pagination['pages']; $pageNumber++): ?>
<a
class="<?= $pageNumber === (int) $pagination['page'] && empty($pagination['cumulative']) ? 'is-current' : '' ?>"
href="<?= e((string) $pagination['base_path']) ?>?page=<?= e((string) $pageNumber) ?>"
href="<?= e((string) $pagination['base_path']) ?><?= e($paginationGlue) ?>page=<?= e((string) $pageNumber) ?>"
>
<?= e((string) $pageNumber) ?>
</a>