Maison > Tutoriel CMS > DEDECMS > Dreamweaver dedecms implémente la fonction de recherche par index alphabétique

Dreamweaver dedecms implémente la fonction de recherche par index alphabétique

(*-*)浩
Libérer: 2019-12-27 14:43:21
original
2318 Les gens l'ont consulté

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;
Copier après la connexion

É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.php
Copier après la connexion

sont 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>
Copier après la connexion

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>
Copier après la connexion

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’,&#39;$typeid2′,’$sortrank’,&#39;$iscommend’,&#39;$ismake’,&#39;$channelid’,
‘$arcrank’,&#39;0′,’$money’,&#39;$title’,&#39;$shorttitle’,&#39;$color’,&#39;$writer’,&#39;$source’,&#39;$litpic’,
‘$pubdate’,&#39;$senddate’,&#39;$arcatt’,&#39;$adminID’,&#39;0′,’$description’,&#39;$keywords’,&#39;$templet’,&#39;$redirecturl’,‘$pytitle’);”;
Copier après la connexion

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’; “;
Copier après la connexion

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>
Copier après la connexion

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();
}
}
Copier après la connexion

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%’ “;
}
Copier après la connexion

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[&#39;cfg_basedir&#39;].$GLOBALS[&#39;cfg_templets_dir&#39;].”/”.$GLOBALS[&#39;cfg_df_style&#39;].”/”.$GLOBALS[&#39;cfg_templets_pysearch&#39;];
  else $tempfile = $GLOBALS[&#39;cfg_basedir&#39;].$GLOBALS[&#39;cfg_templets_dir&#39;].”/”.$GLOBALS[&#39;cfg_df_style&#39;].”/search.htm”;
Copier après la connexion

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’;
Copier après la connexion

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>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal