Der in diesem Artikel vorgestellte Inhalt befasst sich mit der Implementierung der PHPCMS-Suchfunktion. Jetzt kann ich ihn mit allen Freunden teilen, die ihn benötigen.
Ich bin gerade dabei Bei der Arbeit an einer Portal-Website wollte ich diese Funktion schon immer implementieren, konnte mich aber nicht beruhigen und die Implementierungsprinzipien von phpcms studieren. Die Informationen im Internet sind relativ verstreut und ich lese sie immer noch unklar, daher hier eine systematischere Zusammenfassung.
Die Hintergrundvorlage der phpcms-Suchfunktion befindet sich im phpcmsmodulessearch-Pfad, und in diesem Pfad befindet sich eine Datei mit dem Namen index.php. Es gibt einige Methoden zum Anzeigen von Suchergebnissen in der Datei, z. B. unsere häufig verwendete Init-Methode aus der Konstruktionsmethode von index.php
$this->db =pc_base::load_model(‘search_model’); Sie können feststellen, dass index.php das Datenbankpräfix _search name table
verwendet Die Frontend-Vorlage der phpcms-Suchfunktion befindet sich unter: phpcmstemplatesdefaultsearch. In diesem Pfad befinden sich vier Dateien, nämlich index.html, footer.html, header.html und list.html Wird aufgerufen, wenn keine Suchergebnisse vorhanden sind. Header.html und Footer.html stellen die Kopf- und Fußzeilenteile der ausgegebenen Suchergebnisse dar. List.html stellt die Anzeigeseite dar, die aufgerufen wird, nachdem die Suchergebnisse gefunden wurden
Für die Suchfunktion von phpcms verwende ich hauptsächlich die Match-gegen-Fuzzy-Query-Funktion von MySQL, aber diese Funktion ist nicht für die Abfrage von Inhalten mit chinesischen Informationen geeignet. und die Unterstützung ist nicht gut, also habe ich diesen Teil des Codes blockiert. Ja, die spezifische Abschirmungsmethode besteht darin, die Datei phpcmsmodulessearchindex.php zu öffnen, etwa 84 Zeilen zu finden und den folgenden Code auszukommentieren:
//如果分词结果为空 if(!empty($segment_q)) { $sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND MATCH (`data`) AGAINST ('$segment_q' IN BOOLEAN MODE)"; } else { $sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'"; }
Fügen Sie nach diesem Code den folgenden Code hinzu:
$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";
Um den Front-End-Code zu ändern, können wir auf verweisen Sehen Sie sich die Datei phpcmstemplatesdefaultsearchindex.html an, sehen Sie sich die ursprüngliche Datei index.html an und suchen Sie den Code, der mit der Formularübermittlung der Abfragefunktion verknüpft ist. Wie in der folgenden Abbildung gezeigt:
<form name="search" type="get"> <input type="hidden" name="m" value="search"/> <input type="hidden" name="c" value="index"/> <input type="hidden" name="a" value="init"/> <input type="hidden" name="typeid" value="{$typeid}" id="typeid"/> <input type="hidden" name="siteid" value="{$siteid}" id="siteid"/> <p class="sr_frm"> <p class="sr_frm_box"> <p class="sr_frmipt"><input type="text" name="q" id="q" class="ipt"> <p class="sp" id="aca"> </p><input type="submit" class="ss_btn" value="搜 索"> </p> </p> <p id="sr_infos" class="wrap sr_infoul"> </p> </p> </form>
Der Inhalt, dessen Typattribut Wird in diesem Teil des Codes ausgeblendet und beim Absenden des Formulars standardmäßig zur URL hinzugefügt. Dieser Teil des Inhalts wird von uns nicht in ein Formular übermittelt. Nehmen wir als Beispiel meine URL, die die Suchschaltfläche enthält lautet: http://localhost/startwill/index.php?m=content&c=index&a=lists&catid=41, wenn ich in das Suchfeld eingebe. Nach dem Wort Produkt lautet die umgeleitete URL: http://localhost/startwill/index .php?m=search&c=index&a=init&typeid=3&siteid=1&q=product, wobei m, c und a, typeid, siteid sind. Die Werte werden alle über versteckte Methoden übermittelt und der Wert von q wird über das Suchfeld eingegeben Wenn wir es auf unserer eigenen Seite verwenden, können wir den obigen Code nachahmen.
Der Anzeigecode von phpcms kann durch Verweis auf phpcmstemplatesdefaultsearchlist.html implementiert werden. In list.html können Sie {loop
r}, um den gesuchten Ergebniswert zu erhalten. Die in $data gespeicherten Inhaltsfelder lauten wie folgt:
Mit diesen Feldinformationen können wir auf unserer list.html-Anzeigeseite tun, was wir wollen.
Was hier besondere Aufmerksamkeit erfordert, ist, dass wir beim Schreiben von Code in unsere eigene list.html Schleifen verwenden können, aber keine Daten verwenden, um uns selbst zu speichern Wenn der Wert durchlaufen wird, wird der durch die Suche zugewiesene Wert überschrieben und auf der gesamten Seite wird der von Ihnen selbst zugewiesene Wert angezeigt.
Das obige ist der detaillierte Inhalt vonImplementierung der PHPCMS-Suchfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!