Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Ajax Suggest für die Suche

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    Ajax Suggest für die Suche
    Antwort #75 am: 12. September 2009, 23:01:43
    Der Gedanke kam mir dann etwas später (zu spät) auch.
    Zog sich dann doch etwas länger als zuerst gedacht bis zur Lösung.

    Dachte mir dann, ach was solls, kommt wenigstens das Modul wieder etwas ans Tageslicht - gab es da nicht noch bei manchen ungelöste Probleme ;) Bei mir und ein paar anderen liefs ja komischerweise immer.
    Kannst es aber schon aus dem Thread rausziehen, nach Template oder so, wenn das geht.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.373
    • Geschlecht:
    Ajax Suggest für die Suche
    Antwort #76 am: 12. September 2009, 23:05:27
    Kann leider keine einzelnen Beiträge mehr "splitten", da warte ich noch auf ein neues Foren-Update. ;-)

    guensi

    • Viel Schreiber
    • Beiträge: 2.288
    Ajax Suggest für die Suche
    Antwort #77 am: 14. September 2009, 20:54:41


    Zitat
    hihi, Torsten - musste grad schmunzeln, ist bei mir auch so.
    Nach einigem hin und her klappt´s dann meist irgendwie.
    Konnte mein Problem jetzt lösen.
    Float: right habe ich aber gelassen, da die Boxen ansonsten die Position tauschen.
    ...

    Tja, und damit wärst du fast schon am Ziel gewesen. Nun nur noch den Aufruf der Boxen tauschen, die erste floatet ganz nach rechts, die danachfolgende floatet "nach rechts, links neben das vorher aufgerufene", weil das float dann von rechts her aufbaut. Schon hätte es gepasst. ;-)

    Das liegt an der Vererbung von float. Danach wäre z.B. ein leeres div-Tag mit der Anweisung clear:right oder besser noch clear:both übrigens nicht unwichtig, damit du das float auch wieder aufhebst.

    Merke - wer floatet muss auch clearen.

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    Ajax Suggest für die Suche
    Antwort #78 am: 14. September 2009, 21:55:12
    jo, weiß schon @tauschen in der index.html.
    Habs aber gerne logisch, was links steht soll auch links erscheinen ;)
    Als eigentliches Problem am Schluss stellte sich ja die zu breite breadcrumb raus.

    Das mit dem floaten & clearen kenne ich, nur der Zweck ist mir ned ganz klar.

    Code: PHP  [Auswählen]
    <div style="clear:both"></div>

    guensi

    • Viel Schreiber
    • Beiträge: 2.288
    Ajax Suggest für die Suche
    Antwort #79 am: 14. September 2009, 22:03:51


    Zitat
    jo, weiß schon @tauschen in der index.html.
    Habs aber gerne logisch, was links steht soll auch links erscheinen ;)
    Als eigentliches Problem am Schluss stellte sich ja die zu breite breadcrumb raus.

    Das mit dem floaten & clearen kenne ich, nur der Zweck ist mir ned ganz klar.

    Code: PHP  [Auswählen]
    <div style="clear:both"></div>
    Na ja logisch ist das schon, nur das ist halt ne besondere Art von Logik die da von dir gefordert wird, wenn du Positioning und Float einsetzt. Da ändern sich Richtungen und die Reihenfolge in der Elemente eingesetzt werden.

    Zum Thema clearen - immer wenn du ein float einsetzt vererbt sich das auf die nachfolgenden Elemente innerhalb des Elementes in dem du float einsetzt.

    Wenn du also z.B. innerhalb eines divs float verwendest, solltest du vor dem schliessen dieses divs auch ein Element clear einfügen, um zu vermeiden dass float unkontrolliert weiter vererbt wird. Denn das wird je nach Browser oder Betriebssystem des Users dann unterschiedlich gehandhabt. Auf der sicheren Seite bist du nur, wenn du nach deinen notwendigen float-anweisungen eine clear-anweisung einfügst. Dann fängt das nächste Element wieder bei 0 an. Bewährt hat sich dabei das von dir genannte

    Code: XML  [Auswählen]
    <div style="clear:both></div>
    Damit beendest du alle vorher genannten float-anweisungen.

    Das gilt eigentlich für alle Elemente innerhalb denen du das float einsetzt. Wobei der leere div-tag mit clear:both sozusagen ne ultimative Waffe ist. Der beendet dann jedes float, ohne negative Einflüsse auf dein Layout zu haben.

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Ajax Suggest für die Suche
    Antwort #80 am: 02. Oktober 2009, 15:00:03
    Hi Leute,
    die AJAX-Suggest Suche steht jetzt im Trunk-Demoshop zur Verfügung. Ich würde euch bitten, mal einen Blick darauf zu werfen, ob man sie so lassen kann (und damit in der "Standardausführung" funktioniert).

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.373
    • Geschlecht:
    Ajax Suggest für die Suche
    Antwort #81 am: 02. Oktober 2009, 15:05:17
    Bitte auch mal die Sprache umstellen und alles ausführlich testen!

    andrusch

    • Schreiberling
    • Beiträge: 263
    Ajax Suggest für die Suche
    Antwort #82 am: 02. Oktober 2009, 16:25:59
    Hi, also irgendwie finde ich das nicht so Praktisch. Wenn ich z.B. im Trunk-Demoshop im Suchfeld das Wort test eingebe erscheint ja ein Auswahlfenster mit allen Produkten die mit test anfangen. Klicke ich dann z.B. auf Testartikel4 erscheint dieser nicht, sondern der Testartikel1. Oder habe ich ein Denkfehler?  8) Wenn ich auf einen ausgewählten Artikel klicke sollte dieser doch aufgerufen werden!

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    Ajax Suggest für die Suche
    Antwort #83 am: 02. Oktober 2009, 17:48:20
    Was mich seit ein paar Wochen wundert ist...
    Man tippt einen Namen ein und wählt dann einen Artikeln aus.
    Man landet dann nicht direkt im Artikel, sondern die advanced_search_result.php zeigt in der Produktübersicht den Artikel an. Dort muss man ihn dann noch einmal anklicken, bevor man in den Produktdetails ist.

    Ich dachte das wäre mal anders gewesen, kann mich aber auch täuschen.

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.373
    • Geschlecht:
    Ajax Suggest für die Suche
    Antwort #84 am: 02. Oktober 2009, 19:42:19
    Ja, finde die Lösung auch nicht sehr glücklich... wusste doch, warum ich das noch nicht im Shop haben wollte. ;-)

    Ich habe Ajax-Suggest in r362 nochmal aus dem Trunk entfernt... das muss einfach besser laufen, bevor wir es einfügen können. Wie speedy schon sagt, es gibt eigentlich kein Grund, wieso aus der Liste nochmal die advanced_search_result.php aufgerufen werden sollte. Das ist einfach Unsinn!

    P.S.: Bitte keine neuen Baustellen aufmachen vor dem Release von modified eCommerce Shopsoftware 1.03. ;-)

    Grüße

    Torsten

    speedy

    • Viel Schreiber
    • Beiträge: 3.214
    Ajax Suggest für die Suche
    Antwort #85 am: 02. Oktober 2009, 20:58:05
    evtl. kann man da pufaxx akquirieren, der ist doch relativ vertraut mit SearchSuggest, nur wo is pufaxx  :(
    So weit kanns da ja auch nicht fehlen bei dem Modul, noch etwas Feintuning.

    Tobischka

    • Fördermitglied
    • Beiträge: 7
    Ajax Suggest für die Suche
    Antwort #86 am: 16. Oktober 2009, 13:30:56
    Hallo.
    Bei mir funktioniert die Searchsuggest soweit. Er schlägt das Ganze vor, aber wenn ich dann auf einen Vorschlag klicke, komme ich immer auf http://localhost/xtcommerce/advanced_search_result.php?keywords= und es werden eben alle Artikel angezeigt. Das ist irgendwie doof.
    Und das ist bei allen Artikeln so.

    Ich hab bei der AjaxSuggest.js (von Gunnart so die Tipps übernommen) nur unten den top.location.href geändert.
    Kann mir jemand sagen, an was es liegen könnte, dass beim Anklicken kein Produktname übernommen wird?

    Code: Javascript  [Auswählen]
    /*----------------------------Suggest Code-------------------------*/
    /*
            This is the JavaScript file for the osCommerce AJAX Search Suggest

            You may use this code in your own projects as long as this
            copyright is left       in place.  All code is provided AS-IS.
            This code is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

            For the rest of this code visit http://www.osCommerce-SSL.com

            For a complete detailed tutorial on how this code works visit:
            http://www.dynamicajax.com/fr/AJAX_Suggest_Tutorial-271_290_312.html

            For more AJAX code and tutorials visit http://www.DynamicAJAX.com

            Copyright 2006 Ryan Smith / 345 Technical / 345 Group. 

            Auf XT-Commerce portiert von TechWay (Steffen Decker) mit Unterstützung von Purecut (aus dem (( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! )) Forum)
            Copyright 2006 @ TechWay, Steffen Decker
    */

    //Gets the browser specific XmlHttpRequest Object
    function getXmlHttpRequestObject() {
            if (window.XMLHttpRequest) {
                    return new XMLHttpRequest();
            } else if(window.ActiveXObject) {
                    return new ActiveXObject("Microsoft.XMLHTTP");
            } else {
                    alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
            }
    }

    //Our XmlHttpRequest object to get the auto suggest
    var searchReq = getXmlHttpRequestObject();

    //Called from keyup on the search textbox.
    //Starts the AJAX request.
    function searchSuggest() {
            if (searchReq.readyState == 4 || searchReq.readyState == 0) {
                    var str = escape(document.getElementById('txtSearch').value);
                    searchReq.open("GET", 'searchSuggest.php?search=' + str, true);
                    searchReq.onreadystatechange = handleSearchSuggest;
                    searchReq.send(null);
            }
    }

    //Called when the AJAX response is returned.
    function handleSearchSuggest() {
            if (searchReq.readyState == 4) {
                    var ss = document.getElementById('search_suggest')
                    ss.innerHTML = '';
                    var str = searchReq.responseText.split("\n");
                    for(i=0; i <str.length - 1; i++) {
                            //Build our element string.  This is cleaner using the DOM, but
                            //IE doesn't support dynamically added attributes.
                            var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
                            suggest += 'onmouseout="javascript:suggestOut(this);" ';
                            suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
                            suggest += 'class="suggest_link">' + str[i] + '</div>';
                            ss.innerHTML += suggest;
                    }
                    if (i==0) {
                            ss.style.visibility  = "hidden";
                    } else {
                            ss.style.visibility  = "visible";
                    }
                    //Schließen link einfügen
                    ss.innerHTML += '<p align="right"><a onmouseover="javascript:suggestOver(this);" onmouseout="javascript:suggestOut(this);" onClick="javascript:suggestClose(this);" class="suggest_link"><b>Fenster schließen</b></a></p>';
            }
    }
    // Close Function
    function suggestClose (div_value) {
            document.getElementById('search_suggest').innerHTML = '';
            document.getElementById('search_suggest').style.visibility  = "hidden";
    }

    //Mouse over function
    function suggestOver(div_value) {
            div_value.className = 'suggest_link_over';
    }
    //Mouse out function
    function suggestOut(div_value) {
            div_value.className = 'suggest_link';
    }
    //Click function
    function setSearch(value) {
            // HTML-TAGS entfernen
            var newvalue = value.replace(/<.*?>/gi, '');
            //Kategorienamen entfernen (fängt mit   an)
            var Suche =     newvalue.indexOf(" ");
            var produktname = newvalue.substring(0,Suche);
            document.getElementById('txtSearch').value = produktname;
            document.getElementById('search_suggest').innerHTML = '';
            document.getElementById('search_suggest').style.visibility  = "hidden";
            //zum Suchergebnis weiterleiten
            top.location.href = document.location.protocol + '//' + window.location.host + "/xtcommerce/advanced_search_result.php?keywords=" + produktname;
    }
    /*-------------------------End Suggest Code--------------------------------*/
     
    So sieht mein Code aus. Liegt es vielleicht daran, dass im Code was falsch ist? Hab es original von xtc-load.de übernommen.

    Tobischka

    • Fördermitglied
    • Beiträge: 7
    Ajax Suggest für die Suche
    Antwort #87 am: 16. Oktober 2009, 13:34:30
    Hallo.
    Bei mir funktioniert die Searchsuggest soweit. Er schlägt das Ganze vor, aber wenn ich dann auf einen Vorschlag klicke, komme ich immer auf http://localhost/xtcommerce/advanced_search_result.php?keywords= und es werden eben alle Artikel angezeigt. Das ist irgendwie doof.
    Und das ist bei allen Artikeln so.

    Ich hab bei der AjaxSuggest.js (von Gunnart so die Tipps übernommen) nur unten den top.location.href geändert.
    Kann mir jemand sagen, an was es liegen könnte, dass beim Anklicken kein Produktname übernommen wird?

    Code: Javascript  [Auswählen]
    /*----------------------------Suggest Code-------------------------*/
    /*
            This is the JavaScript file for the osCommerce AJAX Search Suggest

            You may use this code in your own projects as long as this
            copyright is left       in place.  All code is provided AS-IS.
            This code is distributed in the hope that it will be useful,
            but WITHOUT ANY WARRANTY; without even the implied warranty of
            MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

            For the rest of this code visit http://www.osCommerce-SSL.com

            For a complete detailed tutorial on how this code works visit:
            http://www.dynamicajax.com/fr/AJAX_Suggest_Tutorial-271_290_312.html

            For more AJAX code and tutorials visit http://www.DynamicAJAX.com

            Copyright 2006 Ryan Smith / 345 Technical / 345 Group. 

            Auf XT-Commerce portiert von TechWay (Steffen Decker) mit Unterstützung von Purecut (aus dem (( Wir dulden keine kommerziellen Werbelinks - Bitte <a href="index.php?topic=3013.0">Forenregeln</a> beachten! )) Forum)
            Copyright 2006 @ TechWay, Steffen Decker
    */

    //Gets the browser specific XmlHttpRequest Object
    function getXmlHttpRequestObject() {
            if (window.XMLHttpRequest) {
                    return new XMLHttpRequest();
            } else if(window.ActiveXObject) {
                    return new ActiveXObject("Microsoft.XMLHTTP");
            } else {
                    alert("Your Browser Sucks!\nIt's about time to upgrade don't you think?");
            }
    }

    //Our XmlHttpRequest object to get the auto suggest
    var searchReq = getXmlHttpRequestObject();

    //Called from keyup on the search textbox.
    //Starts the AJAX request.
    function searchSuggest() {
            if (searchReq.readyState == 4 || searchReq.readyState == 0) {
                    var str = escape(document.getElementById('txtSearch').value);
                    searchReq.open("GET", 'searchSuggest.php?search=' + str, true);
                    searchReq.onreadystatechange = handleSearchSuggest;
                    searchReq.send(null);
            }
    }

    //Called when the AJAX response is returned.
    function handleSearchSuggest() {
            if (searchReq.readyState == 4) {
                    var ss = document.getElementById('search_suggest')
                    ss.innerHTML = '';
                    var str = searchReq.responseText.split("\n");
                    for(i=0; i <str.length - 1; i++) {
                            //Build our element string.  This is cleaner using the DOM, but
                            //IE doesn't support dynamically added attributes.
                            var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
                            suggest += 'onmouseout="javascript:suggestOut(this);" ';
                            suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
                            suggest += 'class="suggest_link">' + str[i] + '</div>';
                            ss.innerHTML += suggest;
                    }
                    if (i==0) {
                            ss.style.visibility  = "hidden";
                    } else {
                            ss.style.visibility  = "visible";
                    }
                    //Schließen link einfügen
                    ss.innerHTML += '<p align="right"><a onmouseover="javascript:suggestOver(this);" onmouseout="javascript:suggestOut(this);" onClick="javascript:suggestClose(this);" class="suggest_link"><b>Fenster schließen</b></a></p>';
            }
    }
    // Close Function
    function suggestClose (div_value) {
            document.getElementById('search_suggest').innerHTML = '';
            document.getElementById('search_suggest').style.visibility  = "hidden";
    }

    //Mouse over function
    function suggestOver(div_value) {
            div_value.className = 'suggest_link_over';
    }
    //Mouse out function
    function suggestOut(div_value) {
            div_value.className = 'suggest_link';
    }
    //Click function
    function setSearch(value) {
            // HTML-TAGS entfernen
            var newvalue = value.replace(/<.*?>/gi, '');
            //Kategorienamen entfernen (fängt mit   an)
            var Suche =     newvalue.indexOf(" ");
            var produktname = newvalue.substring(0,Suche);
            document.getElementById('txtSearch').value = produktname;
            document.getElementById('search_suggest').innerHTML = '';
            document.getElementById('search_suggest').style.visibility  = "hidden";
            //zum Suchergebnis weiterleiten
            top.location.href = document.location.protocol + '//' + window.location.host + "/xtcommerce/advanced_search_result.php?keywords=" + produktname;
    }
    /*-------------------------End Suggest Code--------------------------------*/
     
    Liegt es vielleicht daran, dass im Code was falsch ist? Hab es original von xtc-load.de übernommen.

    Ach ich hab meinen Fehler gefunden:
    Wenn ich den unteren Teil durch folgenden Teil ersetzt funzt es wunderbar. Naja, ich hab trotzdem nicht verstanden, warum so das so ist. :)

    Code: Javascript  [Auswählen]
    function setSearch(value) {
            // Schneiden, HTML-TAGS entfernen, unescapen
            var produktname = value.substring(0,value.toLowerCase().indexOf("</div>"));
            produktname = unescape(produktname.replace(/<.*?>/gi, ''));
            document.getElementById('txtSearch').value = produktname;
            document.getElementById('search_suggest').innerHTML = '';
            document.getElementById('search_suggest').style.visibility  = "hidden";
            //zum Suchergebnis weiterleiten
            top.location.href = document.location.protocol + '//' + window.location.host + "/xtcommerce/advanced_search_result.php?keywords=" + produktname;
    }
     

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.373
    • Geschlecht:
    Ajax Suggest für die Suche
    Antwort #88 am: 16. Oktober 2009, 14:22:20
    Die Probleme mit dem Modul sind bekannt, daher ist es auch noch nicht in modified eCommerce Shopsoftware integriert worden.

    Wenn wir eine bessere Lösung finden, dann wird sie hier veröffentlicht werden.

    Grüße

    Torsten

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.373
    • Geschlecht:
    Ajax Suggest für die Suche
    Antwort #89 am: 03. Januar 2010, 19:17:29
    Und hier scheinen wir die Lösung gefunden zu haben: http://www.modified-shop.org/forum/topic.php?id=2408#post-29994

    Wir werden das Modul entsprechend anpassen und bereitstellen.

    Grüße

    Torsten

    27 Antworten
    15488 Aufrufe
    21. Dezember 2010, 10:14:41 von plasticman
    18 Antworten
    13181 Aufrufe
    21. Dezember 2010, 11:45:08 von plasticman
    712 Antworten
    323601 Aufrufe
    27. Dezember 2019, 15:56:22 von karsta.de
    2 Antworten
    1981 Aufrufe
    31. Mai 2014, 20:17:23 von tele
               
    anything