dedecms的搜索页模板文件默认位于templets/default/search.htm,若更改过模板风格则路径相应变化;修改搜索结果显示需编辑该文件中的{dede:list}循环标签,调整[field:title /]等字段并配合html与css控制样式;分页由{dede:pagelist /}标签控制,可修改其属性调整显示元素和数量;排序需在plus/search.php中修改sql语句的order by子句实现;搜索无结果时可通过添加{dede:list noinfo='yes'}标签块显示自定义提示内容,提升用户体验。

DEDECMS的搜索页模板调整,说白了,核心就是找到对的那个文件,然后理解它里面的标签逻辑。这事儿不复杂,但如果你是初次接触,可能会觉得有点摸不着头脑,因为它不像有些框架那样直观。基本上,就是改模板文件,调整输出结构和样式。
解决方案
要修改DEDECMS的搜索页模板和调整搜索结果显示,你需要关注两个主要部分:一个是模板文件本身,通常是
search.htm;另一个是数据处理逻辑,它在
plus/search.php里。虽然我们主要操作的是
.htm文件,但理解
search.php如何组织数据对高级定制很有帮助。
首先,定位你的模板文件。默认情况下,它位于
templets/default/search.htm。如果你使用了自定义模板,那就在你当前主题的目录下找。打开这个
search.htm文件,你会看到DEDECMS特有的标签。这些标签负责循环输出搜索结果,比如文章标题、链接、简介等等。
修改的步骤通常是:
-
备份: 动任何文件前,先备份
search.htm
和plus/search.php
,这是黄金法则。 -
定位循环标签: 在
search.htm
里找到负责遍历搜索结果的标签,通常是{dede:list}或类似的自定义标签。这个标签内部定义了每一条搜索结果的显示方式。 -
调整显示字段: 在循环标签内部,你可以看到
[field:title /]
、[field:arcurl /]
、[field:description /]
等,它们分别代表标题、链接、描述。你想显示什么,就把对应的[field:xxx /]
加进去;不想显示的,就删掉。 -
修改HTML结构和CSS: 在这些字段外面包裹你想要的HTML标签(比如
div
、h2
、p
),然后通过外部CSS文件或内联样式来控制它们的布局、字体大小、颜色等。 - 更新缓存: 修改完文件后,记得去DEDECMS后台清除缓存,有时还需要重新生成HTML。
DEDECMS搜索页模板文件具体在哪里?
DEDECMS的搜索页模板文件,通常默认路径是
templets/default/search.htm。但这个“默认”二字,其实有点学问。如果你在后台“系统” -> “系统基本参数” -> “站点设置”里更改过“默认模板风格”,那么你的
search.htm文件就应该在
templets/你的新模板风格名称/search.htm这个路径下。
这里有个小细节,很多人会混淆:
plus/search.php和
search.htm。
search.php是处理搜索请求、从数据库里捞取数据并把数据传递给模板的“幕后英雄”,它决定了搜索的逻辑和数据源。而
search.htm才是我们肉眼看到、负责把这些数据排版显示出来的“舞台”。所以,改界面显示,直接找
search.htm准没错。如果你想改搜索逻辑,比如搜索范围、排序方式,那才需要动
search.php,但那通常是更高级别的定制了,风险也更大。
如何修改DEDECMS搜索结果的显示字段和样式?
修改DEDECMS搜索结果的显示字段和样式,核心操作都在
search.htm这个模板文件里。当你打开它,会看到类似这样的结构:
{dede:list orderby='pubdate' typeid='' row='10'}
- [field:title /]
- [field:description function='cn_substr(@me,120)' /]
这里面,
{dede:list}和{/dede:list}就是循环输出每条搜索结果的区域。
-
显示字段调整:
[field:title /]
:文章标题。[field:arcurl /]
:文章链接。[field:description /]
:文章简介。你可以通过function='cn_substr(@me,120)'
来截取字数,比如这里截取120个字符。[field:pubdate /]
:发布时间。同样可以用function
来格式化时间显示。[field:click /]
:文章点击量。- 如果你想显示其他字段,比如自定义字段,只要确保该字段在内容模型里定义了,并且
search.php
能正确查询到,就可以用[field:你的自定义字段名 /]
来调用。比如,如果你有个自定义字段叫author
,那就写[field:author /]
。
-
样式调整:
-
HTML结构: 在
[field:xxx /]
外面包裹你想要的HTML标签,比如用包裹标题,用
包裹描述,用
包裹发布时间等。
-
CSS: 给这些HTML标签添加
class
或id
,然后在你的CSS文件(通常是templets/default/style/dedecms.css
或你自定义的CSS文件)中定义样式。比如,上面的例子中,我给每个搜索结果项加了search-item
的dl
,给描述加了description
的dd
,这样你就可以在CSS里写:.search-item { margin-bottom: 20px; padding-bottom: 10px; border-bottom: 1px dashed #eee; } .search-item dt a { font-size: 18px; color: #337ab7; text-decoration: none; } .search-item .description { color: #666; line-height: 1.6; margin-top: 5px; } .search-item .meta { font-size: 12px; color: #999; margin-top: 8px; }通过这种方式,你可以完全掌控搜索结果的视觉呈现。
-
HTML结构: 在
DEDECMS搜索结果分页和排序如何调整?
DEDECMS搜索结果的分页和排序调整,涉及到不同的层面。分页相对简单,而排序则需要更深入的了解。
-
分页调整: 分页通常由
search.htm
模板文件中的{dede:pagelist /}标签控制。比如:{dede:pagelist listitem="info,index,end,pre,next,pageno,option" listsize="5"/}这个标签负责生成分页链接。你可以通过修改
listitem
属性来控制分页显示哪些元素(如信息、首页、末页、上一页、下一页、页码、跳转选项),listsize
则控制显示多少个页码链接。样式方面,分页的HTML结构也会生成相应的class
,你可以在CSS里进行美化。比如,默认的分页样式可能在dedecms.css
里有定义,你可以覆盖它。 -
排序调整: DEDECMS前台搜索页的排序,如果你想让用户选择不同的排序方式(比如按发布时间、按点击量),这在
search.htm
模板里是无法直接实现的。因为搜索结果的排序逻辑,是在plus/search.php
这个PHP文件里处理的。它内部会构建SQL查询语句,其中包含ORDER BY
子句。如果你需要更改默认的排序方式,比如让搜索结果默认按点击量降序排列,你就得去修改
plus/search.php
文件。找到类似构建SQL查询的部分,然后修改ORDER BY
子句。例如,将ORDER BY arc.id DESC
改为ORDER BY arc.click DESC
。注意: 直接修改
plus/search.php
需要谨慎,因为这涉及到核心逻辑。一旦改错,可能导致搜索功能异常。修改前务必备份,并且要对PHP和SQL有基本的理解。通常情况下,如果只是简单的模板和样式调整,不需要动search.php
。但如果你需要复杂的排序或筛选功能,那就没办法了,得深入到代码层面。
DEDECMS搜索结果为空时如何提示用户?
当DEDECMS搜索结果为空时,给用户一个友好的提示是非常重要的。这可以提升用户体验,避免用户感到困惑。实现这个功能,主要还是在
search.htm模板文件里通过DEDECMS的条件判断标签来完成。
DEDECMS提供了一个
[field:nodata runphp='yes']的标签,当没有数据时,它内部的代码就会执行。但更常用的方式是结合
{dede:list}标签的特性。
你可以这样处理:
{dede:list orderby='pubdate' typeid='' row='10'}
- [field:title /]
- [field:description function='cn_substr(@me,120)' /]
这里使用了两个
{dede:list}标签。第一个是正常的搜索结果循环。第二个{dede:list noinfo='yes'}是一个非常巧妙的用法,它表示“当没有信息(即没有搜索结果)时,显示其内部的内容”。
在
no-results-message这个
div里,你可以放入任何你想要提示用户的内容,比如:
- 提示语: “抱歉,没有找到相关内容。”
-
用户输入的关键词: 可以用
{dede:global.keyword /}来显示用户刚才搜索的词,让提示更个性化。 - 建议: 给出一些建议,比如检查错别字、尝试其他关键词、或者引导用户去其他页面(如首页、分类页)。
这样,当搜索结果为空时,用户就能看到一个清晰、友好的提示,而不是一片空白或错误信息,这无疑会大大提升他们的使用体验。










