Zum Inhalt springen

Kombination von Extension "realty" und "wec_map"

Erstellt am 15. Januar 2014 · 4 Antworten · letzte Antwort am 20. Februar 2014

Tags: TYPO3 4.x, Frage

magicsale ·

Hallo liebe Typo3 Gemeinde!

Wieder einmal stehe ich vor einem Problem, was ich auch nach längerer Suche im Netz und auch durch eigenes Herumtesten nicht wirklich in den Griff bekomme. ;-(
Wie der Titel schon sagt, möchte ich im Grunde etwas recht simples machen, nämlich die beiden Extensions "realty" und "wec_map" miteinander verknüpfen, so dass die Mietobjekte, die in Realty erstellt werden, einfach über eine WEC "Tabellenkarte" ausgegeben werden. Manuell (also ohne wec_map) funktioniert das soweit auch - das Auslesen der Daten und Eintragen in eine Map klappt ohne Probleme...

Da in "realty" die Objekte ja sogar exakte Längen/Breitenangaben haben können, dürfte das ja >eigentlich< kein Problem sein.

Bei der Auswahl der Tabelle (Flexform) ist realty leider nicht anwählbar, ein Eintrag

plugin.tx_wecmap_pi3.tables.10.table = tx_realty_objects

führt leider nur zu der Ausgabe "Es scheint nichts anzuzeigen zu sein. Bitte stellen Sie sicher, dass die Karte korrekt konfiguriert ist und Benutzer oder Marker gesetzt sind."

Ich vermute also mal, dass die interne Verknüpfung (nach dem Motto schau in Feld X, da steht X drin, schau in Feld Y, da steht Y drin) der Tabellenfelder hier nachgetragen werden muss, nur wie? Muss die Zuweisung über SELECT laufen? Wäre sehr dankbar für einen Hinweis in dieser Richtung...

Danke im Vorraus!

Liebe Grüße

Robert

Bluespuke ·

Du bist auf der richtigen Spur, schau mal ins Handbuch.

Beispiel für mh_banchenbuch:

plugin.tx_wecmap_pi3 {
  tables {
    10 {
      table = tx_mhbranchenbuch_firmen
      
      # config for title
      title {
        title = TEXT
        title.field = firma
      }
      
      where = FIND_IN_SET(1,kategorie)
      
      
      
      description = COA
      description{
#.....
      }
    }
  }
}
magicsale ·

Also schon einmal ein großes Dankeschön für deine Rückmeldung... das Handbuch an der Stelle habe ich mir eigentlich auch detailliert angeschaut - es scheint ja so, dass man nicht einfach sagen kann "Koordinate X aus dem Feld, Koordinate Y aus dem Feld"...

Ich hab's nun folgendermaßen versucht: In der ext_tables.php habe ich noch nach dem Eintrag für 'tt_adress' einfach:

if(t3lib_extMgm::isLoaded('realty')) {
	t3lib_div::loadTCA('realty');
	$TCA['tx_realty_objects']['ctrl']['EXT']['wec_map'] = array (
		'isMappable' => 1,
		'addressFields' => array (
			'street' => 'address',
			'city' => 'city',
			'state' => '',
			'zip' => 'zip',
			'country' => 'country',
		),
	);
}

eingetragen...
Dadurch konnte ich es schon einmal erreichen, dass zumindest in der Vorauswahl die extension realty auswählbar ist. Ich denke, dass man mittels select, join und where die Auswahl erzeugen muss (also quasi das SQL Statement nachbilden muss).
Mein derzeitiges TS an der Stelle ist:

plugin.tx_wecmap_pi3{
  pid = 5,7,28
  showRadiusSearch = 1
  
  centerLat = 52
  centerLong = 11
  zoomLevel = 6
  
}

plugin.tx_wecmap_pi3.tables.10{
  table = tx_realty_objects

#  join = LEFT JOIN tx_realty_cities ON tx_realty_objects.city = tx_realty_cities.uid
  
  # config for title
  title {
    title = TEXT
    title.field = title
  }

  description = COA
  description{
    10 = TEXT
    10.field = title
    10.wrap = <p>|</p>
    
    20 = TEXT
    20.field = street
    20.wrap = <p>|<br />

    40 = TEXT
    40.field = zip
    40.wrap = |<br />

    50 = TEXT
    50.field = city
    50.wrap = |</p>

    60 = TEXT
    60.field = country
    60.wrap = <p>|</p>
    
  }
}

Die Ausgabe scheint irgendwie auf dem richtigen Weg zu sein. Aber auch nur irgendwie...
Problem 1:
- Es wird nur ein Eintrag ausgegeben (3 sind eigentlich vorhanden)
Problem 2:
- Es werden nicht die Angaben für exact_lan/-lng verwendet, sondern offenbar die Angaben aus City/Stadtteil genutzt...
Problem 3:
- Die in der Bubble vorhandenen Daten sind natürlich korrekt ausgegeben... Da steht dann z.B. als "country": 54... ist auch richtig, weil die Angaben hierzu ja aus anderen Tabellen gezogen werden... Ich hab das mal in der DB mit zB:

  SELECT tx_realty_objects.uid, tx_realty_cities.title FROM `tx_realty_objects`
  LEFT JOIN `tx_realty_cities` ON tx_realty_objects.city = tx_realty_cities.uid

mal zum Kurztest nachgebildet, da wird dann z.B. die city als richtiger Name aufgeführt. Wenn ich versuche, dass aber im TS einzubauen, so wird nichts mehr ausgegeben. Ich vermute wegen der Doppelung von den DB-Tabellen Bezeichnungen. So sind in beiden Tabellen, die mittels Join kombiniert werden, title etc. vorhanden. Wenn ich das aber im TS versuche (also z.B. title.field = tx_realty_objects.title) wie in SQL selbst, so wird nichts ausgegeben...

Kannst du (oder jemand anderes) hier schon weiterhelfen? ;-(

Vielen Dank!

magicsale ·

Hallo liebe Typo3 Gemeinde!

Also ich greife das hier noch einmal auf... zwischenzeitlich habe ich eine Lösung gebaut, bei der ich via TS direkt das JS zusammengebaut habe - das ist aber sehr umständlich und ich denke, dass wird man doch auch mit wec_map realisieren können?

Ich habe mich also noch einmal ran gemacht und habe den Join erfolgreich durchgeführt (man lernt dann ja doch noch einiges dazu):

plugin.tx_wecmap_pi3{
  pid = 7
  centerLat = 52
  centerLong = 11
  zoomLevel = 1
}

plugin.tx_wecmap_pi3.tables.10{
  table = tx_realty_objects
  join = JOIN tx_realty_cities AS cities ON tx_realty_objects.city = cities.uid JOIN static_countries AS country ON tx_realty_objects.country = country.uid
  select = tx_realty_objects.uid AS uid, tx_realty_objects.title AS title, tx_realty_objects.zip AS zip, cities.title AS city, tx_realty_objects.street AS street, tx_realty_objects.exact_latitude AS exact_latitude, country.cn_official_name_local AS country, tx_realty_objects.exact_longitude AS exact_longitude

  description = COA
  description{
    10 = TEXT
    10.field = title
    10.wrap = <p>(|)</p>

    15 = TEXT
    15.field = exact_longitude
    15.wrap = <p>Breiten-/Längengrad (|/

    20 = TEXT
    20.field = exact_latitude
    20.wrap = |)</p>
    
    25 = TEXT
    25.field = street
    25.wrap = <p>|</p>

    30 = TEXT
    30.field = zip
    30.wrap = <p>(PLZ) Stadt (|)

    40 = TEXT
    40.field = city
    40.wrap = &nbsp;|</p>

    50 = TEXT
    50.field = country
    50.wrap = <p>Land |</p>
  }
}

Die Daten in der description werden auch richtig ausgegeben (Land wird als korrektes Land ausgegeben, Stadt als korrekte Stadt). Nur leider scheint es so, dass die Marker an einer jeweils völlig falschen Stelle erscheinen? Danach liegt eine Adresse statt auf Sylt mitten in München, Paris in Südafrika und Berlin in der Nähe von Fort Wayne, USA (das wiederum schon recht lustig ist)...
Obwohl ich hier die korrekten GEO-Daten eingegeben habe, werden diese offenbar nicht berücksichtigt und neue (vermutlich) berechnet - die aber leider völlig falsch sind...

Hat hier einer eine Idee?

Vielen Dank

Robert

magicsale ·

Mühsam ernährt sich das Eichhörnchen ^^'

Ich habe herausgefunden, woran es liegen könnte, allerdings habe ich noch keine vollständige Lösung:

Wie oben zu sehen ist, hatte ich im Vorfeld die Datei "ext_tables.php" um folgenden Eintrag "erweitert":

if(t3lib_extMgm::isLoaded('realty')) {
	t3lib_div::loadTCA('realty');
	$TCA['tx_realty_objects']['ctrl']['EXT']['wec_map'] = array (
		'isMappable' => 1,
		'addressFields' => array (
			'street' => 'address',
//			'city' => 'city',
			'state' => '',
			'zip' => 'zip',
//			'country' => 'country',
		),
	);
}

Wenn ich den Eintrag "city" bzw. "country" auskommentiere (bzw auf ' ' ändere), so werden die Standorte korrekt ausgegeben - leider funktioniert das dann nur innerhalb von Deutschland; da offenbar die PLZ zur Bestimmung der Position herangezogen wird, ist beim Eintrag von Paris eine Position in Bayern angegeben (korrekte Position für die PLZ; falsche Position insgesamt, da das Land nicht mit genutzt wird [logisch]). Bei den anderen direkt darüber stehenden extensions (z.B. tt_address) werden die Daten ja innerhalb einer Tabelle gespeichert, bei der extension "realty" werden diese normalisert und demnach Stadt und Land in einer separaten Tabelle angelegt.

Jetzt meine eigentliche Frage:
Wie stelle ich es in dem o.g. PHP Bereich an, dass mehrere Tabellen genutzt werden (quasi die Syntax für den Join)? Da ich hier im Bereich der Extensionentwicklung noch blutiger Anfänger bin, ist mir nicht so völlig klar, wie ich das dort schreiben muss 🙁

Danke für einen Tip...

Robert