mapx2

День добрый сообщество…, возникла задача вывести карты в различных табах… вот ссылка для наглядности… ntgr.org/kontaktyi, табы и содержимое их работает норм за исключением тех самых карт… все карты выводятся в первом ресурсе, вывод контента ресурсов осуществляется вот так…

<div class="tab-content">
  [[!pdoResources? 
    &tplFirst=`tabKontAcTpl`
    &tpl=`tabKontTpl` 
    &limit=`0`
    &parents=`4` 
    &sortdir=`ASC`
    &processTVs=`1`
    &includeTVs=`adres,mapx,rec,agenti`
  ]] 
</div>

в чанках "tabKontAcTpl, tabKontTpl", вызывается сам сниппет карты.

[[!mapexDrawMap? &map=`[[+tv.mapx]]`]]
куда копать я не знаю, есть догадка, что нужно допилить сниппет до такого вида, то есть выводить карты текущего ресурса…

[[!mapexDrawMap? &map=`[[+tv.mapx]]` &id=`[[+id]`]]
как добавить параметр &id=`[[+id]]` я тоже не знаю, возможно и догадка моя не верна…

подскажите кто что знает, заранее благодарен!
Дмитрий Середюк
10 февраля 2015, 12:55
modx.pro
1 036
0

Комментарии: 4

Алексей Ерохин
10 февраля 2015, 16:18
0
Возможно Вам поможет параметр &mapId для выводы разных карт в разных контейнерах. Пишите туда id ресурса (или что-то другое, чтобы различалось).
    Дмитрий Середюк
    10 февраля 2015, 18:42
    0
    спасибо за наводку, все оказалось просто &mapid=`x[[+id]]`
    Максим Кузнецов
    10 февраля 2015, 17:35
    0
    1. Можно сделать табы сделать на ajax-е (https://modx.pro/development/3139-foundations-of-ajax/) — проблема будет решена де-факто.

    2. Глубоко не смотрел, но подозреваю, что дело в якоре Id=«mapexMap». Не знаю точной работы вашего сниппета карт, но, судя по куску:

    <script type="text/javascript">
        ymaps.ready(function(){
            mapexMap = new ymaps.Map("mapexMap", {
                center: [57.886209618522,59.999624185547],
                zoom: 11
            });
            mapexMap.setType("yandex#map");
            var mapexMapControls = "mapTools".split(',');
            for(var i = 0; i < mapexMapControls.length; i++){
                mapexMap.controls.add(mapexMapControls[i]);
            }
            mapexMap.geoObjects.add(new ymaps.Placemark([57.920845758766,60.103013093254], {"iconContent":"\u0412\u0430\u0433\u043e\u043d\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u0435\u0439 12","balloonContentBody":"","balloonContentHeader":"\u0412\u0430\u0433\u043e\u043d\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u0435\u0439 12"}, {"preset":"twirl#blueStretchyIcon"}));
    mapexMap.geoObjects.add(new ymaps.Placemark([57.872675912701,59.95150535582], {"iconContent":"\u041e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0439 \u043f\u0440. 22","balloonContentBody":"","balloonContentHeader":"\u041e\u043a\u0442\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0439 \u043f\u0440. 22"}, {"preset":"twirl#blueStretchyIcon"}));
    
            
            
            
        });
    </script>

    — который вызывается у вас 26 раз, то сниппет при помощи скрипта вставляет в контейнер с айди mapexMap модуль карты, но т.к. в html параметр id должен быть уникальным, то из-за специфики javascript'a он находит первое совпадение Id (первый контейнер) и вставляет туда результат. И так 26 раз.
      Наумов Алексей
      11 февраля 2015, 20:12
      0
      Все верно вам написали. Еще посмотрите что бы яндекс карты много раз не подключались, за это отвечает параметр includeJs www.createit.ru/blog/modx/2012/mapex-2-0-yandex-maps-for-modx-revolution/
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4