Extension Rggooglemap ( rggooglemap )
Vs. 3.0.2 Die Extension ist noch eine Betaversion. Eine Anleitung im üblichen OpenOffice Format gibt es nicht.
Als Grundlage für diese Anleitung habe ich wiki.typo3.org/index.php/Rggooglemap/testing benutzt.
Weitere Informationen:
wiki.typo3.org/index.php/EXT_rggooglemap und:
wiki.typo3.org/index.php/Rggooglemap_with_another_table
und viele Foreneinträge
Was sie kann:
Rggooglemap stellt ein oder mehrere POI's (Points of Interest) auf einer Google-Karte dar und kann auf unterschiedliche Art Informationen dazu ausgeben.
Beispiele sehen Sie unter:
www.ihredls.de
Voraussetzungen:
Die Extension wurde bei dieser Installation verwendet in einer Typo3 4.2.6 Installation.
Bevor die eigentliche Extension installiert wird, sollten folgende Extensions vorhanden sein:
tt_address (Vs. 2.2.1)
xajax (Vs. 0.2.5)
die vom Autor ebenfalls angegebene Extension 'Body onEvents Javascript' (Vs. 0.1.7) scheint zumindest in dieser Konstellation nicht notwendig zu sein. Dazu später mehr.
Zu diesen Extensions benötigt man auch einen Google Maps API Key für diese Internetseite, den man nach vorherigen Anmelden bei Google hier bekommt:
code.google.com/apis/maps/signup.html
Jetzt kann die Extension Rggooglemap installiert werden.
Installation:
Nach erfolgreicher Installation der Extension wird der Google Maps API Key im Extension Manager eingetragen. Dort gibt es auch weitere Einstellmöglichkeiten der Extension.
In der Menüleiste erscheint jetzt nach Löschen des Cache und Neuladen der Seite unter 'Web' ein neuer Eintrag 'Google-Map'.
Die Extension arbeitet standardmäßig mit tt_address zusammen, kann aber auch mit anderen Tabellen verwendet werden (s.Typoscript, s. Extensionmanager, siehe: wiki.typo3.org/index.php/Rggooglemap_with_another_table).
Im Seitenbaum legt man einen Sysordner an, der in meinem Beispiel 'Partneradressen' genannt wurde. Man klickt anschließend mit der linken Maustaste auf das Symbol des Sysordners und wählt 'neu'. Rechts wählt man Adressgruppe und/oder nur Adresse aus. Es ist hilfreich, dort schon einige Adressen-Einträge vorzunehmen, um etwas Testmaterial zu haben.
In den gleichen Sysordner legt man nach dem gleichen Verfahren ein neues Element der Extension Rggooglemap an: 'POI Kategorien' (Point of Interest). Die Kategorien sind z.B. sinnvoll, wenn man auf der Google-Karte verschiedene Kategorien zeigen möchte (z.B. Partner oder Hersteller oder sortiert nach Ortschaften, usw.).
Jeder Kategorie muss man einen Namen geben und eine Grafik zuordnen (Grafik vorher anfertigen, z.B. spezielle Grafik für Partner, spezielle Grafik für Hersteller, usw.), die als Markierung für diese Kategorie in der Karte später erscheint.
Zurück zu den Adresseinträgen: In den Adresseinträgen müssen jetzt noch unter 'Gruppe' der Ausgangspunkt (-> hier: 'Partneradressen') und unter 'Kategorie' die dazugehörige Kategorie ausgewählt werden. Wenn Sie wollen, können Sie hier auch schon nach den Geodaten durch einen Klick auf Längen- oder Breitengrad suchen lassen.
Klickt man auf den neuen Menüeintrag 'Googlemap' und anschließend auf den Sysordner 'Partneradressen' erscheint rechts eine Dropdownauswahl mit drei Punkten. Die '3. Settings' zeigt, wenn man bis hierher alles richtig gemacht hat, dass die Verbindung zu tt_address eingerichtet ist und funktioniert. Die '1. Karte und Punkt speichern' gibt einen die Möglichkeit, einzelne Punkte auf der Google Karte zu speichern.
Wenn man mit tt_address arbeitet ist der wichtigste Punkt '2. Alle Datensätze zeigen'. Dort werden alle bisher im Sysordner angelegten Adressen angezeigt. Das Feld Kategorie zeigt die ensprechende Kategorie und im Feld Karte steht entweder 'show' (dann ist alles fertig eingerichtet) oder 'Geodaten laden'. Wenn man darauf klickt, werden diese Daten geladen und anschließend 'show' angezeigt.
Praktisch ist, dass man von hier aus die Adressdaten auch verwalten kann, einschließlich dem Anlegen von neuen Datensätzen.
Unter Template/Info/Modify wählen Sie 'Click here to edit whole template record'. Sie wählen den Reiter 'enthält' (Typo3 Vs. 4.2.x) und dort unter 'Statische Templates einschließen (aus Erweiterungen)' 'Google Map (rggooglemap)' und speichern das Template. Wieder unter 'Info/Modify' wählen Sie jetzt 'Setup' und machen dort im Bereich Page, bzw. Seite den Eintrag:
ihr_seitenname.bodyTagAdd = onload="makeMap();"
Also zum Beispiel:
content_page = PAGE
content_page.typeNum = 0
content_page.bodyTag = <body>
content_page.bodyTagAdd = onload="makeMap();"
Dieser Eintrag ersetzt die vom Autor angegebene Extension 'Body onEvents Javascript' (Vs. 0.1.7). Nach dem Lesen diverser Foreneinträge scheint das mit neueren Typo3 Versionen auch die einzige Möglichkeit zu sein, die Karte im Frontend sichtbar zu machen.
Jetzt muss noch auf der Seite, wo die Karte erscheinen soll, das Plugin Google Map (rggooglemap) eingefügt werden.
In dem Flexform vor allem unter 'Allgemein' unter 'Anzeige von' Karte wählen und unter 'Ausgangspunkt' den Sysordner (in dieser Installation 'Partneradressen', s.o.) auswählen. Wenn Sie mit Kategorien arbeiten auch 'aktive und verfügbare Kategorien' entsprechend verbinden.
Jetzt sollte die Karte im Frontend sichtbar sein.
Die Extension läuft auch ohne die Extension xajax.
Konfiguration:
Die Extension ist vielfältig konfigurierbar: über die Extension im Extensionmanager, über die Flexforms und über Typoscript in: Template/Info/Modify/Setup.
Die Anleitung für die Syntax finden Sie unter: /ihrPfad zu typo3/typo3conf/ext/rggooglemap/pi1/static/setup.txt
plugin.tx_rggooglemap_pi1 {
templateFile = EXT:rggooglemap/template.html
pidList = 44
recursive =
mapDiv = map
mapWidth = 300
mapHeight = 450
mapLng = 13.537216186523438
mapLat = 47.585673399138294
mapZoom = 11
mapKey =
mapType = G_NORMAL_MAP
mapControl = show
mapNavigation = small
mapNavigationOnMouseOver = 0
mapOverview = 0
mapActiveCats =
mapAvailableCats =
enableDoubleClickZoom = 1
enableContinuousZoom = 1
enableScrollWheelZoom = 1
recordsPerPage = 10
# Icon for teh category tree
catIcon = IMAGE
catIcon {
file.maxW = 11
file.maxH = 11
stdWrap.spaceAfter=0
}
# stdWrap for all markers in the info bubble
poi {
name.wrap =
}
# Images in the info bubble
imageFields = image
poiImage = IMAGE
poiImage {
file.maxW = 60
file.maxH = 80
#imageLightbox2 = 1
#imageLightbox2.imageset = 1
#imageLightbox2.saveImageShow = 1
#imageLightbox2.printImageShow = 1
wrap =
imageLinkWrap = 1
imageLinkWrap {
enable = 1
bodyTag = <body bgColor="#dddddd">
wrap = <a href="javascript:close();"> | </a>
width = 1000m
height = 800
JSwindow = 1
JSwindow.newWindow = 1
JSwindow.expand = 17,20
}
# stdWrap.spaceAfter=10
}
# Links in the info bubble
linkFields = email,www
link {
# static text for www
#www.value = A link
# dynamic text from given field
#www.field= name
}
# stdWrap for all markers in the popup window
popup {
}
# view MENU
menu {
orderByCat = title
orderByRecord = name
}
# search settings
search {
minChars = 3
tt_address = title,description,name
fe_users = comments,name,first_name,last_name,company
}
activateCluster = 0
geocodeDefaultCountry = germany
# CSS styles
_CSS_DEFAULT_STYLE (
)
}
# end pi1
# link tags
plugin.tx_rggooglemap_pi2 {
mapId < plugin.tx_rggooglemap_pi1.mapId
tt_addressOnly = 1
tableType = tt_address
}
# category tags
plugin.tx_rggooglemap_pi3 {
mapId < plugin.tx_rggooglemap_pi1.mapId
}
## Set up page/type number:
export_xml >
export_xml = PAGE
export_xml {
typeNum=500
config.disableAllHeaderCode = 1
config.metaCharset = utf-8
config.additionalHeaders = Content-Type:text/xml;charset=utf-8
config.xhtml_cleaning = 0
config.admPanel = 0
config.sendNoCacheHeaders = 1
config.no_cache = 1
## Includes the lib:
#includeLibs.export_xml = EXT:rggooglemap/pi1/class.tx_rgooglemap_pi1.php
## Inserting the USER cObject for XML rendering
10 = CONTENT
10 {
table = tt_content
select {
pidInList = this
max = 1
andWhere = list_type='rggooglemap_pi1'
# languageField = sys_language_uid
}
renderObj = COA
renderObj {
10 < plugin.tx_rggooglemap_pi1
10.userFunc = tx_rggooglemap_pi1->xmlFunc
}
}
}
Diese Angaben oder Teile davon, die Sie benötigen, fügen Sie in Ihr Typo3 Setup ein.
Der Autor liefert ebenfalls zwei Templates, die das Aussehen und die Funktionalität steuern in:
/Ihr Pfad zu Typo3/typo3conf/ext/rggooglemap/template.html und templateSimple.html
Das Template Ihrer Wahl fügen Sie im Setup z.B. so ein:
plugin.tx_rggooglemap_pi1 {
templateFile = fileadmin/templates/template_rggooglemap.html
...
}
Anschließend legen Sie es unter dem selben Namen im fileadmin ab. Das hat den Vorteil, dass Sie es einfacher bearbeiten können und es bei einem Update der Extension nicht überschrieben wird.
Weitere Funktionalitäten sind hier versteckt:
/Ihr Pfad zu Typo3/typo3conf/ext/rggooglemap/res/help/templateSamples/www.einkaufsstrassen.at.html
und im selben Verzeichnis:
www.gosau.org.html
www.hotel-koller.com.html
Es handelt sich dabei um weitere Templates, die verschiedene Funktionalitäten zur Verfügung stellen, z.B. Aufteilen der Adressdatensätze im Frontend auf mehrere Seiten mit Vor- und ZurückLinks, die farbliche Hinterlegung der Datensätze zur besseren optischen Unterteilung (Zebramuster) und vieles mehr.
Für Menschen mit Programmierfähigkeiten sicher ein Eldorado der Möglichkeiten. Aber auch als Laie lässt sich einiges Realisieren (dauert nur manchmal seine Zeit).
Infoblase in der Google-Karte zeigt nicht genau auf den entsprechenden Ort
Mittels FTP suchen Sie im Verzeichnis /Ihr Pfad zu Typo3/typo3conf/ext/rggooglemap/res die Datei gm.js und ändern die Angaben in Zeile 39: baseIcon.infoWindowAnchor = new GPoint(22, 32); Dabei steht 22 = für Breite des Icons und 32 = für Höhe des Icon.
Sortieren der Datensätze nach z.B. Name
Obwohl es im Setup eine entsprechende Funktion gibt (s.o. orderByRecord = name), lässt sich die Extension nicht bewegen, dies auch zu tun. Abhilfe, gab es nur, wenn man in die Extension selber eingreift. Öffnen Sie die Datei class.tx_rggooglemap_pi1.php und suchen Sie im Bereich:
/**
* Creates the result records for the first page
*
* @param array $data: selected checboxes
* @return Result records including the pagebrowser for the 1st result page
*/
die Zeilen (bei Vs. 3.0.2, Zeile 716):
function processCat($data) {
$markerArray=Array();
$where = 'xx';
$field='';$table='';$where;$orderBy='';
...
}
Mit $orderBy='name'; sortieren Sie nach Name, mit $orderBy='city'; nach Ort usw.
und im Bereich:
/**
* Creates the result records from 2nd page to last page
*
* @param string $offset: offset value
* @return Result records including the pagebrowser
*/
unter:
// query for the results
ersetzen Sie in:
$res = $this->generic->exec_SELECTquery($field,$table,$where,$groupBy,$orderBy,$limit);
$orderBy durch 'city' (oder 'name' usw.). Die Zeile sieht dann so aus:
$res = $this->generic->exec_SELECTquery($field,$table,$where,$groupBy,'city',$limit);








