织梦搜索页面模板怎么修改
search.htm
搜索结果
站内搜索
搜索页面模板文件位置
织梦的站内搜索页面对应模板文件 templets/你的风格/search.htm。如果该文件不存在,织梦会回退到 templets/default/search.htm。访问 URL 通常是:
https://www.example.com/search.php?q=关键词
https://www.example.com/plus/search.php?q=关键词
搜索效果参考
-
织梦模板怎么引入公共头部详细讲解织梦CMS模板中如何引入公共头部文件,含三种常用方法...
-
织梦模板不更新是什么原因织梦CMS修改模板后前台不更新的常见原因排查清单与解决步骤...
-
织梦模板缓存如何关闭织梦CMS模板缓存关闭与开启的配置方法,含tplcache目录清理...
核心标签:dede:list
搜索页用 {dede:list} 输出搜索结果,注意这里不是 arclist:
{dede:list pagesize='10'}
<li class="result-item">
<a href="[field:arcurl/]" class="title">[field:title/]</a>
<p class="snippet">[field:description function="cn_substr(@me,180)"/]</p>
<span class="meta">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
</li>
{/dede:list}
显示搜索关键词
用 {dede:global name='keyword' function='RemoveXSS(@me)'/} 显示用户输入的关键词:
<h1>关于「{dede:global name='keyword' function='RemoveXSS(@me)'/}」的搜索结果</h1>
<p>共找到 {dede:global name='totalnum'/} 条结果</p>
关键词高亮
搜索结果中让关键词高亮显示,需用 function 替换:
[field:title function="preg_replace('/('.str_replace(' ','|',$GLOBALS['keyword']).')/i',
'<span class=\"hl\">\\\\1</span>', @me)"/]
或简化版(仅单个关键词):
[field:title runphp='yes']
$kw=$GLOBALS['keyword'];
@me=preg_replace("/($kw)/i", '<mark>$1</mark>', @me);
[/field:title]
CSS 高亮样式:
.hl, mark{
background:#fde68a;color:#7c2d12;padding:0 2px;
}
搜索分页
搜索结果分页用 {dede:pagelist}:
<div class="pagination">
{dede:pagelist listsize='3' listitem='index,pre,pageno,next,end'/}
</div>
无结果时的友好提示
当搜索结果为空时,给出推荐内容或搜索建议,提升体验:
{dede:list pagesize='10'}
...正常结果...
{/dede:list}
{dede:php}
if($GLOBALS['totalnum']==0){
echo '<div class="no-result">
<p>没有找到「'.$GLOBALS['keyword'].'」相关的内容</p>
<p>试试:<a href="/search.php?q=模板">模板</a>
<a href="/search.php?q=SEO">SEO</a></p>
</div>';
}
{/dede:php}
搜索框美化
<form action="/search.php" method="get" class="search-form">
<input type="text" name="q" placeholder="输入关键词..."
value="{dede:global name='keyword' function='RemoveXSS(@me)'/}">
<button type="submit">搜索</button>
<input type="hidden" name="searchtype" value="titlekeyword">
</form>
searchtype 取值:
titlekeyword:标题+关键词(默认)title:仅标题keyword:仅关键词
注意:搜索关键词必须用
RemoveXSS 或 htmlspecialchars 转义,否则会被注入 XSS 代码,造成安全风险。
限定搜索栏目
搜索框加隐藏字段限定栏目:
<input type="hidden" name="typeid" value="5">
<!-- 或让用户选择 -->
<select name="typeid">
<option value="0">全站</option>
<option value="1">新闻</option>
<option value="2">产品</option>
</select>
搜索结果 SEO 优化
- 搜索结果页加
noindex,follow,避免被收录形成大量低质页。 - title 写「关键词 - 站名」格式,提升点击率。
- 空结果页返回 404 或 noindex,避免软 404。
- 限制搜索频率,防止被恶意刷接口。
- 搜索结果 URL 伪静态化,更友好。
搜索页伪静态
nginx 规则:
rewrite ^/search/(.+)\.html$ /search.php?q=$1 last;
搜索表单 action 改为 /search/,提交后 URL 形如 /search/织梦模板.html。
常见问题
搜索结果为空但有相关文章
1) 文章未生成 HTML;2) 关键词分词问题;3) searchtype 设置过严。
搜索中文乱码
检查模板和数据库编码是否 UTF-8;URL 编码用 urlencode。
搜索很慢
给 dede_archives 表的 title、keywords 字段加 FULLTEXT 索引,或使用 Elasticsearch 替代。
行动建议
立刻打开你的搜索页,搜索一个常见词看看效果。如果还是织梦默认样式,花半小时美化一下,加上高亮和分页。在 robots.txt 中屏蔽 /search.php 防止低质页被收录。搜索框是用户主动表达需求的地方,把这块体验做好,用户停留时长和 PV 都会有明显提升,也是发现长尾词机会的重要入口。