Maison >développement back-end >tutoriel php >implémentation de la fonction de recherche phpcms

implémentation de la fonction de recherche phpcms

不言
不言original
2018-04-28 09:37:225478parcourir

Le contenu présenté dans cet article concerne la mise en œuvre de la fonction de recherche phpcms. Il a une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Je le suis actuellement. Je travaille sur un site portail et j'ai utilisé la fonction de recherche de phpcms. J'ai toujours voulu implémenter cette fonction auparavant, mais je n'ai pas pu me calmer et étudier les principes d'implémentation de phpcms. Aujourd'hui, j'enregistrerai mon processus d'analyse à travers ce blog. Les informations sur Internet sont relativement dispersées, et je les lis toujours. Elles ne sont toujours pas claires, voici donc un résumé plus systématique.

Fichiers liés à la fonction de recherche

Le modèle d'arrière-plan de la fonction de recherche phpcms se trouve dans : chemin de recherche phpcmsmodules, et il y a un fichier nommé index.php dans ce chemin. Il existe certaines méthodes pour afficher les résultats de recherche dans le fichier, telles que notre méthode init couramment utilisée, à partir de la méthode de construction d'index.php
$this->db =pc_base::load_model('search_model'); Vous pouvez constater que index.php utilise le préfixe de base de données _search name table
Le modèle frontal de la fonction de recherche phpcms se trouve à l'adresse : phpcmstemplatesdefaultsearch. Il y a quatre fichiers dans ce chemin, à savoir index.html, footer.html, header.html et list.html. Le index.html signifie ici que c'est le cas. appelé lorsqu'il n'y a pas de résultats de recherche. Page d'affichage, header.html et footer.html représentent les parties d'en-tête et de pied de page des résultats de recherche de sortie, list.html représente la page d'affichage appelée une fois les résultats de recherche trouvés

Modifier le modèle back-end

Pour la fonction de recherche de phpcms, j'utilise principalement la fonction de correspondance avec les requêtes floues de mysql, mais cette fonction n'est pas correcte pour interroger du contenu contenant des informations chinoises, et le support n'est pas bon, j'ai donc bloqué cette partie du code Oui, la méthode de blindage spécifique consiste à ouvrir le fichier phpcmsmodulessearchindex.php, à trouver environ 84 lignes et à commenter le code suivant :

//如果分词结果为空
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%'";
}

Ajoutez le code suivant après ce code :

$sql = "`siteid`= '$siteid' AND `typeid` = '$typeid' $sql_time AND `data` like '%$q%'";

Modifiez le code front-end

Pour modifier le code front-end, nous pouvons nous référer au fichier phpcmstemplatesdefaultsearchindex.html, visualiser le fichier index.html original, rechercher et soumettre le formulaire de fonction de requête. Le code associé est le suivant :

<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>

Le contenu dont l'attribut type est masqué dans cette partie du code est ajouté à l'URL par défaut lors de la soumission du formulaire. Cette partie du contenu n'est pas soumise via un formulaire. Par exemple, en me prenant comme exemple, mon URL contenant le bouton de recherche. est : http://localhost/startwill/index.php?m=content&c=index&a=lists&catid=41. Après avoir entré le mot produit dans la zone de recherche, l'URL redirigée est : http://localhost/startwill/index. php?m=search&c=index&a=init&typeid=3&siteid=1&q=product, où m, c et Les valeurs de a, typeid et siteid sont toutes soumises via des méthodes cachées, et la valeur de q est saisie via le champ de recherche. Lorsque nous l’utilisons sur nos propres pages, nous pouvons imiter le code ci-dessus.

Modifier le code d'affichage

Le code d'affichage de phpcms peut être implémenté en vous référant à phpcmstemplatesdefaultsearchlist.html Dans list.html, vous pouvez passer {loop

r} pour obtenir la valeur du résultat recherché. Les champs de contenu stockés dans $data sont les suivants :
implémentation de la fonction de recherche phpcms
Avec ces informations de champ, nous pouvons faire ce que nous voulons dans notre page d'affichage list.html.
Ce qui nécessite une attention particulière ici, c'est que lorsque nous écrivons du code dans notre propre list.html, nous pouvons utiliser des boucles, mais n'utilisons pas de données pour nous stocker Si la valeur est parcourue, la valeur attribuée via la recherche sera écrasée et la page entière affichera la valeur que vous vous êtes assignée.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn