搜索怎么设置默认是发布时间进行排序呢?
像图片这样,想搜索默认就是以发布时间降序排序,但默认却不是这样,搜索出来的帖子发布的时间排序都是乱的
我知道答案 回答被采纳将会获得5 金币 + 1 金币 已有0人回答 要实现Discuz论坛搜索默认按发布时间降序排序,可通过以下三种方式实现:
1. 模板层修改(推荐)
找到模板文件:
template/您的风格/search/forum.htm
在表单内(约第5行)增加:
<input type="hidden" name="orderby" value="dateline" />
<input type="hidden" name="order" value="desc" />
2. 程序层修改
打开 source/module/search/search_forum.php
找到:
$orderby = in_array($_GET['orderby'], array('dateline', 'replies', 'views')) ? $_GET['orderby'] : '';
修改为:
$orderby = isset($_GET['orderby']) && in_array($_GET['orderby'], array('dateline', 'replies', 'views')) ? $_GET['orderby'] : 'dateline';
3. URL参数重写
在搜索按钮的链接中加入参数:
<a href="search.php?mod=forum&orderby=dateline&order=desc">高级搜索</a>
注意事项:
1. 修改前请备份原始文件
2. 使用DIY模式修改模板可避免升级覆盖
3. 如需同时影响手机版,需同步修改mobile模板文件
4. 修改后更新缓存(后台 -> 工具 -> 更新缓存)
这三种方法可单独使用也可组合使用,建议优先采用模板层修改方案。修改后搜索结果的URL中将自动包含search.php?mod=forum&orderby=dateline&order=desc参数,确保排序逻辑生效。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 要在Discuz论坛中设置搜索默认以发布时间降序排序,你可以通过修改模板文件或插件来实现。以下是具体的步骤:
### 方法一:通过修改模板文件
1. **找到搜索模板文件**:
搜索功能的相关模板文件通常位于 `template/default/forum/` 目录下,具体文件名为 `forum_search.htm`。
2. **修改搜索表单**:
在 `forum_search.htm` 文件中,找到搜索表单的部分。通常搜索表单的代码类似于:
<form method="get" action="forum.php" id="searchform">
<input type="hidden" name="mod" value="search">
<input type="hidden" name="searchid" value="{$searchid}">
<input type="hidden" name="orderby" value="lastpost">
<input type="hidden" name="ascdesc" value="desc">
</form>
你需要将 `orderby` 的值从 `lastpost` 改为 `dateline`,并将 `ascdesc` 的值设置为 `desc`,以确保搜索结果按发布时间降序排列。
修改后的代码:
<form method="get" action="forum.php" id="searchform">
<input type="hidden" name="mod" value="search">
<input type="hidden" name="searchid" value="{$searchid}">
<input type="hidden" name="orderby" value="dateline">
<input type="hidden" name="ascdesc" value="desc">
</form>
3. **保存并上传**:
保存修改后的 `forum_search.htm` 文件,并将其上传到服务器上替换原来的文件。
### 方法二:通过插件实现
如果你不想直接修改模板文件,可以通过编写一个简单的插件来实现这个功能。
1. **创建插件**:
在 `source/plugin/` 目录下创建一个新的插件目录,例如 `search_orderby_dateline`。
2. **编写插件代码**:
在插件目录下创建一个 `plugin.php` 文件,并添加以下代码:
<?php
if (!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class plugin_search_orderby_dateline {
function global_header() {
global $_G;
if ($_G['mod'] == 'search' && !isset($_GET['orderby'])) {
$_GET['orderby'] = 'dateline';
$_GET['ascdesc'] = 'desc';
}
}
}
?>
3. **安装插件**:
将插件目录上传到 `source/plugin/` 目录下,然后在Discuz后台的插件管理中安装并启用该插件。
### 方法三:通过修改搜索链接
如果你只是想临时修改某个搜索链接的排序方式,可以直接在搜索链接中添加 `orderby=dateline&ascdesc=desc` 参数。例如:
forum.php?mod=search&orderby=dateline&ascdesc=desc
### 总结
通过以上方法,你可以轻松地将Discuz论坛的搜索功能默认设置为按发布时间降序排序。如果你对代码不熟悉,建议使用插件方式来实现,这样可以避免直接修改模板文件带来的风险。
如果你有更多问题,欢迎随时访问DZ插件网(https://www.dz-x.net/)获取更多帮助和资源。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]