Выбор города

This commit is contained in:
Konstantin
2026-05-30 11:47:38 +03:00
parent 640af8f4d9
commit af9b7b13a4
7 changed files with 173 additions and 6 deletions
+40
View File
@@ -87,6 +87,46 @@ storage/
- Темы: `public/store/view/theme/`
- Языковые файлы расширений: `public/admin/language/ru-ru/extension/`
## Модальные окна и UI
### Модалки (modal.create)
Система модальных окон реализована в `public/store/view/theme/dominik/assets/js/script.js` (объект `modal`, строка 64).
**Вызов модалки с HTML-контентом:**
```js
modal.create({
modal: '<p>Содержимое окна</p>', // HTML-контент (обязателен)
title: 'Заголовок окна', // опционально
width: 400, // опционально, ширина в px
align: 'top', // опционально, прижать к верху
class: { // опционально, CSS-классы
'modal-body': 'p-0',
'modal-title': 'text-primary'
},
callback: { // опционально
show: function() { ... } // колбек при показе
}
});
```
**Загрузка контента через AJAX (modal.load):**
```js
modal.load(url, data); // ожидает JSON-ответ с ключом 'modal'
```
### Выбор города в шапке
Выбор города реализован через:
- **Контроллер:** `public/store/controller/common/city.php`
- `index()` — отдаёт HTML-список зон (городов) для страны магазина
- `save()` — сохраняет `city_id` в сессию (`session->data['city_id']`), возвращает JSON с именем города
- **Шаблон списка:** `public/store/view/theme/dominik/template/common/city_list.twig`
- **Логика в хедере:** `public/store/controller/common/header.php` (строки с `model_localisation_zone`)
- Берёт `config_country_id` и `config_zone_id` из настроек магазина
- Если в сессии есть `city_id` — используется он, иначе `config_zone_id`
- Передаёт `current_city_name` и `city_list_url` в шаблон
- **Кнопка в шапке:** `public/store/view/theme/dominik/template/common/header.twig` — после `{{ service_menu }}`
- **JS-функция:** `citySelect(el)` в `script.js` — загружает список городов через AJAX, создаёт модалку, при клике сохраняет выбор в сессию и обновляет название на кнопке
## Полезные команды
```bash