UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: thecoder от 17 Июля 2013, 17:22:12

Название: Яндекс.Карта на сайте
Отправлено: thecoder от 17 Июля 2013, 17:22:12
Привет.
Застрял с выводом яндекс.карты на xslt.
Вывожу данные объекта каталога и на странице надо показать карту (скрипт взят для примера):

Цитировать
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.full&lang=" type="text/javascript"></script>
<script type="text/javascript">
          var myMap = new ymaps.Map('myMap', {
            // центр и коэффициент масштабирования однозначно
            // определяют область картографирования
            center: [55.76, 37.64],
            zoom: 7
          });
</script>

в поле div myMap карта как бы есть но ее не видно :(
В чем косяк? Как правильно сделать вывод карты?

Как вообще в xslt вставлять код js?
Название: Re:Яндекс.Карта на сайте
Отправлено: muldy от 17 Июля 2013, 18:12:32
Если хотите использовать код карт на всех страницах одинаковый и выводить его на страницах, то оптимальнее это сделать добавив новый тип данных простой текст и туда вставить карту, примерно таким выводом:
 <xsl:value-of select="document('upgae://ID вашей страницы')//property[@name = 'Имя поля с картой']/value" disable-output-escaping="yes"/>

Если хотите менять какой то параметр то скрипт можно заключить в CD DATA^ вот здесь инструкция:
http://wiki.umisoft.ru/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D1%87%D0%B5%D1%82%D1%87%D0%B8%D0%BA%D0%B0_liveinternet
Название: Re:Яндекс.Карта на сайте
Отправлено: e.ioffe от 18 Июля 2013, 08:35:16
Оптимальнее будет <xsl:value-of select="document(concat('upage://', ID вашей страницы, '.Имя поля с картой')//value" disable-output-escaping="yes" />

Тогда будет загружена не вся страница, а только одно поле, отвечающее за карту.
Название: Re:Яндекс.Карта на сайте
Отправлено: thecoder от 18 Июля 2013, 16:00:20
Либо я туплю либо яндекс.
Включил firebug и увидел

ymaps.Map is not a constructor 
т.е. в подключаемом скрипте нет конструктора? Фигня какая-то.

Оказалось что туплю все таки я :) Заработало.
Название: Re:Яндекс.Карта на сайте
Отправлено: admin от 21 Июля 2013, 13:26:36
подытожим и добавим...

1. проверьте, что вы заменили символ & на &amp; , так как иначе xslt будет ругаться... Например в вызове (очень частая проблема) <script src="http://api-maps.yandex.ru/2.0-stable/?load=package.full&lang=" type="text/javascript"></script>

2.
для надежности вынесите js код в отдельный файл или заключите его в CDATA блок. Например

<script type="text/javascript">
          <![CDATA[
          var myMap = new ymaps.Map('myMap', {
            // центр и коэффициент масштабирования однозначно
            // определяют область картографирования
            center: [55.76, 37.64],
            zoom: 7
          });
          ]]>
</script>


3.
вынесите js код в отдельное поле какой-то страницы в админке и выведите его одним из предложенных выше вариантов. Например так <xsl:value-of select="document(concat('upage://', ID вашей страницы, '.Имя поля с картой')//value" disable-output-escaping="yes" />
Название: Re:Яндекс.Карта на сайте
Отправлено: thecoder от 22 Июля 2013, 16:14:40
сделал все как описано только без п.3 - работает, оставим пока так :)