PDA

Просмотр полной версии : Multiple Content + DCD GoogleMap?


_3AMnoTEX_
19.08.2011, 18:28
Есть у меня на странице элемент - вкладочки (экстеншн 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 для данной страницы написать:

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

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

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):
<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>
)}