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

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

Dec 27, 2019 pm 02:43 PM
織夢cms

織夢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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1250
24
織夢cms安全性怎麼樣 織夢cms安全性怎麼樣 Jul 27, 2023 pm 05:32 PM

織夢cms安全性相對較好,原因有:1、漏洞修復速度快;2、CSRF(跨站點請求偽造)保護;3、XSS(跨站腳本攻擊)保護;4、SQL注入保護;5、代碼審計。

織夢cms連接資料庫失敗怎麼辦 織夢cms連接資料庫失敗怎麼辦 Jul 20, 2023 pm 02:22 PM

織夢cms連接資料庫失敗解決方法:1、檢查資料庫配置,確保在織夢CMS的根目錄下的/data/config.php 檔案中正確設定了資料庫的相關資訊;2、測試資料庫連接,透過建立一個簡單的PHP腳本來測試資料庫連線是否成功;3、檢查資料庫伺服器狀態,在織夢CMS的根目錄下的/data/config.php 檔案中更換資料庫伺服器位址;4、檢查網路連線。

織夢CMS站群實作分享 織夢CMS站群實作分享 Mar 18, 2024 am 10:18 AM

織夢CMS站群實務分享近年來,隨著網路的快速發展,網站建置變得越來越重要。在建立多個網站時,站群技術成為了一個非常有效的方法。而在眾多網站建立工具中,織夢CMS憑藉其靈活性和易用性成為了不少站群愛好者的首選。本文將分享一些關於織夢CMS站群的實務經驗,以及一些具體的程式碼範例,希望能為正在探索站群技術的讀者提供一些幫助。 1.什麼是織夢CMS站群?織夢CMS

織夢cms系統有收費的嗎 織夢cms系統有收費的嗎 Aug 11, 2023 pm 01:57 PM

織夢cms系統沒有收費。織夢CMS是一款開源的內容管理系統,其核心程式碼是免費提供的,使用者可以免費下載最新版本的織夢CMS,並且還可以獲得相關的技術支援和文件。但在使用過程中,使用者可能需要購買額外的功能模組或主題模板,這些是收費的,購買這些收費的模組和模板,價格根據具體的功能和設計複雜度而定。

織夢CMS二級目錄打不開的原因分析 織夢CMS二級目錄打不開的原因分析 Mar 13, 2024 pm 06:24 PM

標題:解析織夢CMS二級目錄打不開的原因及解決方案織夢CMS(DedeCMS)是一款功能強大的開源內容管理系統,被廣泛應用於各類網站建設中。然而,有時在搭建網站過程中可能會遇到二級目錄無法開啟的情況,這給網站的正常運作帶來了困擾。在本文中,我們將分析二級目錄打不開的可能原因,並提供具體的程式碼範例來解決這個問題。一、可能的原因分析:偽靜態規則配置問題:在使用

織夢CMS二次開發秘技:解鎖個人化網站客製化技巧 織夢CMS二次開發秘技:解鎖個人化網站客製化技巧 Mar 28, 2024 pm 03:48 PM

織夢CMS是一款非常流行的網站建立系統,它的功能強大,介面友好,容易上手。但有時候,我們會發現要實現一些特殊的需求,光是它原本提供的功能可能有些力不從心。針對這種情況,我們可以進行二次開發,透過客製化程式碼來實現個人化的網站需求。本文將分享一些關於織夢CMS二次開發的秘籍,幫助你解鎖個人化網站客製化的技巧。 1.首頁輪播圖自訂需求描述:原本的織夢CMS首頁

織夢CMS資料庫檔案刪除注意事項 織夢CMS資料庫檔案刪除注意事項 Mar 13, 2024 pm 09:27 PM

標題:織夢CMS資料庫檔案刪除注意事項織夢CMS作為一款流行的網站建立工具,其資料庫檔案刪除是網站維護中經常遇到的問題之一。不正確的資料庫檔案刪除操作可能導致網站資料遺失或網站無法正常運作,因此,在進行資料庫檔案刪除操作時,我們必須格外謹慎。以下將介紹織夢CMS資料庫檔案刪除的注意事項,並提供一些具體程式碼範例,幫助大家正確進行資料庫檔案刪除操作。注意事項:備

織夢CMS刪除資料庫檔案操作指南 織夢CMS刪除資料庫檔案操作指南 Mar 13, 2024 pm 06:33 PM

織夢CMS(DedeCMS)是一款廣泛應用於網站建置的內容管理系統,提供了豐富的功能和靈活的客製化。然而,有時候我們需要刪除資料庫中的一些文件來清理空間或解決一些問題,本文將為大家介紹如何在織夢CMS中操作刪除資料庫文件,並提供具體的程式碼範例。第一步:備份資料庫在進行任何資料庫操作之前,請務必先備份資料庫以防止意外發生。可以透過phpMyAdmin或其他數

See all articles