Heim > CMS-Tutorial > DEDECMS > Hauptteil

Dreamweaver dedecms implementiert eine alphabetische Indexsuchfunktion

(*-*)浩
Freigeben: 2019-12-27 14:43:21
Original
2211 Leute haben es durchsucht

Dreamweaver dedecms implementiert eine alphabetische Indexsuchfunktion

Das DEDE-System verfügt über die Funktion „alphabetischer Index“

Die Implementierungsmethode ist wie folgt

Schritt eins: Zuerst müssen Sie die Datenbankstruktur ändern und ein Feld zum Speichern von Pinyin hinzufügen. (Empfohlenes Lernen: Dreaming CMS )

Ändern Sie die Tabelle DEDE_ARCHIVES, fügen Sie pytitle und varchar (250) hinzu und lassen Sie sie leer sein. Das Folgende ist die SQL zum Erstellen der Tabelle, nur als Referenz. Der rote Teil ist der neue Teil, der durch direktes Ändern der Tabellenstruktur mit phpmyadmin implementiert werden kann.

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;
Nach dem Login kopieren

Schritt 2: Holen Sie sich die Pinyin-Initialen des Artikeltitels und speichern Sie ihn in der Datenbank.

Die Dateien, die geändert werden müssen, sind:

article_add.php、article_add_action.php、article_edit.php、article_eidt_action.php
Nach dem Login kopieren

sind die vier Dateien, die durch das Hinzufügen neuer Artikel bzw. das Ändern von Artikeln gesteuert werden.

Artikel_add.php ändern in:

        <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>
Nach dem Login kopieren

Option zum Speichern von Pinyin hinzufügen.

Artikel_edit.php ändern in:

        <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>
Nach dem Login kopieren

Das Gleiche wie oben.

Artikel_add_action.php ändern in:

//获得标题的拼音码
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’);”;
Nach dem Login kopieren

Rufen Sie die Pinyin-Initialen des Artikeltitels über die Systemfunktion GetPingyin ab, generieren Sie eine Einfügeanweisung und speichern Sie die Pinyin-Initialen von der Titel für das Feld „pytitle“.

Ändern Sie auch Article_eidt_action.php wie folgt:

//用拼音命名
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’; “;
Nach dem Login kopieren

Der dritte Schritt besteht darin, die Homepage-Vorlage oder andere Vorlagen zu ändern, die diese Funktion verwenden müssen.

<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>
Nach dem Login kopieren

Der Schlüsselteil ist keyword=letter&searchtype=pytitle.

Im vierten Schritt implementieren wir die Suche über search.php. Da dedecms keine Suche mit weniger als 3 Zeichen zulässt, müssen wir es ändern.

Ändern Sie die Datei /plus/search.php, der geänderte Teil ist rot:

//判断是否为声母搜索
if($searchtype<>”pytitle”){
if($keyword==”"||strlen($keyword)<3){
ShowMsg(“关键字不能小于3个字节!”,”-1″);
exit();
}
}
Nach dem Login kopieren

Der fünfte Schritt besteht darin, die Suche zu ändern und zu implementieren.

Ändern /include/inc_arcsearch_view.php, Ziel:

Buchstabenschlüsselwörter abrufen, neue Suchbedingungen generieren, Suchtypschlüsselwörter abrufen ($searchtype), verschiedene Anzeigevorlagen aufrufen.

Okay, lasst uns mit den Änderungen fortfahren. Die roten Teile sind die neuen oder geänderten Teile.

Ändern Sie die Funktion GetKeywordSql() und fügen Sie hinzu:

//声母搜索支持
if($this->SearchType==”pytitle”){
  $kwsql .= ” And dede_archives.pytitle like ‘$this->Keywords%’ “;
}
Nach dem Login kopieren

Es wird empfohlen, sie unter foreach($ks as $k){…} zu platzieren.

Schritt sechs: Durch das oben Gesagte wurde die alphabetische Indizierung implementiert, es wird jedoch die Suchvorlage des Systems aufgerufen, die nicht für die alphabetische Indizierung geeignet ist. Daher müssen wir noch einen Schritt weiter gehen und eine neue Vorlage hinzufügen Unterstützung.

1. Ändern Sie /include/inc_arcsearch_view.php und ändern Sie den Konstruktor der Funktion __construct(). Für:

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”;
Nach dem Login kopieren

Das Ziel besteht darin, zu bestimmen, wann $searchtype==pytitle, die durch die globale Variable cfg_templets_pysearch definierte Vorlage aufzurufen.

2. Ändern Sie die Datei include/config_hand.php. Fügen Sie die globale Variable cfg_templets_pysearch hinzu.

//拼音搜索模板
$cfg_templets_pysearch = ‘pylist.htm’;
Nach dem Login kopieren

Dann können Sie die Vorlage pylist.htm im Vorlagenordner hinzufügen, um die Ergebnisse der alphabetischen Liste anzuzeigen.

Schritt 7, es ist noch nicht vorbei. Was passiert, wenn ich den Umfang der Anzeige einschränken möchte? Ich möchte beispielsweise nur Software oder eine bestimmte Spalte anzeigen, um einen Schritt weiter zu gehen.

Tatsächlich unterstützt die Suche viele Parameter, wie z. B. $typeid (Spaltennummer), $channeltype (Artikeltypnummer), $orderby (Sortiermethode) usw. Jetzt wissen Sie, was zu tun ist, oder?

Weiß ich noch nicht, hier ist ein Beispiel:

<a href=”/plus/search.php?keyword=a&searchtype=pytitle&typeid=2&$channeltype=3&$orderby=title”>A</a>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDreamweaver dedecms implementiert eine alphabetische Indexsuchfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!