Contao-Camp 2024
Ergebnis 1 bis 6 von 6

Thema: Einfaches HTML-Modul zur Integration einer externen Suchmaschine

  1. #1
    Contao-Nutzer Avatar von rennXF
    Registriert seit
    05.08.2013.
    Beiträge
    114

    Standard Einfaches HTML-Modul zur Integration einer externen Suchmaschine

    Hallo zusammen,

    ich denke, die Frage passt doch am besten hier her. Ich hatte das Thema schonmal hier angeschnitten, aber vermutlich ist es eher eine Frage an Entwickler.
    Wir würden gerne eine externe Suchmaschine in unser Contao-System einbetten, die in der Lage ist PDF-Dokumente zu indizieren. Diese ist Sphider-Plus. Wir konnten Sie schon erfolgreich auf unserem Shared-Webhosting installieren.

    Um das entsprechende Suchfeld auf allen gewünschten Seiten zugänglich zu machen haben wir ein HTML-Modul mit einem Suchformular für diese Suchmaschine erstellt. Die Ergebnisseite wird erstmal als neues Fenster dargestellt. Später wäre es denkbar den Suchindex von Contao mit dem Index von Sphider-Plus zu befüllen. Aber das soll noch kein Thema sein. Damit werden wir uns an einen Mysql-Spezialisten wenden.
    Sphider-Plus bringt eine Auto-Suggest-Funktion (Suchvorschläge) mit, die wir auch gerne einbauen würden. Zu diesem Zweck habe ich die Autosuggest-Funktion wie in Sphider-Plus vorgegeben in den <head> via zusätzliche Head-Tags bei dem entsprechenden Seitenlayout eingebettet. Leider funktioniert das nicht.
    Die Suchvorschläge werden nicht eingeblendet. Kann das an dem externen PHP-Skript "suggest.php" liegen?

    Der Quellcode des HTML-Moduls sieht nun so aus:
    HTML-Code:
    <form action="http://search.domain.com/search.php" method="get" id="search_form">
    	<div>
    		<label class="invisible" for="ctrl_keywords_33">Suchbegriffe</label>
    		<input type="text" value="" size="35" placeholder="Suchbegriff" id="query_t" name="query_t" class="ui-autocomplete-input" autocomplete="off" />
    		<input type="submit" value="Suche" id="t_search" class="sbmt submit" name="smt_button">
    		<input type="hidden" name="search" value="1" />
    	</div>
    	<input type="hidden" value="" name="up_advanced">
    	<input type="hidden" value="0" name="category">
    	<input type="hidden" value="0" name="catid">
    	<input type="hidden" value="" name="cat_sel0">
    	<input type="hidden" value="" name="cat_sel1">
    	<input type="hidden" value="" name="cat_sel2">
    	<input type="hidden" value="" name="cat_sel3">
    	<input type="hidden" value="" name="cat_sel4">
    </form>
    Javascripts für den Head des zuständigen Seiten-Layouts (eventuell haben wir nun manche Jquery-Bestandteile doppelt geladen):
    HTML-Code:
    <link rel="stylesheet" href="http://search.domain.com/templates/Sphider-plus/jquery-ui-1.10.2.custom.css" type="text/css">
    <script type="text/javascript" src="http://search.domain.com/include/jQuery/jquery-2.1.4.js"></script>
    <script type="text/javascript" src="http://search.domain.com/include/jQuery/jquery-ui-1.11.4.js"></script>
    <script>
        $(function() {
            $("#query_t").autocomplete({
                source: "http://search.domain.com/include/suggest.php?media_only=0&amp;amp;amp;type=and&amp;amp;amp;catid=0&amp;amp;amp;category=0&amp;amp;amp;db=0&amp;amp;amp;prefix=0",
                minLength: 1,
                select: function(event, ui) {
                    var item = ui.item;
                    console.log(item,ui)
                    if(item) {
                        $(this).val(item.value);
                        $(this.form).submit();
                    }
                }
            })
        })
      </script>
    <script>
        $(function() {
            $("#query_m").autocomplete({
                source: "http://search.domain.com/include/suggest.php?media_only=1&amp;amp;amp;type=and&amp;amp;amp;catid=0&amp;amp;amp;category=0&amp;amp;amp;db=0&amp;amp;amp;prefix=0",
                minLength: 1,
                select: function(event, ui) {
                    var item = ui.item;
                    console.log(item,ui)
                    if(item) {
                        $(this).val(item.value);
                        $(this.form).submit();
                    }
                }
            })
        })
      </script>
    Ich nehme an, da fehlt nicht mehr viel. Hoffe ich zumindest. Hat jemand einen Tipp?

  2. #2
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Kann man sich das irgendwo anschauen?

    Fehlermeldungen in der Konsole?
    Welches jQuery ist von Contao eingebunden?
    Oder eventuell Mootools und der Kompatibilitätsmodus ist nicht angeworfen?

    Ist halt alles etwas blind rumraten...

  3. #3
    Contao-Nutzer Avatar von rennXF
    Registriert seit
    05.08.2013.
    Beiträge
    114

    Standard

    Ahoi,
    danke für die schnelle Rückmeldung!

    • Ich könnte dir die URL per PM senden. Ok?
    • Du meinst vermutlich die Konsole aus den jeweiligen Entwicklerwerkzeugen? Die gibt keine Fehlermeldungen dazu aus. Allerdings stelle ich gerade fest, dass welche ausgegeben werden sobald ien hover in der Navigation stattfindet. (Firebug)
    • jQuery:
      • Contao:
        • assets/jquery/mediaelement/2.14.2/js/mediaelement-and-player.min.js
        • assets/jquery/ui/1.10.4/jquery-ui.min.js
        • assets/mootools/mediabox/1.4.6/js/mediabox.js
      • Manuell im <head>:
        • jquery-2.1.4.js
        • jquery-ui-1.11.4.js
        • Plus eine CSS-Datei die dazugehört
    • Was meinst du mit Kompatibilitätsmodus? Wo kann ich den einschalten?

  4. #4
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Dann schick die URL mal rüber.

  5. #5
    Contao-Nutzer Avatar von rennXF
    Registriert seit
    05.08.2013.
    Beiträge
    114

    Standard Der Tipp von Flex

    Hej,

    beim Eintippen in die Suche kommt:
    Code:

    HTML-Code:
    No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://domain.com' is therefore not allowed access.
    Mehr Infos dazu:
    http://enable-cors.org/server_apache.html

    Da liegt das Problem - die JS Ressourcen dürfen nicht auf andere Domains zugreifen.
    Ok, das hört sich ja schonmal super an. Wir haben nur ein Shared-Hosting. Also habe ich einmal folgende Zeilen in unsere htaccess geschrieben
    HTML-Code:
    ## 
    # Javascript aus externen Domains oder Subdomains erlauben
    ##
    Header set Access-Control-Allow-Origin "*"
    apachectl -t
    apachectl -k graceful
    Das hat leider zu einem internen Server Error geführt.
    Internal Server Error
    The server encountered an internal error or misconfiguration and was unable to complete your request.
    Please contact the server administrator at [no address given] to inform them of the time this error occurred, and the actions you performed just before this error.
    More information about this error may be available in the server error log.
    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
    Die Zeile "Header set Access-Control-Allow-Origin "*"" alleine in der htaccess führt zu keiner Fehlermeldung. Allerdings funktioniert die Autosuggest-Funktion so auch nicht auf der Testseite (www.domain.com/de/test/).

    Habe ich alles richtig gemacht oder kann es sein, dass unser Hosting die Einstellung nicht zulässt?
    Die andere Lösung wäre vermutlich die gleichen Javascripts im Verzeichnis der Hauptdomain zu haben. Wegen Software-Updates würde ich aber die Trennung bevorzugen.

  6. #6
    Contao-Nutzer Avatar von rennXF
    Registriert seit
    05.08.2013.
    Beiträge
    114

    Standard

    Ok, Flex gab nun den letzten Tipp zum Problem:
    Die Enable-Cors Geschichte muss in die htaccess von beiden Domains (Haupt- und Subdomain).

    Also nur diese Zeile
    HTML-Code:
    Header set Access-Control-Allow-Origin "*"
    Nun funktioniert auch die Auto-Suggest-Funktion auf der Hauptdomain.

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
  •