您现在的位置是:首页 > cms教程 > DedeCMS教程DedeCMS教程
dedecms系统按字母检索搜索功能的实现方法
柯河舍2024-05-25DedeCMS教程已有人查阅
导读DEDE系统带“字母索引”功能。实现方法如下(稍微麻烦一点):注意看红色文字。第一步:首先必须修改数据库结构,增加存放拼音的的字段。
DEDE系统带“字母索引”功能。实现方法如下(稍微麻烦一点):注意看红色文字。
第一步:首先必须修改数据库结构,增加存放拼音的的字段。
修改dede_archives表,新增pytitle,varchar(250),允许为空。下面是创建表的SQL,仅供参考,红色部分为新增的部分,可以用phpmyadmin直接修改表结构实现。
需要修改的文件有:
article_add.php、article_add_action.php、article_edit.php、article_eidt_action.php
分别为新增文章和修改文章控制的四个文件。
修改article_add.php为:
修改article_edit.php为:
道理同上。
修改article_add_action.php为:
类似,修改article_eidt_action.php为:
修改/plus/search.php文件,修改的部分为红色:
修改/include/inc_arcsearch_view.php,目标:
获得字母关键字,生成新的检索条件,获取搜索类型关键字($searchtype),调用不同的显示模板。
好的,我们继续修改,修改如下,红色部分为新增或者修改的部分。
修改function GetKeywordSql()函数,新增:
第六步,通过上面,已经实现了按字母索引,但是调用的是系统的搜索模板,不适合按照字母索引的特点,因此我们需要更进一步,增加新的模板支持。注意下面的co n s是连着的,由于织梦论坛禁用o n s,所以分开来写了。
1、修改/include/inc_arcsearch_view.php,修改function __co n struct()构造函数。为:
2、修改include/config_hand.php文件。增加全局变量cfg_templets_pysearch。
第七步,事情还没结束呢。要是我希望限制显示的范围怎么办?例如我只想显示软件的,或者某个栏目的这么显示,更进一步。
其实search支持很多参数,例如$typeid(栏目编号)、$channeltype(文章类型编号)、$orderby(排序方法)等,现在你知道怎么办了吧?还不知道,下面是一个例子:
第一步:首先必须修改数据库结构,增加存放拼音的的字段。
修改dede_archives表,新增pytitle,varchar(250),允许为空。下面是创建表的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" class="np">
推荐
<input name="isbold" type="checkbox" id="isbold" value="5" class="np">
加粗
<input name="isjump" type="checkbox" id="isjump" value="1" onClick="ShowUrlTr()" class="np">
跳转网址
<input name="upinyin" type="checkbox" id="upinyin" class="np" value="1" checked="checked">保存拼音 </td>
增加一个保存拼音的选项。修改article_edit.php为:
<td> <input name="iscommend" type="checkbox"id="iscommend" value="11" class="np"<?phpif($arcRow["iscommend"]>10) echo " checked";?>>
推荐
<input name="isbold" type="checkbox" id="isbold" value="5"class="np"<?php if($arcRow["iscommend"]==5||$arcRow["iscommend"]==16)echo " checked";?>>
加粗
<input name="isjump" onClick="ShowUrlTrEdit()"type="checkbox" id="isjump" value="1" class="np"<?php echo$arcRow["redirecturl"]=="" ? "" : " checked";?>>
跳转网址
<input name="upinyin"type="checkbox" id="upinyin" class="np" value="1"<?phpif($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','$typeid2','$sortrank','$iscommend','$ismake','$channelid',
'$arcrank','0','$money','$title','$shorttitle','$color','$writer','$source','$litpic',
'$pubdate','$senddate','$arcatt','$adminID','0','$description','$keywords','$templet','$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> 中文按声母排列:<ahref="/plus/search.php?keyword=a&searchtype=pytitle"& gt;A</a> -<ahref="/plus/search.php?keyword=b&searchtype=pytitle">B</a> -<ahref="/plus/search.php?keyword=c&searchtype=pytitle">C</a> -<ahref="/plus/search.php?keyword=d&searchtype=pytitle">D</a> -<ahref="/plus/search.php?keyword=e&searchtype=pytitle">E</a> -<ahref="/plus/search.php?keyword=f&searchtype=pytitle">F</a> -<ahref="/plus/search.php?keyword=g&searchtype=pytitle">G</a> -<ahref="/plus/search.php?keyword=h&searchtype=pytitle">H</a> -<ahref="/plus/search.php?keyword=j&searchtype=pytitle">J</a> -<ahref="/plus/search.php?keyword=k&searchtype=pytitle">K</a> -<ahref="/plus/search.php?keyword=l&searchtype=pytitle">L</a> -<ahref="/plus/search.php?keyword=m&searchtype=pytitle">M</a> -<ahref="/plus/search.php?keyword=n&searchtype=pytitle">N</a> -<ahref="/plus/search.php?keyword=o&searchtype=pytitle">O</a> -<ahref="/plus/search.php?keyword=p&searchtype=pytitle">P</a> -<ahref="/plus/search.php?keyword=q&searchtype=pytitle">Q</a> -<ahref="/plus/search.php?keyword=r&searchtype=pytitle">R</a> -<ahref="/plus/search.php?keyword=s&searchtype=pytitle">S</a> -<ahref="/plus/search.php?keyword=t&searchtype=pytitle">T</a> -<ahref="/plus/search.php?keyword=w&searchtype=pytitle">W</a> -<ahref="/plus/search.php?keyword=x&searchtype=pytitle">X</a> -<ahref="/plus/search.php?keyword=y&searchtype=pytitle">Y</a> -<ahref="/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){...}下面第六步,通过上面,已经实现了按字母索引,但是调用的是系统的搜索模板,不适合按照字母索引的特点,因此我们需要更进一步,增加新的模板支持。注意下面的co n s是连着的,由于织梦论坛禁用o n s,所以分开来写了。
1、修改/include/inc_arcsearch_view.php,修改function __co n struct()构造函数。为:
if($this->SearchType=="pytitle") $tempfile =$GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/".$GLOBALS['cfg_templets_pysearch'];
else $tempfile = $GLOBALS['cfg_basedir'].$GLOBALS['cfg_templets_dir']."/".$GLOBALS['cfg_df_style']."/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(排序方法)等,现在你知道怎么办了吧?还不知道,下面是一个例子:
<ahref="/plus/search.php?keyword=a&searchtype=pytitle&typeid=2&$channeltype=3&$orderby=title">A</a>
本文标签:
很赞哦! ()
相关教程
- dedecms系统实现树形分类导航方法
- 织梦dedecms系统的安装方法步骤教程
- 织梦dedecms系统channel指定id后无效当前样式current
- dedecms系统模板标签代码Pagetitle标记功能使用说明
- dedecms系统后台验证码图片不显示的几种解决方法
- 织梦dedecms系统sql怎么调用获取文章链接地址
- 织梦dedecms系统列表页调用TAG标签带上链接的写法
- dedecms系统模板标签代码Pagebreak标记语法说明
- dedecms系统模板标签代码Flink标记等同friendlink功能说明
- dedecms系统TAG标签伪静态设置教程
- dedecms系统列表页调用tag标签同时带上链接的代码实例
- 织梦dedecms系统后台安全提示怎么去除
图文教程
织梦调用文章简介实现分页
今天在论坛看不到一个修改织梦的实例,看了半天没搞清楚设计者的意图。现在发过来,大家一起参考下,或许对你的网页设计有所启示。
织梦实现游客输入昵称进行评论的实现方法
在织梦模板5.5中,允许游客输入自己的昵称进行评论,如何实现呢?以前5.3的时候有人发过,看了一下,借鉴他的东西,重新发布一下5.5版本的,方便一下菜鸟们。
dede织梦cms关键字不在keyword中设置实现內链的方法
dedecms关键词內连维护默认是需要和发布文章时匹配通过keyword中设置的关键字作为条件替换来完成的,今天分享的是不通过keyword中设置的关键字作为条件替换
dede织梦安装时表前缀是什么?
织梦DEDECMS安装的时候出现了表前缀,***_ 什么是表前缀?怎么查看安装时的表前缀?问题描述: 什么是表前缀?怎么查看安装时的表前缀?
相关源码
-
(PC+WAP)蓝色弹簧针厂家探针充电连接器设备网站源码下载基于PbootCMS开发的响应式模板,为弹簧针、探针连接器等电子元器件企业设计。模板采用工业蓝主色调,突出产品技术特性,支持多维度展示连接器产品的规格参数与应用场景,帮助制造企业建立专业线上展示平台。查看源码 -
(自适应响应式)蓝色律师事务所法务团队网站pbootcms模板为律师事务所和法律服务机构打造的专业网站模板,展现法律专业性与权威性,手工编写标准DIV+CSS代码,结构清晰优化,确保高效运行,自动适配电脑、平板和手机等各类设备,提供更好浏览体验查看源码 -
pbootcms网站模板响应式全屏旅游景区网站源码本模板为风景民宿、旅游景区等企业设计,基于PbootCMS内核开发,具备响应式布局与专业SEO优化功能,助力企业低成本高效获客。以下是核心特点:查看源码 -
pbootcms网站网络公司个人作品展示类网站源码(自适应)为网站建设公司、网络服务企业打造的响应式门户解决方案,基于PbootCMS内核深度开发。采用前沿自适应架构,无缝适配手机端交互与PC端展示需求。查看源码 -
(自适应)平面设计网络工作室个人作品展示网站模板免费下载基于PbootCMS内核开发的响应式网站模板,为设计工作室、创意机构打造的作品展示解决方案。通过模块化布局与极简交互设计,呈现设计作品的视觉细节,支持作品分类、案例解析等多维度展示方式。查看源码 -
自适应车行汽车租赁二手车行业企业网站模板为汽车租赁与二手车交易场景深度优化,采用PbootCMS内核开发,聚焦车辆展示、租赁流程与服务介绍三大核心模块。响应式布局确保PC与移动端数据实时同步,后台一键管理车辆信息查看源码
| 分享笔记 (共有 篇笔记) |
大家在看
织梦cms收费哪几款cms可以免费商用?本栏推荐
相关标签
大家喜欢
- 织梦dedecms内容页arclist标签的当前文章标题高亮的方法
- dede织梦提示Fatal error: Call to a member function GetInnerText()
- dedecms织梦enums联动数据nativeplace.php格式化函数示例代码
- dedecms文章内容页怎么插入广告
- dedecms自定义表单提交之后发送邮件到站长邮箱的方法
- 织梦dedecms首页及列表页实现显示文章作者头像的方法
- deedcms畅言“系统未绑定畅言账号,我们将自动为您分配一个初始账号”
- 让织梦cms的附件按月保存
- 织梦dedecms列表页文章有缩略图则显示无缩略图不显示的方法
- 怎么调用织梦cms文档中的所有图片