Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Multiple Content + DCD GoogleMap? (http://forum.typo3.ru/showthread.php?t=9644)

_3AMnoTEX_ 19.08.2011 18:28

Multiple Content + DCD GoogleMap?
 
Есть у меня на странице элемент - вкладочки (экстеншн jfmulticontent). Захотелось мне добавить вкладочку, внутри которой будет карта (екстеншн dcdgooglemap). Но когда я открываю вкладку, карты нет.
Может, кто сталкивался с этой проблемой?

_3AMnoTEX_ 22.08.2011 23:12

Я написал письмо разработчику Multiple Content Jurgen Furrer'у. Он подкинул ссылочку, куда копать. Как я и подозревал, проблема кроется в jQuery (мой вольный перевод):

Почему Google Map не работает, если его поместить в скрытую (неактивную) вкладку?
Любой компонент, требующий вычисления его размеров при иницилизации, не будет работать в скрываемой вкладке, потому что сама панель вкладки скрыта посредством свойства "display: none", так что любые элементы внутри будут создаваться в большинстве браузеров с нулевыми размерами.
Эту неприятность легко обойти.
Скрывать неактивные вкладки надо за границами экрана:
Код:

.ui-tabs .ui-tabs-hide {
    position: absolute;
    left: -10000px;
}

Карту Google maps можно показыватькаждый раз, когда показывается вкладка:
Код:

$('#example').bind('tabsshow', function(event, ui) {
    if (ui.panel.id == "map-tab") {
        resizeMap();
    }
});

resizeMap() вызывает функцию checkResize() Google Maps для нужной карты.

Итак, файл css я поправил, работает.
файл лежит по этому пути:
/ext/jfmulticontent/res/jquery/css/theme-1.8.14/jquery-ui-1.8.14.custom.css

Но вот как на отдельно взятую страницу воткнуть функцию jQuery, я не знаю :confused:
Буду пока искать...

Андрей Аксенов 23.08.2011 09:25

А куда на "отдельно взятую страницу воткнуть функцию jQuery" нужно? При помощи TS разве не получится?

_3AMnoTEX_ 23.08.2011 12:05

Пробовал через TsConfig в настройках страницы - что-то не получилось, и вообще прочитал, что TsConfig предназначен для настройки бэкенда.
Через TypoScript в шаблоне добавить получается, но скрипт добавляется на все страницы с этим шаблоном..

Андрей Аксенов 23.08.2011 12:30

Естественно на все страницы, так шаблон нужно сделать именно для этой страницы, а на страницах ниже убрать этот код...
Что-то вроде такого в Настройках шаблона TS для данной страницы написать:
PHP код:

page.headerData {
    
199 HTML
    199.value 
= <script type="text/javascript">...</script>
    } 

А на страница ниже убрать этот код проще некуда:
PHP код:

page.headerData.199 

все...

_3AMnoTEX_ 28.08.2011 17:33

Приведенные решения не работают, как надо, я смог заставить работать только "родные" карты Google (не typo3 extension) с фиксированным размером.
Итак, вот на чем я остановился:
в файле /ext/jfmulticontent/res/jquery/css/theme-1.8.16/jquery-ui-1.8.16.custom.css
меняю стили (без этого вообще работать отказывается):
Код:

/*.ui-tabs .ui-tabs-hide { display: none !important; }*/
.ui-tabs .ui-tabs-hide { position: absolute; left: -10000px; }

вставляю "родную" google map (plain HTML):
Код HTML:

<div id="gmap_world" style="width:600px; height:500px"></div>
и скрипт:
Код:

page.headerData {
    199 = HTML
    199.value (
<script type="text/javascript"
    src="http://maps.googleapis.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
        window.onload = function () {
          initialize();
        }
</script>
<script type="text/javascript">
  function initialize() {
    var myOptions = {
      zoom: 2,
      center: new google.maps.LatLng(32.51717143645802, -8.7890625),
      mapTypeId: google.maps.MapTypeId.SATELLITE
    };
    var map = new google.maps.Map(document.getElementById("gmap_world"), myOptions);
  }
</script>
)}



Часовой пояс GMT +4, время: 09:41.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot