шаг 3 завершен

This commit is contained in:
Alisa
2026-06-04 00:27:17 +03:00
parent 420e67c9bd
commit 62ce8c4d01
27 changed files with 1565 additions and 42 deletions
+107
View File
@@ -0,0 +1,107 @@
# Шаг 3. Первые PHP-классы и вывод данных
## Что сделано
Созданы первые классы для работы сайта на чистом PHP:
- `app/Controllers/HomeController.php`
- `app/Repositories/BaseRepository.php`
- `app/Repositories/CategoryRepository.php`
- `app/Repositories/ProductRepository.php`
- `app/Repositories/ProductVariantRepository.php`
- `app/Repositories/SettingRepository.php`
Главная страница больше не содержит бизнес-логику напрямую. Теперь `public/index.php` вызывает `HomeController`, а контроллер получает данные через репозитории.
Также в базовый layout добавлены:
- meta title;
- meta description;
- meta keywords;
- хлебные крошки;
- кнопка "Вернуться назад".
## Что выводится на главной
Главная страница теперь показывает:
- статус подключения к MariaDB;
- категории из таблицы `categories`, строго по дереву старого сайта;
- вложенность категорий до третьего уровня;
- каталог товаров прямо на главной странице;
- настройки доставки из таблицы `site_settings`;
- блок популярных товаров из опубликованных товаров и фасовок.
- градации выгодной цены: базовая цена, цена от 20 000 руб. наличными, цена от 50 000 руб. наличными.
Если таблицы еще не установлены, сайт не падает, а показывает сообщение с подсказкой.
## Что добавлено в админку
`admin/index.php` теперь показывает стартовую сетку разделов будущей панели:
- Товары;
- Категории;
- Фасовки;
- Заказы;
- Промокоды;
- Акции;
- Популярные товары;
- Отзывы;
- Настройки;
- Прайс-лист.
Это пока не полноценная админка, а основа навигации для следующих шагов.
## Что добавлено для цен
В `promocodes` добавлены поля:
- `show_in_price_tiers`;
- `price_tier_label`.
Создан `app/Services/PriceTierService.php`, который считает отображаемые цены для карточки товара:
- базовая цена;
- минус 5% при заказе от 20 000 руб. за наличный расчет;
- минус 7% при заказе от 50 000 руб. за наличный расчет.
Это не отменяет ввод промокода в корзине. Это только понятная подсказка в каталоге, чтобы человек заранее видел выгоду крупного заказа.
## Что нужно проверить
1. Если база еще не установлена, открыть `/install.php?token=rybstock-local-install`.
2. После установки открыть главную страницу.
3. На главной должны появиться стартовые категории из `database/seed.sql`.
4. Открыть `/admin/` и проверить стартовые разделы админки.
Стартовые категории:
- Рыба;
- Рыбное филе;
- Рыбные стейки;
- Охлажденная рыба;
- Малосольная рыба;
- Копченая рыба;
- Вяленая рыба;
- Морепродукты;
- Фрукты, овощи, ягоды, грибы;
- Икра;
- Бакалея;
- Полуфабрикаты;
- Мясная гастрономия;
- Мясо;
- Сыры;
- Молочная продукция.
Важно: названия категорий уже приведены к старому дереву. Для полного сохранения индексации еще нужны точные старые URL категорий и товаров. В схеме для этого предусмотрены `legacy_path` и таблица `redirects`.
## Следующий шаг
Шаг 4:
1. Сделать базовый роутинг для страниц сайта.
2. Создать страницу полного каталога.
3. Вывести категории и товары из базы.
4. Подготовить первые формы админки для категорий и товаров.
Перенос товаров вынесен в отдельный документ: `docs/ПЛАН_ПЕРЕНОСА_ТОВАРОВ.md`.