Ergebnis 1 bis 12 von 12

Thema: Suche: Ergebnisse per #Anker anspringen?

  1. #1
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    771
    User beschenken
    Wunschliste

    Standard Suche: Ergebnisse per #Anker anspringen?

    Hallo zusammen,

    sorry erstmal für die Überschrift, mir fiel gerade nix gescheites ein, dass folgendes Problem prägnant beschreiben würde ;-)

    Ich habe auf einer (recht langen) Seite relativ in der Mitte ein Suchfeld (Modul Suchmaschine). Die Ergebnisse sollen nach erfolgter Suche direkt darunter ausgegeben werden, es gibt also keine Weiterleitungsseite.
    Soweit funktioniert das auch, allerdings lädt die Seite nach drücken des Such-Buttons ja neu und so befindet man sich am Seitenanfang und muss zu den Suchergebnissen herunter scrollen, was nicht besonders dolle ist ;-)
    Jemand eine Idee, wie ich direkt die Ergebnisse anspringen könnte, also wie mit einem HTML-Anker?

    Danke schonmal,
    Stefko

  2. #2
    Contao-Fan
    Registriert seit
    26.05.2013.
    Ort
    Berlin
    Beiträge
    381

    Standard

    ich weiß nicht ob es Dir weiterhilft, aber sowas ähnliches habe ich mit Textelementen bei feststehenden überdeckenden Header (fixed header)
    deshalb suche mal bei google nach "offset anchor" oder "anker offset"; das sind css-Lösungen;
    ich habe dem Inhaltselement eine CSS-ID gegeben und man landet dann nicht oben am Seitenanfang sondern pixelgenau wo man will auf der Seite

  3. #3
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du könntest mit JS dorthin scrollen. Wenn du den Suchbutton gedrückt hast, hast du ja wahrscheinlich bestimmte Merkmale auf der Seite, welche du ohne Klick auf den Suchbutton nicht hast. Z.B. ?keywords= in der URL, oder Inhalte in dem Suchergebnissbereich.

    Als Ansatz (MooTools)
    PHP-Code:
    if($$('div.mod_search > p.header')) 
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  4. #4
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    771
    User beschenken
    Wunschliste

    Standard

    @VGT: Danke für den Tipp. Ich habe das mal ausprobiert, aber leider hilft das in meinem Fall nicht wirklich weiter, da a) die Seite responsive ist (der Abstand "nach oben" also abhängig vom Ausgabegerät) und b) die Inhalte im Bereich vor meiner Suche recht dynamisch sind und sich häufig ändern - und damit auch die Summe der Höhen bis zur Suche.
    Aber ich habe mir mal ne Notiz gemacht, wenn ich das nächste mal das Problem mit den überdeckenden Header habe ;-)

    @Andreas: an JavaScript hatte ich auch schon gedacht und ja nach der Suche ist natürlich ein ?keywords=Suchwort in der URL. Bin mir aber nicht sicher, wie ich das bewerkstelligen kann, bzw. was Dein Codeschnippsel damit zu tun hat?

    Grüße,
    Stefko

  5. #5
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    771
    User beschenken
    Wunschliste

    Standard Problem gelöst

    Problem gelöst

    Oberhalb des Suchfeldes habe ich ein Inhaltselement "Überschrift". Dieser habe ich id="ergebnisse" verpasst.
    Dann habe ich das template mod_search_simple.html5 angepasst und zwar dem Button folgendes hinzugefügt:
    Code:
    onclick="window.location.hash = 'ergebnisse';"
    und so funktioniert das nun wie gewünscht.

    Grüße
    Stefko

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Stefko Beitrag anzeigen
    @Andreas: an JavaScript hatte ich auch schon gedacht und ja nach der Suche ist natürlich ein ?keywords=Suchwort in der URL. Bin mir aber nicht sicher, wie ich das bewerkstelligen kann, bzw. was Dein Codeschnippsel damit zu tun hat?
    Wenn du die Suche ausführst, besitzt das Element div.mod_search ein P-Element mit der Klasse ".header", welches ohne Suchanfrage nicht existiert. D.h. es war so gedacht, dass wenn du auf die Seite kommst, dass JS nach diesem Element sucht und (nur) wenn es dieses findet dorthin scrollt. Das müsste auch ohne Templateänderungen gehen, solchen Inline-JS-Code macht man auch eigentlich nicht mehr. Du kannst den Elementen aus deinen Scripts heraus Eventhandler zuweisen.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Fan Avatar von Jens Pielawa
    Registriert seit
    08.01.2010.
    Ort
    9°45'34"E 52°20'12"N
    Beiträge
    531

    Standard

    Zitat Zitat von Stefko Beitrag anzeigen
    Oberhalb des Suchfeldes habe ich ein Inhaltselement "Überschrift". Dieser habe ich id="ergebnisse" verpasst.
    Dann habe ich das template mod_search_simple.html5 angepasst und zwar dem Button folgendes hinzugefügt:
    Code:
    onclick="window.location.hash = 'ergebnisse';"
    und so funktioniert das nun wie gewünscht.
    Hallo Stefko,
    ich habe dasselbe Problem, aber die von Dir offenbar gefundene Lösung funktioniert bei mir leider nicht.
    http://www.neu.bd-beratung.de/impressum.htm
    Auf dieser Baustelle habe ich auch ein Suchfeld inmitten der Seite. Beim Klick auf den Button mit einem Suchbegriff scheint es so, dass kurzzeitig der Fokus dahingesetzt wird, jedoch die Ergebnisse danach hinzugefügt werden und man wieder oben auf der Seite steht und zum Scrollen verdammt ist.
    Wie sieht denn das bei Deiner Seite aus?
    Beste Grüße von

  8. #8
    Contao-Nutzer
    Registriert seit
    22.06.2017.
    Beiträge
    186

    Standard

    Du springst zur Sprungstelle, wenn Du auf den Btn drückst. Aber danach wird erst die Suche durchgeführt; d.h. die Seite wird mit den Suchergebnisse geladen.
    Somit solltes Du das JS z.B. bei "onload" anpassen, dass wenn es den Suchquery gibt, er dann zur Sprungstelle springen soll.

  9. #9
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    771
    User beschenken
    Wunschliste

    Standard

    Hi Jens,

    ich habe eben mal nachgeschaut und ich hatte die erste Zeile der [mod_search_simple.html5] folgendermaßen abgeändert:
    Code:
    <form onsubmit="window.location.hash = 'ergebnisse';"<?php if ($this->action): ?> action="<?php echo $this->action; ?>"<?php endif; ?> method="get">
    Also nicht wie ich oben schrieb onClick beim Button, sondern onSubmit für das komplette Formular.

    Versuche es mal damit.

    Grüße,
    Stefko
    Geändert von Stefko (26.07.2017 um 09:45 Uhr)

  10. #10
    Contao-Fan Avatar von Jens Pielawa
    Registriert seit
    08.01.2010.
    Ort
    9°45'34"E 52°20'12"N
    Beiträge
    531

    Standard

    Zitat Zitat von Stefko Beitrag anzeigen
    ich hatte die erste Zeile der [mod_search_simple.html5] folgendermaßen abgeändert
    Hallo Stefko,

    das habe ich ausprobiert (aktuell aktiv), aber das Verhalten hat sich dadurch nicht geändert. Beim Button-Klick kriegt er kurzzeitig das Sprungziel-Fokus, geht dann aber wieder auf den Anfang der Seite.
    Beste Grüße von

  11. #11
    Contao-Nutzer
    Registriert seit
    22.06.2017.
    Beiträge
    186

    Standard

    Probiere er folgendes (jQuery-Variante):
    HTML-Code:
    <script>
    $(document).ready(function() {
    	if($('div.mod_search > p.header').length) {
    		window.location.hash = 'ergebnisse'
    	} 
    });
    </script>
    Das kannst Du zu Deiner [mod_search_simple.html5] packen.
    Wie Andreas schon sagte, ist das jedoch unschön; deshalb würde ich vorschlagen, es im Seitenlayout unter "Eigener JavaScript-Code" zu setzen.

    Zur Erklärung des Skripts:
    Wenn die Seite geladen ist, prüfe ob es das Element 'div.mod_search > p.header' gibt (in jQuery kann man dies über die Länge prüfen). Falls es das Element gibt, füge der URL den Hash 'ergebnisse' hinzu. Das Resultat ist, dass falls es ein Element auf der Seite gibt, dessen Id entsprechend 'ergebnisse' ist - springe dorthin.

  12. #12
    Contao-Fan Avatar von Jens Pielawa
    Registriert seit
    08.01.2010.
    Ort
    9°45'34"E 52°20'12"N
    Beiträge
    531

    Standard

    Zitat Zitat von ihkwdiopk Beitrag anzeigen
    Probiere er folgendes (jQuery-Variante):
    Wenn die Seite geladen ist, prüfe ob es das Element 'div.mod_search > p.header' gibt (in jQuery kann man dies über die Länge prüfen). Falls es das Element gibt, füge der URL den Hash 'ergebnisse' hinzu. Das Resultat ist, dass falls es ein Element auf der Seite gibt, dessen Id entsprechend 'ergebnisse' ist - springe dorthin.
    Und genau das hat jetzt den gewünschten Effekt gebracht. Vielen Dank für dieses kleine Schräubchen.
    Beste Grüße von

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
  •