Files
new.rybstock.ru/views/catalog/index.php
T
2026-06-08 10:58:47 +03:00

177 lines
8.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare(strict_types=1);
/** @var array<int, array<string, mixed>> $categories */
/** @var array<string, mixed>|null $currentCategory */
/** @var array<int, array<string, mixed>> $products */
/** @var array<string, mixed> $pagination */
/** @var string|null $searchQuery */
/** @var string|null $catalogHeading */
/** @var string|null $catalogEyebrow */
/** @var string|null $catalogLead */
$heading = $catalogHeading ?? $currentCategory['h1'] ?? $currentCategory['name'] ?? 'Каталог продукции';
$eyebrow = $catalogEyebrow ?? ($currentCategory === null ? 'Полный каталог' : 'Категория');
$catalogLead = trim((string) ($catalogLead ?? ''));
$categoryDescription = trim((string) ($currentCategory['description'] ?? ''));
$searchQuery = trim((string) ($searchQuery ?? ''));
$pagination = $pagination ?? [
'base_path' => '/catalog',
'total' => count($products),
'shown' => count($products),
'page' => 1,
'pages' => 1,
'per_page' => 48,
'has_more' => false,
'next_limit' => count($products),
];
$paginationGlue = str_contains((string) ($pagination['base_path'] ?? ''), '?') ? '&' : '?';
?>
<section class="catalog-layout">
<aside class="catalog-sidebar">
<div class="catalog-side-stack">
<div class="panel catalog-menu-panel">
<div class="catalog-side-heading">
<span>Каталог</span>
<small><?= e((string) $pagination['total']) ?> позиций</small>
</div>
<?php
$items = $categories;
$depth = 0;
$currentSlug = $currentCategory['slug'] ?? '';
require base_path('views/partials/category-tree.php');
?>
</div>
<div class="panel catalog-mini-cart" data-mini-cart>
<div>
<span>Корзина</span>
<strong data-mini-cart-total>0 руб.</strong>
</div>
<p><span data-mini-cart-count>0</span> позиций</p>
<a href="/cart">Перейти</a>
</div>
</div>
</aside>
<section class="catalog-content">
<div class="catalog-heading">
<p class="eyebrow"><?= e($eyebrow) ?></p>
<h1><?= e($heading) ?></h1>
<?php if ($catalogLead !== ''): ?>
<p class="catalog-heading-lead"><?= e($catalogLead) ?></p>
<?php endif; ?>
</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>
<h2>Оплачивайте наличными при получении и получайте лучшие условия</h2>
<p>Добавляйте товары в корзину, а сайт сам пересчитает итог от суммы заказа. Ничего считать вручную не нужно.</p>
</div>
<div class="cash-receipt" aria-hidden="true">
<div class="cash-receipt-top">
<span>Чек выгоды</span>
<strong>Рыбсток</strong>
</div>
<dl>
<div>
<dt>от 7 000р.</dt>
<dd>-300р.</dd>
</div>
<div>
<dt>от 20 000р.</dt>
<dd>-5%</dd>
</div>
<div>
<dt>от 50 000р.</dt>
<dd>-7%</dd>
</div>
</dl>
<small>Пересчет появится в корзине сразу</small>
</div>
</section>
<section class="payment-benefit-banner qr-benefit-banner" aria-label="Преимущество оплаты QR-кодом">
<div class="cash-benefit-copy">
<p class="eyebrow">Удобная оплата при получении</p>
<h2>Принимаем оплату QR-кодом без комиссии даже с кредитной карты</h2>
<p>После подтверждения заказа менеджер согласует получение, а при передаче товара можно оплатить QR-кодом без лишних комиссий.</p>
</div>
<div class="payment-benefit-card" aria-hidden="true">
<span>QR-оплата</span>
<strong>0%</strong>
<p>комиссия для покупателя</p>
<small>Наличными пользоваться необязательно</small>
</div>
</section>
<section class="payment-benefit-banner invoice-benefit-banner" aria-label="Оплата по расчетному счету">
<div class="cash-benefit-copy">
<p class="eyebrow">Для организаций и крупных заказов</p>
<h2>Счет на оплату выставляем день в день</h2>
<p>После подтверждения заказа менеджер подготовит счет и согласует документы. Безналичный расчет доступен для заказов от 30 000р.</p>
</div>
<div class="payment-benefit-card" aria-hidden="true">
<span>Расчетный счет</span>
<strong>день в день</strong>
<p>после подтверждения заказа</p>
<small>Документы согласуем с менеджером</small>
</div>
</section>
<?php if ($products === []): ?>
<div class="panel">
<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']) ?><?= e($paginationGlue) ?>limit=<?= e((string) $pagination['next_limit']) ?>">Показать еще</a>
<?php endif; ?>
</div>
<div class="product-grid catalog-product-grid">
<?php foreach ($products as $product): ?>
<?php require base_path('views/partials/product-card.php'); ?>
<?php endforeach; ?>
</div>
<?php if ((int) $pagination['pages'] > 1): ?>
<nav class="catalog-pagination" aria-label="Страницы каталога">
<?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']) ?><?= e($paginationGlue) ?>page=<?= e((string) $pageNumber) ?>"
>
<?= e((string) $pageNumber) ?>
</a>
<?php endfor; ?>
</nav>
<?php endif; ?>
<?php endif; ?>
<?php if ($categoryDescription !== ''): ?>
<section class="catalog-seo-panel">
<h2><?= e($heading) ?></h2>
<div class="catalog-seo-content">
<?= (string) $categoryDescription ?>
</div>
</section>
<?php endif; ?>
</section>
</section>