搜尋
首頁CMS教程DEDECMS織夢dedecms實現字母索引搜尋功能

織夢dedecms實現字母索引搜尋功能

DEDE系統帶「字母索引」功能 

實作方法如下 

第一步:首先必須修改資料庫結構,增加存放拼音的的欄位。                                       中中使用資料表,而新增動態以下是建立表格的SQL,僅供參考,紅色部分為新增的部分,可以用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;
第二步:取得文章標題的拼音首字母,並儲存到資料庫。

需要修改的檔案有:

article_add.php、article_add_action.php、article_edit.php、article_eidt_action.php

分別為新增文章和修改文章控制的四個檔案。

修改article_add.php為:

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

增加一個儲存拼音的選項。

修改article_edit.php為:

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

#道理同上。

修改article_add_action.php為:

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

透過系統函數GetPingyin取得文章標題的拼音首字母,並產生insert語句,保存標題拼音首字母到pytitle字段。

類似,修改article_eidt_action.php為:

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

第三步,修改首頁模板,或者其它需要使用這個功能的模板。

<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>
其中關鍵部分為keyword=字母&searchtype=pytitle。

第四步,我們透過search.php實現搜索,dedecms不允許小於3個字元的搜索,因此我們要修改它。

修改/plus/search.php文件,修改的部分為紅色:

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

第五步,修改並實現搜尋。

修改/include/inc_arcsearch_view.php,目標:#取得字母關鍵字,產生新的檢索條件,取得搜尋類型關鍵字($searchtype),呼叫不同的顯示模板。

好的,我們繼續修改,修改如下,紅色部分為新增或修改的部分。

修改function GetKeywordSql()函數,新增:

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

建議放在foreach($ks as $k){…}下面

第六步,透過上面,已經實現了按字母索引,但是調用的是系統的搜尋模板,不適合按照字母索引的特點,因此我們需要更進一步,增加新的模板支援。 1、修改/include/inc_arcsearch_view.php,修改function __construct()建構子。為:

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

目標是判斷當$searchtype==pytitle的時候,呼叫全域變數cfg_templets_pysearch定義的模板。

2、修改include/config_hand.php檔。增加全域變數cfg_templets_pysearch。

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

然後就可以在模板資料夾裡面新增pylist.htm模板,來顯示字母列表的結果了。

第七步,事情還沒結束。要是我希望限制顯示的範圍怎麼辦?例如我只想顯示軟體的,或是某個欄位目的這麼顯示,更進一步。

其實search支援很多參數,例如$typeid(欄位編號)、$channeltype(文章類型編號)、$orderby(排序方法)等,現在你知道怎麼辦了吧?

還不知道,以下是一個例子:

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

以上是織夢dedecms實現字母索引搜尋功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能