Files
new.rybstock.ru/docs/ШАГ_4_КАТАЛОГ_И_АДМИНКА.md
2026-06-04 19:19:35 +03:00

122 lines
8.1 KiB
Markdown
Raw Permalink 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.
# Шаг 4. Каталог, роутинг и первые формы админки
## Что сделано
Добавлен базовый роутинг:
- `/` - главная;
- `/catalog` - полный каталог;
- `/catalog/{slug}` - страница категории;
- 404-страница.
Добавлены файлы:
- `app/Core/Router.php`;
- `app/Controllers/CatalogController.php`;
- `views/catalog/index.php`;
- `views/partials/product-card.php`;
- `views/pages/404.php`;
- `public/.htaccess`.
## Навигация
Каталог получил боковую навигацию по категориям:
- главное дерево категорий;
- вложенность до третьего уровня;
- подсветка текущей категории;
- липкая боковая панель на desktop;
- адаптация под мобильный вид.
Хлебные крошки и кнопка "Вернуться назад" уже работают через общий layout.
## Товары в каталоге
Каталог готов выводить опубликованные товары и фасовки.
Для страницы категории товары выбираются не только из самой категории, но и из всех вложенных подкатегорий.
Пока товаров нет, выводится понятное сообщение о будущем переносе каталога.
## Админка
Добавлены первые формы:
- `/admin/categories.php` - добавление категории/подкатегории;
- `/admin/products.php` - добавление товара с одной стартовой фасовкой.
Это первичная техническая админка без авторизации. Полноценный защищенный вход администратора нужно сделать отдельным следующим шагом.
## Атрибуты и фасовки
После сравнения со старой админкой в схему добавлена расширенная модель атрибутов:
- `attribute_groups` - группы атрибутов, например "Упаковка", "Размер рыбы", "Размер креветки", "Тип заморозки", "Происхождение";
- `attribute_values` - значения атрибутов, например "20 кг", "10 кг", "31/40", "штучная заморозка", "монолитная заморозка";
- `product_attribute_groups` - какие группы используются у конкретного товара;
- `variant_attribute_values` - какие значения выбраны у конкретной фасовки/варианта.
В `product_variants` добавлены поля:
- `code`;
- `article`;
- `volume_or_pieces`;
- `old_package_price`.
Это нужно, чтобы повторить удобную логику старой админки: один товар, несколько строк фасовок, разные цены, вес/объем/штук, код товара, артикул и дополнительные атрибуты.
Дополнительный анализ первых товаров и атрибутов вынесен в `docs/АНАЛИЗ_ПЕРВЫХ_ТОВАРОВ_И_АТРИБУТОВ.md`.
## Дополнение: сценарный каталог и рекомендации
После анализа большого списка товаров со старого сайта стало понятно, что каталог нельзя строить только как длинную ленту из 42 страниц. В ассортименте смешаны маленькие позиции для дома, семейные фасовки, крупные короба, HoReCa, премиальные деликатесы, бакалея, мясо, молочная продукция и полуфабрикаты.
В базу добавлена архитектура для умных, но управляемых рекомендаций:
- `product_segments` и `product_segment_links` - сценарные сегменты: для дома, для семьи, большая фасовка, HoReCa, премиум, к пиву, быстро приготовить, для суши и другие;
- `product_badges` и `product_badge_links` - короткие бейджи для карточек и фильтров;
- `recommendation_rules` - правила, которые можно будет контролировать из админки;
- `product_relations` - ручные и автоматические связи между товарами;
- `product_events` - события для будущего обучения: просмотры, корзина, заказ, сравнение, клики по рекомендациям.
Подробный вывод вынесен в `docs/АНАЛИЗ_КАТАЛОГА_И_РЕКОМЕНДАЦИЙ.md`.
## Дополнение: навигация, скидки и проходные цены
После проверки страниц добавлены еще три важных требования:
- дерево категорий должно раскрываться на каждом уровне, чтобы страницы вроде "Рыба" не превращались в длинное полотно;
- у фасовки должна быть скидочная модель: текущая цена, старая перечеркнутая цена, ручная установка скидки и процентная скидка с автоматическим пересчетом;
- на главной странице нужен блок "Запрос проходных цен", где покупатель сможет отправить список позиций текстом или прикрепленным файлом, а заявка уйдет администратору на почту.
В схему добавлены поля `discount_type`, `discount_percent`, используется `old_package_price`, а также таблица `price_requests` для будущих заявок проходных цен.
## Дополнение: главная страница и ценовые градации
На главную добавлены требования к рабочей витрине:
- видимое главное меню: Главная, Каталог, Доставка, Контакты, Корзина;
- контактный телефон: +7-977-736-33-63;
- пункт самовывоза: г. Москва, ул. Привольная, д. 13к1;
- первый баннер: "Рыбсток - рыба, морепродукты, мясо, сыры, бакалея. Интернет-склад качественной продукции по стоковым ценам";
- баннеры: бесплатная доставка внутри МКАД от 5000 руб., бесплатная доставка за МКАД от 10000 руб., можно приобрести день в день, без предоплаты;
- заметное размещение промокодов;
- блок будущей заявки "Запрос проходных цен".
Ценовых градаций теперь четыре:
- базовая цена;
- наличный расчет от 20 000 руб. - скидка 5%;
- наличный расчет от 50 000 руб. - скидка 7%;
- безналичный расчет - +8%.
## Следующий шаг
Шаг 5:
1. Сделать авторизацию администратора.
2. Защитить `/admin/`.
3. Улучшить формы редактирования категорий и товаров.
4. Добавить редактирование и удаление.
5. Добавить страницу товара и корзинную заготовку.