Ziele des Blogs
Nachdem Sie diesen Blog gelesen haben, können Sie alle Produkte anzeigen, wenn die Suche leer ist.
Problem Statement
Wenn der Benutzer derzeit in Opencart nach einer Zeichenfolge mit der Suchfunktion sucht, werden keine Produkte zurückgegeben, wenn kein Suchprodukt in der Datenbank gefunden wurde. Wir möchten, dass alle Produkte zurückgegeben werden, wenn die Suche leer ist.
Code-Implementierung
Um dies zu erreichen, müssen wir einige Änderungen an der Modellfunktion vornehmen, die wir zum Abrufen von Produkten aus der Datenbank anhand des eingegebenen Suchbegriffs verwenden. Hier nehmen wir Änderungen vor getProducts () ?function of model Katalog / Modell / Katalog / Produkt.php da wir diese Funktion verwenden, um Ergebnisse auf Basis des Suchbegriffs anzuzeigen.
Hinweis: Sie können dieselben Änderungen in der Modellfunktion vornehmen, mit der Sie Produkte abrufen. Hier ist der Code, den wir im Modell hinzugefügt haben:
/ * Überprüft, ob das Ergebnis leer ist (betroffene Zeilen 0) der Abfrage, die ausgeführt wird, um Daten anhand des Suchbegriffs abzurufen. * Wenn ja, dann neue Abfrage hinzugefügt, um neu hinzugefügte Produkte abzurufen und gleich auszuführen. * Auf diese Weise zeigen wir unsere neuen Produkte auf der Suchseite an, anstatt eine leere Seite anzuzeigen. * / if ($ query-> num_rows == 0) {$ sql = "SELECT DISTINCT p.product_id FROM". DB_PREFIX. "Produkt p LEFT JOIN". DB_PREFIX. "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN". DB_PREFIX. "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' UND p.date_available <= NOW () AND p2s.store_id = '". (int) $ this-> config-> get ('config_store_id'). "'GROUP BY p.product_id ORDER BY p.product_id DESC LIMIT 20"; $ query = $ this-> db-> query ($ sql); }
Fügen Sie diesen Code unmittelbar nach der Ausführung der Hauptabfrage oder direkt nach der Zeile ein ($ query = $ this-> db-> query ($ sql)). In diesem Code haben wir zunächst die Anzahl der betroffenen Zeilen durch die Hauptabfrage (zum Abrufen von Daten anhand des Suchbegriffs) überprüft. Wenn die betroffene Zeile 0 ist ($ query-> num_rows == 0) fügte dann unsere Abfrage hinzu, um neue hinzugefügte Produkte abzurufen. Auf diese Weise zeigen wir unsere neuen Produkte auf der Suchseite an, anstatt eine leere Seite anzuzeigen.
Hinweis: Hier haben wir eine Anfrage geschrieben, um neu hinzugefügte Produkte aus der Datenbank abzurufen, wenn die Suche leer ist. Sie können auch eine Abfrage hinzufügen, um Sonder- oder Bestsellerprodukte entsprechend Ihrer Anforderung abzurufen.
Zusammenfassung
Nachdem Sie die folgenden Änderungen in der Modelldatei vorgenommen haben, werden neu hinzugefügte Produkte angezeigt, wenn die Suche leer ist.