
- MODX 3
- PHP 8.2


Pro. На сайте появляются бейджи «Открыто» / «Закрыто», кнопка «Только открытые» и поля is_open_now, status_hint, closes_at, next_open_at. Фильтр включается только через filters=working_now. Параметр working_now=1 код не читает.
В TV yandexmaps_working_hours храните местное время точки, не UTC сервера.
yandexmaps_timezone (IANA), например Europe/Moscow или Asia/Omsk.yandexmapslocator_timezone (по умолчанию Europe/Moscow).От пояса зависят фильтр, бейджи и поля статуса.
Для working_now / is_open_now в yandexmaps_working_hours нужен JSON.
Ключи дней: mon … sun. Значение: массив интервалов "HH:MM-HH:MM". Пустой массив: выходной. Интервал через полночь (22:00-06:00) допустим.
Пример (пн-чт 09-21, пт 09-22, сб 10-22, вс 10-20):
{
"mon": ["09:00-21:00"],
"tue": ["09:00-21:00"],
"wed": ["09:00-21:00"],
"thu": ["09:00-21:00"],
"fri": ["09:00-22:00"],
"sat": ["10:00-22:00"],
"sun": ["10:00-20:00"]
}Круглосуточно:
{
"mon": ["00:00-23:59"],
"tue": ["00:00-23:59"],
"wed": ["00:00-23:59"],
"thu": ["00:00-23:59"],
"fri": ["00:00-23:59"],
"sat": ["00:00-23:59"],
"sun": ["00:00-23:59"]
}Два интервала в день:
{
"mon": ["09:00-14:00", "16:00-20:00"],
"tue": ["09:00-14:00", "16:00-20:00"],
"wed": ["09:00-14:00", "16:00-20:00"],
"thu": ["09:00-14:00", "16:00-20:00"],
"fri": ["09:00-14:00", "16:00-20:00"],
"sat": [],
"sun": []
}Произвольный текст вроде «пн-пт 10-19» в карточке покажется, но статус «открыто сейчас» для него не считается. Точка для фильтра закрыта.
На форме ресурса кнопка Pro «Проверить расписание» показывает статус и ближайшее открытие/закрытие без сохранения. Кнопка появляется только если TV yandexmaps_working_hours назначен шаблону этого ресурса. Без привязки её нет, хотя Pro установлен.
{'!YandexMapsLocator' | snippet : [
'parents' => 42,
'filters' => 'working_now'
]}[[!YandexMapsLocator? &parents=`42` &filters=`working_now`]]В чанке точки после Pro AfterStorePrepare доступны {$is_open_now}, при необходимости {$status_hint}, {$closes_at}, {$next_open_at}.
Разметка статуса как в yandexmapslocator.store пакета:
{if isset($is_open_now)}
<span class="yml-store__status {if $is_open_now}is-open{else}is-closed{/if}">
{if $is_open_now}
{'yandexmapslocator_open_now' | lexicon}
{else}
{'yandexmapslocator_closed_now' | lexicon}
{/if}
</span>
{/if}Список только открытых:
/assets/components/yandexmapslocatorpro/api.php?route=api/v1/locations&parents=42&filters=working_now&fields=id,title,is_open_now,status_hint,closes_at,working_hours_schedule{
"success": true,
"data": [
{
"id": 15,
"title": "Аптека №3",
"is_open_now": true,
"status_hint": "Закроется в 21:00",
"closes_at": "2026-09-01T21:00:00+06:00",
"working_hours_schedule": {
"mon": ["09:00-21:00"],
"tue": ["09:00-21:00"],
"wed": ["09:00-21:00"],
"thu": ["09:00-21:00"],
"fri": ["09:00-22:00"],
"sat": ["10:00-22:00"],
"sun": ["10:00-20:00"]
}
}
],
"meta": { "total": 2, "limit": 20, "offset": 0 }
}Поля Pro попадают в ответ только если их перечислили в fields.
Модуль pro.js добавляет бейдж на карточке и кнопку «Только открытые» в панели фильтров.
Нужны установленный Pro и capability pro в map config.
Контракт модуля:
install(locator) ничего не делает, отмечается data-yml-pro-uisearch:start и дописывает working_now в filters, когда кнопка активнаclearLocation() и сбрасывает кнопкуballoon:buildlocator.openNowFilterРазметка, которую ставит модуль:
| Что | Значение |
|---|---|
| Атрибут кнопки | data-yml-open-now |
| Атрибут активного состояния | data-yml-active |
| Класс кнопки | yml-search__open-now |
| Класс бейджа | yml-balloon__status is-open / is-closed |
| Класс подписи бейджа | yml-balloon__status-hint |
Подсказка
CSS всех этих классов лежит в Free: assets/components/yandexmapslocator/css/locator.css. Отдельного Pro-фронтенд-CSS нет, css/mgr.css в Pro покрывает только панель управления в менеджере. Если классы не стилизованы, проверьте, что подключён locator.css Free.