Skip to content

murad-it/notebooks.store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Notebooks Store — модуль для 1С-Битрикс (D7)

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.grid
  • Bitrix\Main\UI\PageNavigation
  • Tagged cache
  • SEF routing
  • Транзакционная установка БД

Возможности

  • Иерархический каталог: производитель -> модель -> ноутбуки
  • Detail-страница ноутбука
  • Фильтрация и поиск в гриде
  • Сортировка по колонкам
  • Page size в гриде: 10 / 20 / 30 / 50 / 100
  • Действия строки: Открыть, Удалить
  • Очистка кеша при add/update/delete
  • Автогенерация большого объема тестовых данных

SEF-структура

/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

Структура базы данных

notebooks_manufacturer

  • ID
  • NAME
  • SLUG

notebooks_model

  • ID
  • NAME
  • SLUG
  • MANUFACTURER_ID

notebooks_notebook

  • ID
  • NAME
  • SLUG
  • MODEL_ID
  • YEAR
  • PRICE
  • CPU
  • RAM_GB
  • STORAGE_GB
  • GPU
  • SCREEN_SIZE
  • OS

notebooks_option

  • ID
  • NAME

notebooks_notebook_option

  • NOTEBOOK_ID
  • OPTION_ID

Install

  1. Поместить модуль в local/modules/notebooks.store.
  2. Установить через админку Bitrix: Marketplace -> Установленные решения.
  3. Рекомендуемый режим для чистого окружения: переустановка с drop_tables=Y.

Во время установки:

  • регистрируется модуль
  • создаются ORM-таблицы
  • копируются компоненты в local/components/notebooks
  • копируется публичная страница /notebooks/
  • регистрируется URL rewrite (notebooks:catalog)
  • запускается сидер тестовых данных

Uninstall

Поддерживается удаление:

  • регистрации модуля
  • файлов
  • таблиц БД (опционально)

Seeder (TestDataInstaller)

При установке создается:

  • 8 производителей
  • 32 модели
  • 36 ноутбуков на каждую модель
  • расширенный набор опций
  • связи notebook <-> option

Это позволяет сразу тестировать:

  • фильтрацию
  • сортировку
  • пагинацию
  • нагрузку на грид
  • корректность кеширования

Кеширование

Используются:

  • Bitrix\Main\Data\Cache
  • Application::getInstance()->getTaggedCache()

Теги:

  • notebooks_list
  • notebooks_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 -l

Smoke/unit тест list-компонента

php /Users/murodjontoshpulotov/Sites/portal/local/modules/notebooks.store/tests/notebooks_list_component_test.php

Pre-Prod чеклист

  1. Переустановить модуль на стенде с drop_tables=Y.
  2. Очистить кеш Bitrix (managed cache, component cache).
  3. Проверить маршруты:
    • /notebooks/
    • /notebooks/asus/
    • /notebooks/asus/tuf-gaming/
    • /notebooks/detail/{slug}/
  4. Проверить grid:
    • сортировка
    • фильтр
    • page size 10/20/30/50/100
    • удаление с обновлением данных
  5. Проверить отсутствие PHP ошибок в логах.

Требования

  • PHP 8.1+
  • 1С-Битрикс (коробка)
  • MySQL / MariaDB

Почему такая архитектура

  • прозрачная поддержка
  • масштабируемая модель данных
  • предсказуемый install/uninstall
  • корректная работа кеша при изменениях
  • совместимость с обновлениями Bitrix

Возможное развитие

  • расширенная RBAC-модель
  • REST API для каталога
  • импорт/экспорт (CSV/Excel)
  • массовые действия по гриду
  • observability и расширенное аудит-логирование
  • покрытие интеграционными тестами

Keywords

  • 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

notebooks.store

About

1C-Bitrix D7 training module demonstrating clean backend architecture, service layer, and extensible e-commerce domain logic.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors