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

6.7 KiB
Raw Blame History

Шаг 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 для будущих заявок проходных цен.

Следующий шаг

Шаг 5:

  1. Сделать авторизацию администратора.
  2. Защитить /admin/.
  3. Улучшить формы редактирования категорий и товаров.
  4. Добавить редактирование и удаление.
  5. Добавить страницу товара и корзинную заготовку.