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: Öffnet externen Link in neuem Fensterwww.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);

^

Diese Webseiten wurden
produziert mit Typo3, Vs. 4.5.7
-
und folgenden Extensions:
Image Cycle
Cumulus Tag Cloud und
Powermail
Typo3 Content Management SystemCMS Typo3