
YandexMapsLocator
Локатор точек на Яндекс.Картах для MODX 3. Free: карта и поиск. Pro: «открыто сейчас», MiniShop3, CSV и REST


Локатор умеет multi-context: фильтрует по context_key, строит URL ресурса в его контексте и поднимает нужный контекст на endpoints.
{'!YandexMapsLocator' | snippet : [
'parents' => 2080,
'context' => 'en'
]}[[!YandexMapsLocator?
&parents=`2080`
&context=`en`
]]Значение context | Поведение |
|---|---|
| (пусто) | Текущий контекст страницы |
en | Один контекст |
en,de | Поиск по нескольким |
Разрешённый контекст уходит в map_config.context и в AJAX search.php.
| Ключ | Назначение |
|---|---|
yandexmapslocator_default_context | Fallback, если активный контекст недоступен (по умолчанию web). Также контекст CSV-экспорта Pro |
yandexmapslocator_allowed_contexts | Allowlist. Пусто: любой существующий context key |
search.php и Pro api.php принимают context или ctx:
/assets/components/yandexmapslocator/search.php?parents=2080&context=enУспешный ответ (data — массив Store, как Store::toArray):
{
"success": true,
"data": [
{
"id": 2085,
"pagetitle": "Store on Broadway",
"address": "Broadway 10, New York",
"latitude": 40.71,
"longitude": -74.01,
"url": "https://example.com/en/stores/broadway/",
"context_key": "en",
"distance": null,
"distance_formatted": ""
}
],
"meta": { "total": 3 }
}Неизвестный или запрещённый контекст → 400 invalid_context:
{
"success": false,
"error": "Invalid or disallowed context",
"code": "invalid_context"
}?route=api/v1/locations&parents=5&context=en&fields=id,title,address,url,context_key,coordinatesУспешный ответ (фрагмент):
{
"success": true,
"data": [
{
"id": 2085,
"title": "Store on Broadway",
"address": "Broadway 10, New York",
"url": "https://example.com/en/stores/broadway/",
"context_key": "en",
"coordinates": { "lat": 40.71, "lon": -74.01 }
}
],
"meta": { "total": 3, "limit": 20, "offset": 0 }
}Поле context_key только если перечислено в fields. url строится в контексте ресурса.
Неизвестный или запрещённый context (как у search.php):
{
"success": false,
"error": "Invalid or disallowed context",
"code": "invalid_context"
}Деталь точки с тем же фильтром:
?route=api/v1/locations/2085&context=en&fields=id,title,url,context_key{
"success": true,
"data": {
"id": 2085,
"title": "Store on Broadway",
"url": "https://example.com/en/stores/broadway/",
"context_key": "en"
}
}Точка из другого контекста или неопубликованная → 404 not_found.