numero2 / contao-storelocator

Contao Plugin for managing stores (or in common address data) and providing a frontend-search based on geo data.
https://www.numero2.de/contao/erweiterungen/storelocator.html
GNU Lesser General Public License v3.0
13 stars 8 forks source link

Händlerliste-Frage #3

Closed Askraba closed 12 years ago

Askraba commented 12 years ago

Hi! Tolle Erweiterung, habe eine Testinstallation aufgestetzt, aber die Händlerliste wird mir leider nicht angezeigt.. :-( Ich bin mir sicher das alles im Backend ordentlich angepasst wurde.

Die Suche funktioniert ganz gut, nur schade das man nicht auf jeweiligen Händler in der Ergebnissliste klicken kann um in die Detailansicht zu kommen.

Hier der Link: http://bikecloud.de.dedi3244.your-server.de/index.php/

Danke und Grüße

Askraba commented 12 years ago

Hm..es kann ja auch sein das ich die Funktionalität der Erweiterung missverstanden habe. Gibt es überhaupt in dieser Erweiterung eine Händlerdetailansicht wo zb. auch die Google Map im Frontend angezeigt wird oder dient es einfach nur für eine reine Suche=Ergebnisse

Danke :-)

Askraba commented 12 years ago

Ok, anscheinend war es gar nicht vorgesehen auch eine Google Map im Frontend auszugeben. Das Template befindet sich ja in der mod_storelocator_list.xhtml und ich will jetzt Testweise die Mappe genau hinter <?php if( !empty($entry['code']) ) { ?>WWW: <?php echo $entry['code']; ?>
<?php } ?> ausgeben lassen. Da ich kein Coder bin würde ich dabei Hilfe brauchen. I backend wird die Map-Image hier ausgegeben: tl_storelocator_stores.php ab der Zeile 245. Danke!

Askraba commented 12 years ago

So :-) Jetzt bin ich noch ein wenig weiter gekommen. Die Mappe wird jetzt im Frontend ausgegeben..nur die sache damit: '.$sCoords.' . Mit dem Code wird im Backend der Längengrad angezeigt. Jetzt muss ich nur noch herausfinden wie ich latitude und longitude hier im Template für das Frontend ausgeben kann: // img style="margin-top: 1px;" src="http://maps.google.com/maps/api/staticmap?center='.$sCoords.'&zoom=16&size=320x139&maptype=roadmap&markers=color:red|label:|'.$sCoords.'&sensor=false" //

Grüße!

bennyborn commented 12 years ago

Also generell ist bisher keine "Detailansicht" möglich, das hast Du richtig erkannt. Wäre natürlich aber eine Möglichkeit für die nächste Version. Eine Google-Map ist in der Listenansicht auch nicht ohne weiteres möglich aber die Änderungen würden wie folgt aussehen.

In der ModuleStoreLocatorList.php den folgenden Schnipsel ab Zeile 119 ersetzen

$aEntries[] = array(
    'name'          => str_replace('&','&amp;',$objCategories->name)
,   'email'         => $objCategories->email
,   'url'           => $objCategories->url
,   'phone'         => $objCategories->phone
,   'fax'           => $objCategories->fax
,   'street'        => $objCategories->street
,   'postal'        => $objCategories->postal
,   'city'          => $objCategories->city
,   'country_code'  => $objCategories->country
,   'country_name'  => $GLOBALS['TL_LANG']['tl_storelocator']['countries'][$objCategories->country]
,   'distance'      => $iDistance
,   'opening_times' => $times
,   'longitude'     => $objCategories->latitude
,   'latitude'      => $objCategories->latitude
);

im Template könnte dann die entsprechende ausgabe wie folgt aussehen

<img src="http://maps.google.com/maps/api/staticmap?center=<? echo $entry['longitude'].','.$entry['latitude']; ?>&zoom=16&size=320x139&maptype=roadmap&markers=color:red|label:|<? echo $entry['longitude'].','.$entry['latitude']; ?>&sensor=false" />

Je nach dem wie sehr es drängt kann ich auch heute noch ein Update pushen in dem die Map enhalten ist.

Askraba commented 12 years ago

Vielen Dank für deine super schnelle Antwort!

Ich habe nur 2 kleine Änderung durchfgeführt damit es funktioniert:

Oben steht 2 mal latitude ab dies hast du warscheinlich übersehen :-) , 'longitude' => $objCategories->latitude , 'latitude' => $objCategories->latitude

und im Template zuerst latitude und dann longitude, dann funktioniert es bei mir sehr gut. Mit dem CSV Import läuft es bis jetzt auch ganz gut.

Vielen Dank für alles, Grüße

Husein Askraba

Askraba commented 12 years ago

Nach 3 Tagen testen, ist mein Fazit leider ernüchternd. In meinen fall ist die Extension so nicht verwendbar.

Google Static-Map bringt leider nichts in der Listenansicht. Es gibt eine allgemeine Begrenzung von Google, wie oft die Static-Map generiert werden darf. Um nur das Design anzupassen musste ich immer wieder 2-3 Stunden die Listenansicht öffnen und schon hatte Google die Generierung der Mappen gesperrt. Ausserdem sieht es leider überhaupt nicht gut aus wenn gleich 10 Mappen geöffnet werden bei einer Begrenzung von 10 Händlern in der Ergebnis-Liste.

Es sind nur zwei dinge erforderlich, damit diese Extension wirklich perfekt wird.

  1. Händler-Detailansicht einbauen (zb. so mod_storelocator_detail.html5). Es soll der gleiche Inhalt angezeigt werden wie in der Ergebnis-Liste nur mit Google Maps und dann könnte man irgendwann in die Maps vielleicht auch einen Routenplaner einbauen.

Detailansicht sollte wirklich sein...

  1. Und ganz wichtig was ich in den letzten 3 Tagen bemerkt habe. Sobald es in die Tausende geht mit den Händlern wird die Ladezeit extrem lang. In meinen fall (5.000 Händler) dauert es bis zu 10-13 Sekunden bis die Ergebnisse angezeigt werden nach der Eingabe der zb. Postleitzahl. Ich glaube das der Code vielleicht etwas optimiert werden muss. Wie gesagt, ich bin kein Coder, bin mir aber sicher das man was machen sollte.

Mit der Ladezeit kann man es noch verkraften :-), aber wenigstens die Detailansicht einbauen. Das wäre einfach nur Klasse!

Vielen Dank und Grüße von Fitnesszubehör24.de :-))

bennyborn commented 12 years ago

Das mit der Detailansicht ist natürlich absolut nachvollziehbar, ich denke mal nächste Woche sollten wir das hinbekommen ;)

Bei 5.000 Händlern ist es natürlich verständlich warum die Ladezeit so groß ist, leider lässt sich das Problem aber nicht wirklich einfach lösen. Die Erweiterung muss sich erstmal alle 5.000 Adressen aus der Datenbank holen um die Entfernungen zu berechnen und die Ergebnisse sortieren zu können.

Natürlich kann man sowas auch direkt auf der Datenbank berechnen, was auch die allgemeine Vorgehensweise wäre, allerdings hat Contao ja den Anspruch auf jedem Hosting zu funktionieren und genau da wird es happig.

Allerdings werde ich sehen was ich machen kann. Dafür benötige ich jedoch eine Kopie der Daten zum testen (bitte nicht hier posten, besser per E-Mail ;o) ).

bennyborn commented 12 years ago

In a5d92122ddf6c659e75491e3a2e84e4fc035c096 wird nun direkt auf der Datenbank sortiert. Ist nicht die schnellste Möglichkeit aber die kompatibelste - mit Deinem Dump hat die Sortierung gerade mal 30ms gedauert.

Die Detailansicht kommt in einen extra Release den ich dann auch ins ER schieben werde

Askraba commented 12 years ago

Klasse! Vielen dank :-)

Ich werde dann auf das neue Release warten.

bennyborn commented 12 years ago

Soeben habe ich den neuen Release in das ER gestellt.