8.1 KiB
Шаг 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:
- Сделать авторизацию администратора.
- Защитить
/admin/. - Улучшить формы редактирования категорий и товаров.
- Добавить редактирование и удаление.
- Добавить страницу товара и корзинную заготовку.