Maison >Tutoriel CMS >DEDECMS >Dreamweaver dedecms implémente la fonction de recherche par index alphabétique
Le système DEDE a la fonction "index alphabétique"
La méthode de mise en œuvre est la suivante
Première étape : Tout d'abord, vous devez modifier la structure de la base de données et ajouter un champ pour stocker le pinyin. (Apprentissage recommandé : Dreaming CMS )
Modifier la table DEDE_ARCHIVES, ajouter pytitle, varchar (250), permet d'être vide. Ce qui suit est le SQL pour créer la table, à titre de référence uniquement. La partie rouge est la nouvelle partie, qui peut être implémentée en modifiant directement la structure de la table avec phpmyadmin.CREATE TABLE `dede_archives` ( `ID` int(11) unsigned NOT NULL auto_increment, `typeid` int(11) unsigned NOT NULL default ‘0′, `typeid2` int(11) unsigned NOT NULL default ‘0′, `sortrank` int(11) NOT NULL default ‘0′, `iscommend` smallint(6) NOT NULL default ‘0′, `ismake` smallint(6) NOT NULL default ‘0′, `channel` int(11) NOT NULL default ‘1′, `arcrank` smallint(6) NOT NULL default ‘0′, `click` int(11) unsigned NOT NULL default ‘0′, `money` smallint(6) NOT NULL default ‘0′, `title` varchar(80) NOT NULL default ”, `shorttitle` varchar(36) NOT NULL default ”, `color` varchar(10) NOT NULL default ”, `writer` varchar(30) NOT NULL default ”, `source` varchar(50) NOT NULL default ”, `litpic` varchar(100) NOT NULL default ”, `pubdate` int(11) NOT NULL default ‘0′, `senddate` int(11) NOT NULL default ‘0′, `arcatt` smallint(6) NOT NULL default ‘0′, `adminID` int(11) NOT NULL default ‘0′, `memberID` int(11) unsigned NOT NULL default ‘0′, `description` varchar(250) NOT NULL default ”, `keywords` varchar(60) NOT NULL default ”, `templet` varchar(60) NOT NULL default ”, `lastpost` int(11) NOT NULL default ‘0′, `postnum` int(11) NOT NULL default ‘0′, `redirecturl` varchar(150) NOT NULL default ”, `mtype` int(11) NOT NULL default ‘0′, `userip` varchar(20) NOT NULL default ”, `locklikeid` smallint(6) NOT NULL default ‘0′, `likeid` varchar(240) default ”, `pytitle` varchar(250) default NULL, PRIMARY KEY (`ID`), KEY `click` (`click`), KEY `senddate` (`senddate`), KEY `typeid` (`typeid`), KEY `arcrank` (`arcrank`), KEY `sortrank` (`sortrank`), KEY `pubdate` (`pubdate`), KEY `litpic` (`litpic`), KEY `typeid2` (`typeid2`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk;Étape 2 : Obtenez les initiales pinyin du titre de l'article et enregistrez-le dans la base de données.
Les fichiers qui doivent être modifiés sont :
article_add.php、article_add_action.php、article_edit.php、article_eidt_action.phpsont les quatre fichiers contrôlés en ajoutant de nouveaux articles et en modifiant les articles respectivement.
Modifiez article_add.php en :
<td> <input name=”iscommend” type=”checkbox” id=”iscommend” value=”11″> 推荐 <input name=”isbold” type=”checkbox” id=”isbold” value=”5″> 加粗 <input name=”isjump” type=”checkbox” id=”isjump” value=”1″ onClick=”ShowUrlTr()”> 跳转网址 <input name=”upinyin” type=”checkbox” id=”upinyin” value=”1″ checked=”checked”>保存拼音 </td>Ajoutez une option pour enregistrer le pinyin.
Modifiez article_edit.php en :
<td> <input name=”iscommend” type=”checkbox” id=”iscommend” value=”11″<?php if($arcRow["iscommend"]>10) echo ” checked”;?>> 推荐 <input name=”isbold” type=”checkbox” id=”isbold” value=”5″<?php if($arcRow["iscommend"]==5||$arcRow["iscommend"]==16) echo ” checked”;?>> 加粗 <input name=”isjump” onClick=”ShowUrlTrEdit()” type=”checkbox” id=”isjump” value=”1″<?php echo $arcRow["redirecturl"]==”" ? “” : ” checked”;?>> 跳转网址 <input name=”upinyin” type=”checkbox” id=”upinyin” value=”1″<?php if($arcRow["pytitle"]<>”") echo ” checked”;?>> 保存拼音 </td>Idem que ci-dessus.
Modifiez article_add_action.php en :
//获得标题的拼音码 if($upinyin==1) $pytitle = str_replace(“_”,”",GetPinyin($title,1)); //加入数据库的SQL语句 //———————————- $inQuery = “INSERT INTO dede_archives( typeid,typeid2,sortrank,iscommend,ismake,channel, arcrank,click,money,title,shorttitle,color,writer,source,litpic, pubdate,senddate,arcatt,adminID,memberID,description,keywords,templet,redirecturl,pytitle) VALUES (‘$typeid’,'$typeid2′,’$sortrank’,'$iscommend’,'$ismake’,'$channelid’, ‘$arcrank’,'0′,’$money’,'$title’,'$shorttitle’,'$color’,'$writer’,'$source’,'$litpic’, ‘$pubdate’,'$senddate’,'$arcatt’,'$adminID’,'0′,’$description’,'$keywords’,'$templet’,'$redirecturl’,‘$pytitle’);”;Obtenez les initiales pinyin du titre de l'article via la fonction système GetPingyin, générez une instruction d'insertion et enregistrez les initiales pinyin de le titre dans le champ pytitle .
De même, modifiez article_eidt_action.php en :
//用拼音命名 if($upinyin==1) $pytitle = str_replace(“_”,”",GetPinyin($title,1)); //更新数据库的SQL语句 //———————————- $inQuery = ” update dede_archives set typeid=’$typeid’, typeid2=’$typeid2′, sortrank=’$sortrank’, redirecturl=’$redirecturl’, iscommend=’$iscommend’, ismake=’$ismake’, arcrank=’$arcrank’, money=’$money’, title=’$title’, color=’$color’, writer=’$writer’, source=’$source’, litpic=’$litpic’, pubdate=’$pubdate’, description=’$description’, keywords=’$keywords’, templet=’$templet’, shorttitle=’$shorttitle’, arcatt=’$arcatt’, pytitle=’$pytitle’ where ID=’$ID’; “;La troisième étape consiste à modifier le modèle de page d'accueil ou d'autres modèles qui doivent utiliser cette fonction.
<div>中文按声母排列:<a href=”/plus/search.php?keyword=a&searchtype=pytitle”>A</a> – <a href=”/plus/search.php?keyword=b&searchtype=pytitle”>B</a> – <a href=”/plus/search.php?keyword=c&searchtype=pytitle”>C</a> – <a href=”/plus/search.php?keyword=d&searchtype=pytitle”>D</a> – <a href=”/plus/search.php?keyword=e&searchtype=pytitle”>E</a> – <a href=”/plus/search.php?keyword=f&searchtype=pytitle”>F</a> – <a href=”/plus/search.php?keyword=g&searchtype=pytitle”>G</a> – <a href=”/plus/search.php?keyword=h&searchtype=pytitle”>H</a> – <a href=”/plus/search.php?keyword=j&searchtype=pytitle”>J</a> – <a href=”/plus/search.php?keyword=k&searchtype=pytitle”>K</a> – <a href=”/plus/search.php?keyword=l&searchtype=pytitle”>L</a> – <a href=”/plus/search.php?keyword=m&searchtype=pytitle”>M</a> – <a href=”/plus/search.php?keyword=n&searchtype=pytitle”>N</a> – <a href=”/plus/search.php?keyword=o&searchtype=pytitle”>O</a> – <a href=”/plus/search.php?keyword=p&searchtype=pytitle”>P</a> – <a href=”/plus/search.php?keyword=q&searchtype=pytitle”>Q</a> – <a href=”/plus/search.php?keyword=r&searchtype=pytitle”>R</a> – <a href=”/plus/search.php?keyword=s&searchtype=pytitle”>S</a> – <a href=”/plus/search.php?keyword=t&searchtype=pytitle”>T</a> – <a href=”/plus/search.php?keyword=w&searchtype=pytitle”>W</a> – <a href=”/plus/search.php?keyword=x&searchtype=pytitle”>X</a> – <a href=”/plus/search.php?keyword=y&searchtype=pytitle”>Y</a> – <a href=”/plus/search.php?keyword=z&searchtype=pytitle”>Z</a> <- 中文软件名按第一汉字声母排列</div>L'élément clé est password=letter&searchtype=pytitle. Dans la quatrième étape, nous implémentons la recherche via search.php dedecms n'autorise pas les recherches de moins de 3 caractères, nous devons donc le modifier.
Modifiez le fichier /plus/search.php, la partie modifiée est en rouge :
//判断是否为声母搜索 if($searchtype<>”pytitle”){ if($keyword==”"||strlen($keyword)<3){ ShowMsg(“关键字不能小于3个字节!”,”-1″); exit(); } }
La cinquième étape consiste à modifier et mettre en œuvre la recherche.
Modifier /include/inc_arcsearch_view.php, objectif : Obtenir des mots-clés de lettres, générer de nouvelles conditions de recherche, obtenir des mots-clés de type de recherche ($searchtype) et appeler différents modèles d'affichage. Bon, continuons à modifier. Les modifications sont les suivantes. Les parties rouges sont les pièces nouvelles ou modifiées.Modifiez la fonction GetKeywordSql() et ajoutez :
//声母搜索支持 if($this->SearchType==”pytitle”){ $kwsql .= ” And dede_archives.pytitle like ‘$this->Keywords%’ “; }
Il est recommandé de le placer sous foreach($ks as $k){…}
Étape six, à travers ce qui précède, l'indexation alphabétique a été implémentée, mais le modèle de recherche du système est appelé, ce qui n'est pas adapté aux caractéristiques de l'indexation alphabétique, nous devons donc aller plus loin et ajouter un nouveau support de modèle. 1. Modifiez /include/inc_arcsearch_view.php et modifiez le constructeur de la fonction __construct(). Pour :if($this->SearchType==”pytitle”) $tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'].”/”.$GLOBALS['cfg_df_style'].”/”.$GLOBALS['cfg_templets_pysearch']; else $tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir'].”/”.$GLOBALS['cfg_df_style'].”/search.htm”;Le but est de déterminer quand $searchtype==pytitle, appelez le modèle défini par la variable globale cfg_templets_pysearch. 2. Modifiez le fichier include/config_hand.php. Ajoutez la variable globale cfg_templets_pysearch.
//拼音搜索模板 $cfg_templets_pysearch = ‘pylist.htm’;Ensuite, vous pouvez ajouter le modèle pylist.htm dans le dossier des modèles pour afficher les résultats de la liste alphabétique. Étape 7, les choses ne sont pas encore terminées. Que faire si je souhaite limiter la portée de l'affichage ? Par exemple, je souhaite afficher uniquement un logiciel, ou une certaine colonne, pour aller plus loin. En fait, la recherche prend en charge de nombreux paramètres, tels que $typeid (numéro de colonne), $channeltype (numéro de type d'article), $orderby (méthode de tri), etc. Vous savez maintenant quoi faire, n'est-ce pas ?
Je ne sais pas encore, voici un exemple :
<a href=”/plus/search.php?keyword=a&searchtype=pytitle&typeid=2&$channeltype=3&$orderby=title”>A</a>
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!