Dedecms模糊查询
一、Dedecms模板标签中的SQL及LIKE模糊查询使用
在Dedecms中,我们常会用到{dede:sql}
标签来进行SQL查询,在使用变量时,例如我们要在dede_archives表中搜索作者为指定变量的记录,如变量为$writer,那么语句如下:
{dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"}
这是比较简单和常用的方式,但有时我们需要进行模糊搜索匹配的标题(使用like和%),按照上述方法应该这样写:
{dede:sql sql="SELECT * FROMdede_archives
WHEREtitle
like '%~title~%' "}
但是这样会报错,编译的结果是select * from dede_archives where title like ‘%’$title’%’,造成SQL语句错误,多出了单引号,后来发现是SQL语句的规则问题,所以需要修改include/taglib/sql.lib.php
文件。
二、修改sql.lib.php文件
1、复制并重命名文件:将include/taglib/sql.lib.php
文件复制并重命名为likesql.lib.php
。
2、修改函数名:将第32行中的function lib_sql(&$ctag,&$refObj)
修改为function lib_likesql(&$ctag,&$refObj)
。
3、修改替换规则:将第48行中的$sql = str_replace($conditions[0][$key], "'".addslashes($refObj>Fields[$value])."'", $sql);
修改为$sql = str_replace($conditions[0][$key], addslashes($refObj>Fields[$value]), $sql);
。
修改完成后,调用标签改为:
{dede:likesql sql="SELECT * FROMdede_archives
WHEREtitle
like '%~title~%' "}
三、织梦CMS高级搜索功能
织梦CMS默认的高级搜索页面是/plus/advancedsearch.php
,它是模糊搜索并且会出现多条结果,如果需要修改为单条信息搜索,可以在后台核心模型管理中增加字段,比如增加身份证字段,然后返回模型管理,找到模型后面的放大镜图标,点击一下,下面模板选择,默认是利用官方默认模板中的advancedsearch.htm模板。
四、Dedecms v5.7 likesgpage&likepage 单页文档调用
在Dedecms v5.7中,likesgpage和likepage标签用于单页文档调用,这些标签的适用范围是单页文档模板,系统默认为singlepage.htm,基本语法如下:
{dede:likespage row=''/}
参数说明:row = ‘8’表示调用条数,底层模板字段包括aid, title, url等。
五、Dedecms批量添加TAG标签
很多人有手动填写TAG标签的烦恼,尤其是发布过的文章太多,使用插件可以很好地解决这个问题,可以检索整站文章标题含有某个关键词,然后给带有该关键词的文章批量插入多个TAG标签,已存在的TAG标签不会重复插入。
六、常见问题与解答
1、Q1: 如何在Dedecms中使用LIKE模糊查询时避免SQL语句错误?
A1: 为了避免SQL语句错误,可以通过修改include/taglib/sql.lib.php
文件来实现,具体步骤包括复制并重命名文件、修改函数名和替换规则。
2、Q2: 如何在Dedecms中实现单条信息搜索?
A2: 在后台核心模型管理中增加字段,比如增加身份证字段,然后返回模型管理,找到模型后面的放大镜图标,点击一下,下面模板选择,默认是利用官方默认模板中的advancedsearch.htm模板。
通过以上内容,可以更好地理解和使用Dedecms的模糊查询功能,提高网站数据管理的灵活性和用户体验。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/98353.html