首先 要添加数据库字段:
ALTER TABLE `dede_archives` ADD `fpy` VARCHAR( 40 ) NOT NULL AFTER `weight` ;
用于保存标题的第一个字母的拼音打开dede/templets/article_add.htm大概在136行 (</td>上面)添加以下代码:
<input name="F_PY" type="checkbox" id="S_PY" class="np" value="1" checked="checked">
保存拼音,同理在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,source,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','$voteid','$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,source,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了,为了调用方便 我写了个标签 只需要在调用的地方添加 {dede:letter /} (include/tablib) 新建:letter.lib.php
<?php
if(!defined('DEDEINC'))
{
exit("Request Error!");
}
function lib_letter(&$ctag,&$refObj)
{
global $dsql,$sqlCt,$cfg_soft_lang,$cfg_indexurl;
$attlist="letter|A,row|26";
FillAttsDefault($ctag->CAttribute->Items,$attlist);
extract($ctag->CAttribute->Items, EXTR_SKIP);
$letter='';
$le_end=64+$row;
for($i=65;$i<=$le_end;$i++){
$letter.="<a href='$cfg_indexurl/plus/search.php?keyword=".strtolower(chr
($i))."&searchtype=pytitle'>".chr($i)."</a> ";
}
return $letter;
}
?>
最后也是最关键的一部 更改search.php 默认的是不能小于2个字符的,找到plus/search.php,将
if(($keyword=='' || strlen($keyword)<2) && empty($typeid))
{
ShowMsg('关键字不能小于2个字节!','-1');
exit();
}
改为:
if($searchtype<>'pytitle'){
if(($keyword=='' || strlen($keyword)<2) && empty($typeid))
{
ShowMsg('关键字不能小于2个字节!','-1');
exit();
}
}
即可,找到include/arc.searchview.class.php,首先要设置sql语句 函数GetKeywordSql,找到:
if($this->SearchType=="title"){
$kwsqls[] = " arc.title LIKE '%$k%' ";
}else{
$kwsqls[] = " CONCAT(arc.title,' ',arc.writer,' ',arc.keywords) LIKE '%$k%' ";
}
改为:
if($this->SearchType=="title"){
$kwsqls[] = " arc.title LIKE '%$k%' ";
}else if($this->SearchType=='pytitle'){
$kwsqls[] = " CONCAT(arc.title,' ',arc.keywords,' ',arc.fpy) LIKE '%$k%' ";
}else{
$kwsqls[] = " CONCAT(arc.title,' ',arc.writer,' ',arc.keywords) LIKE '%$k%' ";
}
在此函数下 添加函数:
function Getletter($num=26,$t,$k){
global $cfg_indexurl;
$le_end=64+$num;
for($i=65;$i<=$le_end;$i++){
if(ord(strtoupper($k))==$i){
$letter.="<a style='background:#000;color:#fff'
href='$cfg_indexurl/plus/search.php?keyword=".strtolower(chr($i))."&searchtype=pytitle'>".chr
($i)."</a> ";
continue;
}
$letter.="<a href='$cfg_indexurl/plus/search.php?keyword=".strtolower(chr
($i))."&searchtype=pytitle'>".chr($i)."</a> ";
}
return $letter;
}
作用就是让当前搜索的字母 加亮显示,设置search的底层模板的标签 display函数,在
else if($tagname=="likewords")
{
$this->dtp->Assign($tagid,$this->GetLikeWords($ctag->GetAtt('num')));
}
下添加
else if($tagname=='letter' and $this->SearchType=='pytitle'){
$this->dtp->Assign($tagid,$this->Getletter($num=26,$this->SearchType,$this->Keyword));
}
到此修改结束,有兴趣的朋友可以去试着改一下。
本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!