[Frage] Kombination von Extension "realty" und "wec_map" TYPO3-Version: 4.7.12

  • magicsale magicsale
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    15. 01. 2014, 11:46

    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

    1. 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


  • 1
  • Bluespuke Bluespuke
    Sternenflotten-Admiral
    0 x
    131 Beiträge
    12 Hilfreiche Beiträge
    15. 01. 2014, 12:28

    Du bist auf der richtigen Spur, schau mal [url=http://typo3.org/extension-manuals/wec_map/3.0.3/view/6/5/#idp25113344]ins Handbuch[/url].

    Beispiel für mh_banchenbuch:

    1. plugin.tx_wecmap_pi3 {
    2. tables {
    3. 10 {
    4. table = tx_mhbranchenbuch_firmen
    5.  
    6. # config for title
    7. title {
    8. title = TEXT
    9. title.field = firma
    10. }
    11.  
    12. where = FIND_IN_SET(1,kategorie)
    13.  
    14.  
    15.  
    16. description = COA
    17. description{
    18. #.....
    19. }
    20. }
    21. }
    22. }

  • magicsale magicsale
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    17. 01. 2014, 11:22

    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:

    1. if(t3lib_extMgm::isLoaded('realty')) {
    2. t3lib_div::loadTCA('realty');
    3. $TCA['tx_realty_objects']['ctrl']['EXT']['wec_map'] = array (
    4. 'isMappable' => 1,
    5. 'addressFields' => array (
    6. 'street' => 'address',
    7. 'city' => 'city',
    8. 'state' => '',
    9. 'zip' => 'zip',
    10. 'country' => 'country',
    11. ),
    12. );
    13. }
    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:
    1. plugin.tx_wecmap_pi3{
    2. pid = 5,7,28
    3. showRadiusSearch = 1
    4.  
    5. centerLat = 52
    6. centerLong = 11
    7. zoomLevel = 6
    8.  
    9. }
    10.  
    11. plugin.tx_wecmap_pi3.tables.10{
    12. table = tx_realty_objects
    13.  
    14. # join = LEFT JOIN tx_realty_cities ON tx_realty_objects.city = tx_realty_cities.uid
    15.  
    16. # config for title
    17. title {
    18. title = TEXT
    19. title.field = title
    20. }
    21.  
    22. description = COA
    23. description{
    24. 10 = TEXT
    25. 10.field = title
    26. 10.wrap = <p>|</p>
    27.  
    28. 20 = TEXT
    29. 20.field = street
    30. 20.wrap = <p>|<br />
    31.  
    32. 40 = TEXT
    33. 40.field = zip
    34. 40.wrap = |<br />
    35.  
    36. 50 = TEXT
    37. 50.field = city
    38. 50.wrap = |</p>
    39.  
    40. 60 = TEXT
    41. 60.field = country
    42. 60.wrap = <p>|</p>
    43.  
    44. }
    45. }

    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:
    1. SELECT tx_realty_objects.uid, tx_realty_cities.title FROM `tx_realty_objects`
    2. 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 magicsale
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    19. 02. 2014, 15:08

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

    1. plugin.tx_wecmap_pi3{
    2. pid = 7
    3. centerLat = 52
    4. centerLong = 11
    5. zoomLevel = 1
    6. }
    7.  
    8. plugin.tx_wecmap_pi3.tables.10{
    9. table = tx_realty_objects
    10. 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
    11. 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
    12.  
    13. description = COA
    14. description{
    15. 10 = TEXT
    16. 10.field = title
    17. 10.wrap = <p>(|)</p>
    18.  
    19. 15 = TEXT
    20. 15.field = exact_longitude
    21. 15.wrap = <p>Breiten-/Längengrad (|/
    22.  
    23. 20 = TEXT
    24. 20.field = exact_latitude
    25. 20.wrap = |)</p>
    26.  
    27. 25 = TEXT
    28. 25.field = street
    29. 25.wrap = <p>|</p>
    30.  
    31. 30 = TEXT
    32. 30.field = zip
    33. 30.wrap = <p>(PLZ) Stadt (|)
    34.  
    35. 40 = TEXT
    36. 40.field = city
    37. 40.wrap = &nbsp;|</p>
    38.  
    39. 50 = TEXT
    40. 50.field = country
    41. 50.wrap = <p>Land |</p>
    42. }
    43. }

    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 magicsale
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    20. 02. 2014, 10:00

    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":

    1. if(t3lib_extMgm::isLoaded('realty')) {
    2. t3lib_div::loadTCA('realty');
    3. $TCA['tx_realty_objects']['ctrl']['EXT']['wec_map'] = array (
    4. 'isMappable' => 1,
    5. 'addressFields' => array (
    6. 'street' => 'address',
    7. // 'city' => 'city',
    8. 'state' => '',
    9. 'zip' => 'zip',
    10. // 'country' => 'country',
    11. ),
    12. );
    13. }

    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

  • 1