По многочисленным просьбам трудящихся выполнена адаптация плагина «Maps — Карты для типов контента». Теперь этот плагин работает без проблем с Alto CMS версии 1.0 и выше.
Причем, шаблоны вывода карт с метками были доработаны, и теперь, при необходимости, легко можно сделать вывод нескольких меток на одной карте. Например, когда выводится несколько топиков с геометками. Кому интересно — подробности под катом. Для отображения карты вызывается соответствующий шаблон:
templates/skin/default/fields/customs/maps/google/show.tpl — для карт Гугл
templates/skin/default/fields/customs/maps/yandex/show.tpl — для карт Яндекса
Подключение шаблона сейчас выполняется так:
<!-- тип карты: Яндекс/Гугл -->
{$sMapType=Config::Get('plugin.maps.map_type')}
<!-- центр карты по умолчанию -->
{$aMapDefaultCenter=F::Array_Str2Array(Config::Get('plugin.maps.map_center'))}
<!-- Надпись над картой -->
{$sMapLabel=$oField->getFieldName()}
<!-- формируем массив меток -->
{$aPlace.coord=$oField->getCoord($oTopic->getField($oField->getFieldId()))}
{$aPlace.title=$oTopic->getTitle()|escape:'html'}
{$aMapPlaces[]=$aPlace}
<!-- Подключаем шаблон вывода карты -->
{include file="./maps/$sMapType/show.tpl" aMapPlaces=$aMapPlaces}
Как можно заметить, в шаблон вывода карты передается массив меток, который нужно расставить на карте. Массив передается в таком виде:array(
array('coord' => ..., 'title' => ...)
array('coord' => ..., 'title' => ...)
array('coord' => ..., 'title' => ...)
)
Т.е. если в каком-то экшене, виджите или еще каком компоненте сформировать такой массив, а потом вызвать шаблон вывода карты, передав туда такой массив, то все эти метки будут отображены на карте.Для желающих что-то улучшить, углубить и уширить в плане функционала, плагин на гитхабе: https://github.com/altocms/alto-plugin-maps
26 комментариев
2. Если после включения плагина, отредактировать статью, но не поставить метку, то будет выводиться пустое место там, где должна быть карта. Не логичнее ли ее прятать?
И дайте знать, если проблема с выводом решилась — если карта не задана, то топики без карты отображаются, как обычно, а где задана — показывается карта
upd. А нет, не только у статей с картами. При отключении плагина, ошибка у всех статей (при попытке открыть для просмотра и для редактирования тоже)
Не знаю, поможет или нет, но вот ошибка в логе:
Кстати, воспроизвел ошибку с пустой картой.
В постах, где изначально не было карты при включении плагина, карта не появляется — тут все ок.
Проблема с новыми постами. При создании новой статьи, если не поставить метку на карту, будет отображаться вот так
Там вместо {json var=Config::Get('plugin.maps.map_center')} надо {json var=$aMapDefaultCenter}
Скрипты Я.Карт не понимают, когда координаты одной строкой передаются, им нужно обязательно массивом. А Гуглы переваривают без проблем
developers.google.com/maps/documentation/javascript/examples/places-searchbox?hl=ru
Разбираться надо, вникать…
catalog.livestreetcms.com/addon/view/486/
catalog.livestreetcms.com/addon/view/392/
Думаю под альто тоже очень бы пригодился подобный плагин.