Ergebnis 1 bis 12 von 12

Thema: Catalog Liste zu Umkreissuche umfuktionieren

  1. #1
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard Catalog Liste zu Umkreissuche umfuktionieren

    Hallo,

    ich habe einen Catalog in dem ich ein Feld mit Coordinaten habe. Nun würde ich gerne mittels einem Formularfeld nur die naheliegendsten Orte zeigen.
    Wie ich mir die Einträge raussuche, das weiß ich.
    Nur wie sage ich der Liste jetzt, dass sie mir nur das anzeigen soll?

    Viele liebe Grüße
    psren

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Hi,
    musst du wohl erst in Abhängigkeit von z.B. einem gegebenen Radius bzw. leichter wäre ein rechteckiger Bereich mit der Ausgangsposition in der Mitte, berechnen und dann per Abfrage nur die Entsprechenden Einträge innerhalb des Wertebereichs ausgeben.

    Das Berechnen ist nicht so schwer. Ich hab sogar irgendwo ein Flash-Script indem ich Koordinaten berechne. Aber google hilft da.

    Dann einfach von links oben, nach rechts unten ein Koordinatenfeld aufspannen und du hast die Werte.


    Grüße
    Geändert von Tim G (18.01.2012 um 17:18 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo psren,

    eine Umkreissuche für Contao findest Du hier bei Psi:
    http://www.4show.de/opengeodb4ward.html

  4. #4
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Ganz einfache Moeglichkeit mit dem Formulargenerator.

    Ein Formular generieren, mit Weiterleitungsseite auf die Uebersichtsliste deiner Objekte (Katalog Liste)

    In diesem Formular hast du ein Hidden Field, damit der Katalog weiss, das du von dort kommst.
    Dazu noch ein Feld fuer deinen Ort, und eine DropDownListe mit den Entfernungen.

    Danach ein MiniModul schreiben, und vom Catalog den Hook parseCatalog nutzen.
    Der wird aufgerufen, wenn die Liste mit den Objekten generiert wurde, mit uebergabe aller Objekte in einem Array.
    Nun brauchst Du nur noch mittels Input->post kontrollieren, ob du von dem Formular gekommen bist, wenn ja, hast du den Ursprungsort, Umkreis und kann die Liste durchgehen, und alle Objekte entfernen, die nicht innerhalb deines Kreises sind.

    Und zurueckgeben dann die bereinigte Liste.
    Somit hast du in der normalen Catalog Liste alle Objekte innerhalb eines Umkreises.


    Ein fertiges Modul gibt es meines Wissens noch nicht fuer den Katalog
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  5. #5
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Hallo Tim,

    erstmal Danke für die Antwort.

    Wie ich mir die Einträge raussuche, das weiß ich.
    Nur wie sage ich der Liste jetzt, dass sie mir nur das anzeigen soll?
    Wie ich herausfinde welches die nächsten Einträge sind, das weiß ich wollte ich damit sagen.

    Nur wie ich die Liste manipuliere, dass sie Sie in der Reihenfolge sortiert das weiß ich nicht.

    und vom Catalog den Hook parseCatalog nutzen.
    Das hört sich nach meiner Lösung an. Danke.
    Ich schau mal ob ich es hinbekomme :-D

  6. #6
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    der parseCatalog Hook funktioniert dafür erstmal, aber besser wäre den catalog filter zu modifizieren.

    Da der Hook zwar die Liste filtert, aber dies nicht innerhalb der URL angezeigt wird, wie es beim Filter gefall ist.

    Sonst geht das, ja.


    Hier sonst nen Ansatz:

    Bau dir einen catalog-filter mit Einträgen aus ner tax. tabelle: 20km, 30km usw.
    Beim Filtern wird die Seite neugeladen, dort greifst du dir den aktuellen gesetzten Filterwert und nutzt den parseCatalogHook zum Neuaufbau der Liste.
    (der Filter hat auch einige gute Hooks. xtra hatte da einiges neugemacht. ist aber schon eine Weile her, dass ich damit gearbeitet habe. Das countryselectfield für den Catalog benutzt einige Filter Hook. Da könntest du auch noch gucken.)

    ps. wofür die Mühe? Scheint bereits entwickelt zu sein. Der Eintrag von do_while hat den Link, oder geht das Modul nicht?
    Geändert von Tim G (19.01.2012 um 13:22 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  7. #7
    Contao-Nutzer
    Registriert seit
    28.01.2011.
    Beiträge
    113

    Standard

    Hallo,

    ich kämpfe auch gerade mit dem gleichen Problem. Der Ansatz mit einem Formular finde ich sehr interessant:

    Zitat Zitat von lindesbs Beitrag anzeigen
    Ganz einfache Moeglichkeit mit dem Formulargenerator.

    Ein Formular generieren, mit Weiterleitungsseite auf die Uebersichtsliste deiner Objekte (Katalog Liste)

    In diesem Formular hast du ein Hidden Field, damit der Katalog weiss, das du von dort kommst.
    Dazu noch ein Feld fuer deinen Ort, und eine DropDownListe mit den Entfernungen.

    Danach ein MiniModul schreiben, und vom Catalog den Hook parseCatalog nutzen.
    Der wird aufgerufen, wenn die Liste mit den Objekten generiert wurde, mit uebergabe aller Objekte in einem Array.
    Nun brauchst Du nur noch mittels Input->post kontrollieren, ob du von dem Formular gekommen bist, wenn ja, hast du den Ursprungsort, Umkreis und kann die Liste durchgehen, und alle Objekte entfernen, die nicht innerhalb deines Kreises sind.
    Was ich leider nicht ganz verstehe ist, wie ich mit Input->post an die Daten kommen soll. Wie lautet der exakte Code? Ich dachte mit Hilfe von

    Code:
    $this->Input->post
    Komme ich an Parameter, die in der URL liegen. Die Formulardaten sind aber nicht in der URL. Wie also komme ich daran? Ich würde gerne das Formular auf die Seite der Liste selber legen. Nach dem Abschicken einer Suche möchte ich somit auf die Seite selber "weiterleiten", wodurch diese neu geladen wird. Die Formulardaten werte ich aus und manipuliere die Katalogliste entsprechend. Zudem sollen die Formularfelder wieder mit den Werten der Suche gefüllt werden, damit es eine Kontrolle für den Nutzer gibt. Ist das so überhaupt möglich und wenn ja, wie komme ich an die Formulardaten und wie bekomme ich diese wieder in das Formular zurück? Oder ist das gar nicht möglich?

  8. #8
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Erdpferd Beitrag anzeigen
    Komme ich an Parameter, die in der URL liegen
    Falsch... das sind ja GET-Parameter in der URL

  9. #9
    Contao-Nutzer
    Registriert seit
    28.01.2011.
    Beiträge
    113

    Standard

    Boing, du hast völlig recht. Mein Fehler.

    Dennoch erhalte ich scheinbar nichts, wenn ich das Formular verwende.

    Ich habe ein Formular mit zwei Feldern und einem versteckten Feld zu Identifizierung. Das liegt auf der gleichen Seite wie die Katalogliste. Schicke ich das Formular ab, wird die Seite selber aufgerufen. Mit Hilfe von

    PHP-Code:
    print_r($this->Input->post); 
    habe ich versucht die überlieferten Inhalte einzusehen. Leider nichts. Wenn ich an die werte des Formulars komme, dann wäre ich ein riesen Schritt weiter. Was mache ich falsch?

    Das Formular versendet weder eine Mail, noch speichert es die Daten in der Datenbank. Die Übetragungsmethode ist POST. Keine Formular-ID vergeben.

  10. #10
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    $this->Input->post 
    sollte sein:
    PHP-Code:
    $this->Input->post() 
    oder
    PHP-Code:
    $this->Input->post('mein_feld'

  11. #11
    Contao-Nutzer
    Registriert seit
    28.01.2011.
    Beiträge
    113

    Standard

    Super. Vielen Dank. Manchmal hab ich echt n Brett vorm Kopf. Das bringt mich auf jeden Fall einen riesen Schritt weiter.

    Ich habe jetzt auch mal gesucht und die Funktionen in der input.php gefunden. Ich hatte die Hoffnung dort auch eine Funktion zu finden, um die Werte wieder zu entfernen. Ist es die Funktion xssClean('FELD')? Oder muss ich mit

    PHP-Code:
    $this->Input->setPost'FELD''' ); 
    die Felder wieder auf leer setzen?

    Gibt es auch eine Möglichkeit die Werte aus post wieder als Value des Textfeldes zu übergeben? Ich würde sonst versuchen eine Globale Variable zu befüllen und via Inserttag den Wert ins Feld schreiben, was aber irgendwie unnötig kompliziert erscheint.

  12. #12
    Contao-Nutzer
    Registriert seit
    28.01.2011.
    Beiträge
    113

    Standard

    Erstes Problem gelöst.

    Ich habe ein weiteres Formular gebaut, dass nur einen Submitbutton enthält. Durch eine Abfrage wird die Entfernungssuche nicht ausgelöst, wenn sie nicht auch betätigt wird. Das Löschen überschreibt somit das

    Code:
    $this->Input->post('FORM_SUBMIT')
    Um auch alle Filter des Katalogs zu löschen wird der processFormData Hook genutzt, der mit Hilfe von $this->redirect auf die gefilterte Seite umleitet. Das funktioniert soweit sehr gut.

    Nachtrag:
    Jetzt hänge ich daran, dass ich die Formularfelder nicht aus dem Speicher bekomme.

    Ich möchte, dass bei einer Suche, die Felder die eingegebenen Werte enthalten. Das erreiche ich durch:

    Code:
    {{form::FELD}}
    als Standardwert. Ich hatte gehofft, durch das löschen auch diese Eingabe leer zu setzen. Sprich, durch

    Code:
    $this->Input->setPost('FELD');
    oder
    $this->Input->setPost('FELD', '');
    den Wert aus dem Speicher zu löschen, so dass auch kein Standardwert angezeigt wird. Leider bleiben die Werte trotz des setPost im Speicher. Was mache ich falsch? Kann mir jemand helfen?
    Geändert von Erdpferd (30.04.2012 um 17:14 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •