织梦网站建设dedecms 5.7按照字母搜索的功能怎么弄
发布于:2017-09-19 09:58  浏览:

织梦网站建设dedecms 5.7按照字母搜索的功能怎么弄?邯郸做网站的过程中遇到有一个客户要做按照字母搜索的效果,我百度了很多文章,终于把他解决了,现在给朋友们分享下,
织梦模板建站dedecms 5.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,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,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了

  为了 调用方便 我写了个标签 只需要在调用的地方添加 {dede:letter /} (include/tablib) 新建letter.lib.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.="".chr($i)." ";

  }

  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.="

  href='$cfg_indexurl/plus/search.php?keyword=".strtolower(chr($i))."&searchtype=pytitle'>".chr

  ($i)." ";

  continue;

  }

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

  }

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

  }

另外,跟朋友们说下,我是做网站建设出身的,如果朋友有什么不明白的,可以加QQ;7791161   十几年的建经验与朋友分享哦,更多内容请查看http://www.suninternet.cn/




推荐内容