Ankündigung

Einklappen
Keine Ankündigung bisher.

CC Geodaten Filter Standard-Land (Umkreissuche nur mit Postleitzahl)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • CC Geodaten Filter Standard-Land (Umkreissuche nur mit Postleitzahl)

    Möchte man die Umkreissuche z.B. nur mit Postleitzahlen nutzen, steht man vor dem Problem, dass das dt. Postleitzahlensystem identisch mit dem US amerikanischen ist. Google bevorzugt in diesem Fall US Daten.
    Man benötigt daher den Zusatz "Deutschland" für die Abfrage.

    Hier zeige ich einen Weg, wie man "Deutschland" an den aktuellen GET Parameter (intern) ergänzt, bevor der Filter ausgeführt wird.

    Dies tut man am besten über den "processFilter" Hook in CC. Dieser wird VOR dem Ausführen des Filters getriggert und ermöglicht die komplette Manipulation des Filters.

    (Individualisierungen am besten in Form einer eigenen kleinen Contao Erweiterung)

    config.php
    PHP-Code:
    $GLOBALS['CUSTOMCATALOG_HOOKS']['processFilter'][] = array('MyCustomCatalogCallbacks','myProcessFilterCallback'); 
    MyCustomCatalogCallbacks class

    PHP-Code:
        public function myProcessFilterCallback($objFilter$objCC)
        {
            
    $strGeo = \Input::get($objFilter->getName().'_address');
        
            
    // append Deutschland and set new GET filter parameter
            
    if($objFilter->type == 'geolocation' && $strGeo != '' && strlen(strpos(strtolower($strGeo), 'deutschland')) < 1)
            {
                
    $strGeo .= ' Deutschland';
                
                \
    Input::setGet($objFilter->getName().'_address',$strGeo);
            }

    return 
    $objFilter;    



    Anbei eine kleine Erw. mit diesem Script.

    ---
    Einfache Methode mit initconfig.php (system/config/initconfig.php (ggf. erstellen))

    Beschreibung: Prüft ob das Wort "deutschland" in dem GET-Parameter des Filters (Kleinbuchstaben) enthalten ist und ob dieser generell gesetzt / aktiv ist.
    Wenn nicht: Wird der GET-Parameterwert um das Wort " Deutschland" ergänzt.

    initconfig.php
    Code:
    $strGeo = \Input::get('MY-FILTER_address'); // the GET parameter of the geo-filter _address
    if( !strpos(strtolower($strGeo),'deutschland') && strlen($strGeo) > 0 )
    {
    \Input::setGet('MY-FILTER_address', $strGeo + " Deutschland" );
    }
    ps. Diese Methode funktioniert auch für das Vorbelegen von Filtern etc.
    Angehängte Dateien
    Zuletzt geändert von Tim; 24.01.2020, 09:29.
    http://www.premium-contao-themes.com

  • #2
    ich würde das gerne wie von dir beschrieben umsetzen, allerdings benötige ich dazu eine genauere Beschreibung zu Vorgehensweise.
    Sehe ich es richtig, dass man hierzu unter Contao Extension-Creator ein neues Modul erstellen muss? Wo genau muss ich die PHP-Codes integrieren? Ich habe bisher noch keine Contao Erweiterung erstellt. Vielen Dank.

    Kommentar


    • #3
      Zitat von Tobias P Beitrag anzeigen
      ich würde das gerne wie von dir beschrieben umsetzen, allerdings benötige ich dazu eine genauere Beschreibung zu Vorgehensweise.
      Sehe ich es richtig, dass man hierzu unter Contao Extension-Creator ein neues Modul erstellen muss? Wo genau muss ich die PHP-Codes integrieren? Ich habe bisher noch keine Contao Erweiterung erstellt. Vielen Dank.
      Ja, du kannst dafür den Extension-Creator nutzen. Der Code kommt in die php-Datei, die die php Klasse "MyCustomCatalogCallbacks" enthält. Zur Erstellung von kleineren Contao Erweiterungen bietet das Contao Forum viele Beispiele.
      Zuletzt geändert von Tim; 27.07.2017, 08:18.
      http://www.premium-contao-themes.com

      Kommentar


      • #4
        Bin jetzt schon 10 Tage nur beim Import und bei der Umkreissuche bei. Wie kann ich diesen Code einbinden? Kann ich dann per PLZ und per Ort suchen?

        Kommentar


        • #5
          Zitat von jensen Beitrag anzeigen
          Bin jetzt schon 10 Tage nur beim Import und bei der Umkreissuche bei. Wie kann ich diesen Code einbinden? Kann ich dann per PLZ und per Ort suchen?
          Da Google das US amerikanische Postleitzahlen-System den dt. vorzieht, sollte man "heimlich" Deutschland mitgeben, wenn ausschließlich in Dt. gesucht werden soll. Dies bremst natürlich sämtliche suchen ausserhalb des dt. Raums aus. Dies hier ist ein Lösungsweg. Man kann auch im Template des Filters strikt " Deutschland" in das Feld schreiben.
          http://www.premium-contao-themes.com

          Kommentar


          • #6
            Wäre das eine einfache Lösung? Wo genau und in welches Template muss das Wort "Deutschland" eingefügt werden?

            Kommentar


            • #7
              Zitat von jensen Beitrag anzeigen
              Wäre das eine einfache Lösung? Wo genau und in welches Template muss das Wort "Deutschland" eingefügt werden?
              Das Standard-Template hier ist: customcatalog_filter_geosearch (siehe Einstellungen des Filters). Das Wort Deutschland kann in den Input Feldern ergänzt werden.
              http://www.premium-contao-themes.com

              Kommentar


              • #8
                Ok, das habe ich gemacht... Jetzt steht dort "Deutschland". Wenn ich nun meine PLZ oder Ort eingebe und auf Filter anwenden klicke erscheint das richtige Ergebnis. Anschließend steht aber zweimal Deutschland im Feld. Ändere ich nun die Filtereinstellungen (Umkreis vergrößern, o. Ä.) wird es noch mehr Deutschland. Kann man das "Deutschland" nicht versteckt mitgeben?

                Kommentar


                • #9
                  Zitat von jensen Beitrag anzeigen
                  Ok, das habe ich gemacht... Jetzt steht dort "Deutschland". Wenn ich nun meine PLZ oder Ort eingebe und auf Filter anwenden klicke erscheint das richtige Ergebnis. Anschließend steht aber zweimal Deutschland im Feld. Ändere ich nun die Filtereinstellungen (Umkreis vergrößern, o. Ä.) wird es noch mehr Deutschland. Kann man das "Deutschland" nicht versteckt mitgeben?
                  Ja, so ist das in html Formularen. Daher bieten wir oben eine saubere php Lösung an, wo es quasi versteckt übergeben wird, wenn es vom User nicht gesetzt wurde. Andere Wegen wären individuelles Javascript.
                  Zuletzt geändert von Tim; 29.12.2017, 10:43.
                  http://www.premium-contao-themes.com

                  Kommentar


                  • #10
                    Habe die Dateien "config/config.php" und "MyCustomCatalogCallbacksClass.php" in den Ordner Systeme/modules/MyCustomCatalogCallbacks/ gepackt. Anschließend den Cache "prod" gelöscht und das Install-Tool aufgerufen. Es erscheinen die beiden Fehler:

                    Warning: in_array() expects parameter 2 to be array, null given in /home/website_XXXXX.de/vendor/contao/core-bundle/src/Resources/contao/library/Contao/System.php on line 211

                    Fatal error: Class 'MyCustomCatalogCallbacks' not found in /home/website_XXXXX.de/vendor/contao/core-bundle/src/Resources/contao/library/Contao/System.php on line 217

                    Was mache ich falsch?

                    Kommentar


                    • #11
                      Das reicht nicht. Es muss eine autoload.php Dateien für die Klassen erstellt werden. Das kann manuell oder über den extension creator von Contao geschehen. Man kann sich dies in jeder Contao Erweiterung oder in Handbüchern abschauen.
                      http://www.premium-contao-themes.com

                      Kommentar


                      • #12
                        Super, danke für die ZIP. Das Einbinden hat ohne Probleme funktioniert. Kann man denn irgendwo erkennen, dass "Deutschland" mitgegeben wird? Denn nicht immer wird das richtige Ergebnis angezeigt. Es kommt vor, dass bei Klick auf "Filter anwenden" trotz eines Eintrages im Umkreis alles angezeigt wird, klick man dann öfter auf den unveränderten Filter, erscheint dann das richtige Ergebnis. Kann das mit der Erreichbarkeit bei Google zusammenhängen?

                        Kommentar


                        • #13
                          Die Erreichbarkeit von Google ist natürlich ein Faktor. Filter anwenden lässt die Seite neu laden. Das taucht so nicht erkennbar auf, darum geht es ja
                          Sonst wäre eine direkte Eingabe im Template ausreichend.

                          Anbei ein Screenshot, wie das Konstrukt wirkt.

                          "Deutschland" wird quasi still ergänzt, wenn es noch nicht übergeben wurde in der Url. Damit hat die Google Abfrage die nötige Informationen, dass wir uns nicht in den USA befinden.
                          Angehängte Dateien
                          Zuletzt geändert von Tim; 29.12.2017, 15:47.
                          http://www.premium-contao-themes.com

                          Kommentar


                          • #14
                            Screenshot ist 0 KB? ;-)

                            Kommentar


                            • #15
                              Hi!

                              Ich habe nun die Erweiterung mycustomcatalogcallbacks mit den obigen Inhalten in system/modules abgelegt.

                              Die Suche funktioniert jedoch immer noch nicht richtig. Ich beobachte nun folgendes: wenn ich nur nach einer PLZ suche, werden weiterhin (trotz der Erweiterung) alle Datensätze angezeigt. Suche ich nach PLZ + Deutschland (manuell eingetragen), werden ebenfalls alle Datensätze angezeigt. Suche ich nach PLZ + Deutschland und stelle den Umkreis auf z.B. 10km, dann werden die richtigen Ergebnisse angezeigt.

                              Kommentar

                              Lädt...
                              X