English version: README_EN.md
Enterprise-level модуль каталога ноутбуков для коробочной версии 1С-Битрикс.
Построен на Bitrix D7 ORM, SEF-маршрутизации, main.ui.grid и tagged cache.
Без модификации ядра. Без прямых SQL-запросов в бизнес-логике. С фокусом на расширяемость и поддержку в production.
Это не демо и не учебный CRUD. Архитектура рассчитана на реальную эксплуатацию: установка, сидирование, кеш, события, pre-prod проверка.
notebooks.store реализует модульный каталог:
- Производители
- Модели
- Ноутбуки
- Опции ноутбуков
- Связь many-to-many между ноутбуками и опциями
- Гриды с фильтрацией, сортировкой, пагинацией и выбором page size
- SEF-навигация по уровням каталога
- Полный install/uninstall цикл
HTTP -> Catalog Component -> List/Detail Components -> ORM Entity -> DB
Слои:
- Entity (
DataManager) — схема и связи ORM - Component (
catalog,list,detail) — orchestration и UI-слой - Event Handlers — инвалидация кеша при изменениях
- Install Layer — установка схемы, файлов, URL rewrite, тестовых данных
Принцип: логика в PHP-классах, а не в шаблонах.
- PHP 8+
- 1C-Bitrix D7
- ORM (
DataManager,Reference) bitrix:main.ui.gridBitrix\Main\UI\PageNavigation- Tagged cache
- SEF routing
- Транзакционная установка БД
- Иерархический каталог: производитель -> модель -> ноутбуки
- Detail-страница ноутбука
- Фильтрация и поиск в гриде
- Сортировка по колонкам
- Page size в гриде:
10 / 20 / 30 / 50 / 100 - Действия строки:
Открыть,Удалить - Очистка кеша при
add/update/delete - Автогенерация большого объема тестовых данных
/notebooks/ - список производителей
/notebooks/{brand}/ - список моделей бренда
/notebooks/{brand}/{model}/ - список ноутбуков модели
/notebooks/detail/{notebook}/ - карточка ноутбука
local/modules/notebooks.store
|
|-- install/
| |-- components/notebooks/
| |-- public/notebooks/
| |-- index.php
| |-- step.php
| |-- uninstall.php
| `-- version.php
|
|-- lib/
| |-- entity/
| | |-- ManufacturerTable.php
| | |-- ModelTable.php
| | |-- NotebookTable.php
| | |-- OptionTable.php
| | `-- NotebookOptionTable.php
| |
| |-- event/
| | `-- NotebookHandlers.php
| |
| `-- install/
| `-- TestDataInstaller.php
|
|-- tests/
| `-- notebooks_list_component_test.php
|
|-- include.php
`-- ReadMe.md
IDNAMESLUG
IDNAMESLUGMANUFACTURER_ID
IDNAMESLUGMODEL_IDYEARPRICECPURAM_GBSTORAGE_GBGPUSCREEN_SIZEOS
IDNAME
NOTEBOOK_IDOPTION_ID
- Поместить модуль в
local/modules/notebooks.store. - Установить через админку Bitrix:
Marketplace -> Установленные решения. - Рекомендуемый режим для чистого окружения: переустановка с
drop_tables=Y.
Во время установки:
- регистрируется модуль
- создаются ORM-таблицы
- копируются компоненты в
local/components/notebooks - копируется публичная страница
/notebooks/ - регистрируется URL rewrite (
notebooks:catalog) - запускается сидер тестовых данных
Поддерживается удаление:
- регистрации модуля
- файлов
- таблиц БД (опционально)
При установке создается:
- 8 производителей
- 32 модели
- 36 ноутбуков на каждую модель
- расширенный набор опций
- связи notebook <-> option
Это позволяет сразу тестировать:
- фильтрацию
- сортировку
- пагинацию
- нагрузку на грид
- корректность кеширования
Используются:
Bitrix\Main\Data\CacheApplication::getInstance()->getTaggedCache()
Теги:
notebooks_listnotebooks_brand_{slug}notebooks_model_{slug}notebook_{id}
Инвалидация выполняется в NotebookHandlers и в action удаления списка.
- модификация ядра Bitrix
- логика в шаблонах компонентов
- прямые SQL в доменной/компонентной логике
- монолитный компонент без разделения ответственности
rg --files /Users/murodjontoshpulotov/Sites/portal/local/modules/notebooks.store /Users/murodjontoshpulotov/Sites/portal/local/components/notebooks | rg '\\.php$' | xargs -n1 php -lphp /Users/murodjontoshpulotov/Sites/portal/local/modules/notebooks.store/tests/notebooks_list_component_test.php- Переустановить модуль на стенде с
drop_tables=Y. - Очистить кеш Bitrix (
managed cache,component cache). - Проверить маршруты:
/notebooks//notebooks/asus//notebooks/asus/tuf-gaming//notebooks/detail/{slug}/
- Проверить grid:
- сортировка
- фильтр
- page size
10/20/30/50/100 - удаление с обновлением данных
- Проверить отсутствие PHP ошибок в логах.
- PHP 8.1+
- 1С-Битрикс (коробка)
- MySQL / MariaDB
- прозрачная поддержка
- масштабируемая модель данных
- предсказуемый install/uninstall
- корректная работа кеша при изменениях
- совместимость с обновлениями Bitrix
- расширенная RBAC-модель
- REST API для каталога
- импорт/экспорт (CSV/Excel)
- массовые действия по гриду
- observability и расширенное аудит-логирование
- покрытие интеграционными тестами
- 1C-Bitrix
- Bitrix D7
- Bitrix ORM
- Bitrix Module
- main.ui.grid
- Tagged Cache
- SEF Routing
- PHP Backend
- Enterprise PHP
Murad
Telegram: @murad_pro_it
Instagram: @murad__it