織夢dedecms實現按照字母搜尋的實現方法

2021-09-06 06:05:24 字數 3026 閱讀 4063

目前織夢dedecms v5.7已正式發布,但在實際的使用環境中往往我們需要進行一些特定功能的實現,比如按照字母搜尋等,下面我們來說一下該功能是如何實現的,主要的方法就是提取發布資源中第乙個字母,儲存到資料表中,然後進行索引。

dedecms 基於php和mysql技術開發,可同時使用於windows、linux、unix平台,環境需求如下:

1、windows 平台:

iis/apache + php4/php5 + mysql3/4/5

如果在windows環境中使用,建議用dedecms提供的dedeampz套件以達到最佳使用效能。

2、linux/unix 平台

apache + php4/php5 + mysql3/4/5 (php必須在非安全模式下執行)

建議使用平台:linux + apache2.2 + php5.2 + mysql5.0

織夢版本為5.7 gbk 其他沒有測試

在進行本操作之前 要先備份資料庫

首先 要新增資料庫字段

alter table `dede_archives` add `fpy` varchar( 40 ) not null after `weight` ;

用於儲存標題的第乙個字母的拼音

開啟dede/templets/article_add.htm大概在136行 (上面)新增以下**提示是否儲存

儲存拼音

同理在article_edit.htm也需要新增

開啟dede/article_add.php 在102行以下新增$fpy=$f_py==1 ? str_replace('_','',getpinyin(stripslashes

($title),1)) : '';用於獲得標題的拼音 找到191行 ,對剛新建的字段進行賦值,相信大家都會的:

將原來的 $query = "insert into `dede_archives`

(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,sour

ce,litpic,pubdate,senddate,mid,voteid,notpost,description,keywords,filename,dutyadmin,weight) values

('$arcid','$typeid','$typeid2','$sortrank','$flag','$ismake','$channelid','$arcrank','$click','$money'

,'$title','$shorttitle','$color','$writer','$source','$litpic','$pubdate','$senddate','$adminid','$vot

eid','$notpost','$description','$keywords','$filename','$adminid','$weight');";

改為$query = "insert into dede_archives`

(id,typeid,typeid2,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color,writer,sour

ce,litpic,pubdate,senddate,mid,voteid,notpost,description,keywords,filename,dutyadmin,weight,fpy)

values

('$arcid','$typeid','$typeid2','$sortrank','$flag','$ismake','$channelid','$arcrank','$click','$money'

,'$title','$shorttitle','$color','$writer','$source','$litpic','$pubdate','$senddate',

'$adminid','$voteid','$notpost','$description','$keywords','$filename','$adminid','$weight','$fpy');";

你應該能看懂的。

到此 在你新增文章的時候 標題拼音會自動儲存的。

接下來 就要看search.php了

為了 呼叫方便 我寫了個標籤 只需要在呼叫的地方新增 (include/tablib) 新建letter.lib.php

<?php

if(!defined('dedeinc'))

function lib_letter(&$ctag,&$refobj)

return $letter;

}?>

最後也是最關鍵的一部 更改search.php 預設的是不能小於2個字元的

找到plus/search.php

將if(($keyword=='' || strlen($keyword)<2) && empty($typeid))

改為if($searchtype<>'pytitle')

}即可找到include/arc.searchview.class.php

首先要設定sql語句 函式getkeywordsql

找到if($this->searchtype=="title")else改為:

if($this->searchtype=="title")else if($this->searchtype=='pytitle')else

在此函式下 新增函式:

function getletter($num=26,$t,$k)

$letter.="".chr($i)." ";

}return $letter;

}作用就是 讓當前搜尋的字母 加亮顯示

設定search的底層模板的標籤 display函式

在 else if($tagname=="likewords")

下新增else if($tagname=='letter' and $this->searchtype=='pytitle')

到此 結束,哈哈,,其實也不是很難的。記住千萬要記得備份你原來的程式啊!

dedecms 織夢 整合discuz

所用版本 dedecms 5.7 discuz x2.5 sc utf8 如何完成dedecms模板系統與discuz論壇整合呢?這裡的整合指會員資訊,會員登陸 退出的同步 論壇資訊的引用 等等。首先,我們先來安裝織夢 dedecms 系統。然後,我們在 根目錄下建乙個bbs資料夾,將discuz ...

織夢dedecms自動編號

專欄入口下的欄目需要不同的顏色,我們這裡用到了自動編號,每個編號定義不同的顏色。我們先看一下自動編號的用法 1 簡介 自動編號屬性 autoindex和itemindex 在列表迴圈中自增的乙個編號,預設從0開始。在dedecms中以下三個標籤含有這個屬性。arclist 標籤下使用 field g...

織夢dedecms自動編號

專欄入口下的欄目需要不同的顏色,我們這裡用到了自動編號,每個編號定義不同的顏色。我們先看一下自動編號的用法 1 簡介 自動編號屬性 autoindex和itemindex 在列表迴圈中自增的乙個編號,預設從0開始。在dedecms中以下三個標籤含有這個屬性。arclist 標籤下使用 field g...