Baskosehund Posted October 17, 2008 Report Share Posted October 17, 2008 Mahlzeit, kann mir jemand sagen ob die Suche über das Template schon so weit angepasst werden kann, dass standardmäßig auch nach Herstellernamen gesucht wird oder muss ich da tiefer ran? Link to comment Share on other sites More sharing options...
Snirf Posted October 17, 2008 Report Share Posted October 17, 2008 Das geht leider nicht übers Template, da muss man wie du schon richtig vermutet hast tiefer ran. War übrigens auch einer meiner ersten Kontakte mit Veyton, wo ich was gerne erweitert hätte. Hoffe ich krieg noch alle Stellen zusammen, an denen ich was geändert hab (war übrigens noch in der 4.05er-Version). Ach ja, noch eine Sache... ich weiß nicht, wie man sowas sinnvoll lösen kann, so dass es beim nächsten Update nicht überschrieben wird. Also, du brauchst die Datei xtFramework/classes/class.search_query.php Hier fügst du in Zeile 43 (in der Zeile nach dem "return $plugin_return_value;") folgendes ein: $this->setSQL_TABLE("LEFT JOIN " . TABLE_MANUFACTURERS . " m ON (p.manufacturers_id = m.manufacturers_id)"); Dadurch erreichst du erstmal, dass die Hersteller auf die Produkte gejoint werden. Und dann musst du noch die Suchquery an sich anpassen: $this->setSQL_WHERE("AND (pd.products_keywords LIKE '%".$keywords."%' or pd.products_name LIKE '%".$keywords."%' ".$sdesc.$desc.")"); wird zu $this->setSQL_WHERE("AND (pd.products_keywords LIKE '%".$keywords."%' or pd.products_name LIKE '%".$keywords."%' or m.manufacturers_name LIKE '%".$keywords."%' ".$sdesc.$desc.")"); Ich hab die alte Suchquery einfach durch // auskommentiert, damit ich se auf jeden Fall noch hab. Alle Angaben selbstverständlich ohne Gewähr und ich hoffe, dass ich grad nichts vergessen hab. Hoffe das hilft dir. Gruß Snirf Link to comment Share on other sites More sharing options...
Matthias Posted October 17, 2008 Report Share Posted October 17, 2008 Verabschiede dich gleich von der vorgehensweis irgendwas in den Datein direkt anzupassen, du hast in der search funktion min 3 Hookpoints über die du das mit nem kleinen Plugin lösen kannst. Schau dir mal die anderen Plugins im Shop an besonders die jeweilige xml Datei im Installordner des Plugins. Somit hast du dann keine Probleme mehr die Datein später mal zu aktualisieren. Link to comment Share on other sites More sharing options...
Snirf Posted October 17, 2008 Report Share Posted October 17, 2008 Ja, das ist richtig, dass das über die Hooks auch geht, aber leider gibt es ja zu so gut wie nix eine Dokumentation. Hab mich jetzt mal drangesetzt und eine eigene Merkliste programmiert, was auch an sich ganz gut ging, nur ist das leider ohne jegliche Dokumentation eine scheiß Arbeit. Und so wie es aussieht werden wir wohl auf die Dokumentation auch noch einige Zeit warten müssen. Wenn ich jetzt ein Plugin dafür schreibe, was muss ich auf jeden Fall in den Header schreiben? Also auch wenn ich keine Codeteile kopieren, sondern alles selber schreibe? Naja, man darf gespannt bleiben, wie es sich entwickelt. Habe leider nach wie vor das Gefühl, dass die Aussage mit den 2 Jahren eher ein Marketing-Gag gewesen ist. Vielmehr wird doch jetzt alles mit der heißen Nadel nachgestrickt. Gruß Snirf Link to comment Share on other sites More sharing options...
Snirf Posted October 17, 2008 Report Share Posted October 17, 2008 So, hab das mal als Plugin realisiert, ob es die beste Möglichkeit ist weiß ich nicht. Ich hab mir einfach den Hook-Point "class.search_query.php:F_Keywords_top" geschnappt, dort führe ich den modifizierten Code aus der class.search_query.php aus und setze einen zusätzlichen Hook-Point (plugin.inw_manufacturer_search:afterJoin). Zusätzlich setze ich danach die Variable $plugin_return_value, damit der ursprüngliche Code aus der class.search_query.php nicht ausgeführt wird. Schwachstelle an dem ganzen: Falls die Suchroutine später mal überarbeitet wird muss auch das Plugin angepasst werden, da hier nicht nur die zusätzlichen Zeilen eingefügt wurden, sondern alles aus der class.search_query.php. Hab aber mit meinem derzeitigen Wissen keine andere Möglichkeit gesehen, da es zum einen nicht die Hook-Points an den richtigen Stellen gab und zum anderen schwierig ist, das Statement für die Suche dynamisch anzupassen. Was man sich noch überlegen könnte wäre, dass man den Query als Option im Adminbereich hinterlegt. Hätte natürlich den Nachteil, dass jedesmal eine zusätzliche DB-Anfrage benötigt wird. Vielleicht mach ich das auch mal noch als zusätzliches Modul. Naja, lange Rede kurzer Sinn, anbei mein Plugin (ohh... das reimt sich ;-)) Falls irgend welche rechtlichen Hinweise oder sonst irgend was fehlt bitte bescheid geben. Gruß Snirfinw_manufacturer_search.zip Link to comment Share on other sites More sharing options...
Baskosehund Posted October 20, 2008 Author Report Share Posted October 20, 2008 Danke schon mal, sehr fein. Link to comment Share on other sites More sharing options...
Baskosehund Posted November 4, 2008 Author Report Share Posted November 4, 2008 Hallo Snirf, habe inzwischen deine Suche weiter ausgebaut, und auch Kategoriennamen z.B. mit einbezogen. Am liebsten würde ich jetzt die Ausgabe auch noch nach Kategoriennamen sortieren. Wie bekomme ich denn das "ORDER BY" in Abfrage. Meine Versuche diesbezüglich haben alle nicht funktioniert. MfG Baskosehund Link to comment Share on other sites More sharing options...
Snirf Posted November 4, 2008 Report Share Posted November 4, 2008 ist nicht sooo kompliziert, einfach $this->setSQL_TABLE(" LEFT JOIN " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc ON (p.products_id = ptc.products_id)"); $this->setSQL_WHERE(" AND ptc.master_link = '1' "); $this->setSQL_TABLE(" LEFT JOIN " . TABLE_CATEGORIES_DESCRIPTION . " cd ON (ptc.categories_id = cd.categories_id)"); $this->setSQL_WHERE(" AND cd.language_code = 'de' "); $this->setSQL_SORT(" cd.categories_name "); Wie du siehst ist da noch der Language-Code hardkodiert drin, das kann man bestimmt noch irgendwie schön ändern. Gruß Snirf Link to comment Share on other sites More sharing options...
Matthias Posted November 4, 2008 Report Share Posted November 4, 2008 $language->code[/CODE] wäre da ne Möglichkeit. Link to comment Share on other sites More sharing options...
Baskosehund Posted November 5, 2008 Author Report Share Posted November 5, 2008 Super danke sehr! Hatte die ganze Zeit mit "setSQL_ORDER" rumprobiert... vielen Dank! Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.