108 lines
4.8 KiB
Markdown
108 lines
4.8 KiB
Markdown
# Шаг 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`.
|