在织梦DedeCms中,列表页的分页功能是一个常见的需求,为了提升用户体验,我们可以通过输入数字直接跳转到指定的分页,本文将详细讲解如何在织梦DedeCms列表页实现这一功能,并提供相关代码示例和FAQs。
在开始之前,我们需要确保以下几点:
1、织梦DedeCms已安装并正常运行:确保你的网站已经搭建好,并且能够正常访问。
2、模板文件准备:找到需要修改的列表页模板文件,通常位于/templets/default/list_***.htm
。
3、了解分页参数:织梦DedeCms的分页参数通常是p
,代表当前页数。
1. 添加输入框和提交按钮
我们需要在列表页模板文件中添加一个输入框和一个提交按钮,打开你的列表页模板文件(例如list_article.htm
),并在适当位置添加以下代码:
<form action="" method="get">
<input type="text" name="p" id="pageNumber" placeholder="输入页码" style="width: 50px;">
<input type="submit" value="跳转">
</form>
这段代码创建了一个表单,包含一个文本输入框和一个提交按钮,用户在输入框中输入想要跳转的页码后,点击提交按钮即可。
2. 使用JavaScript进行验证
为了提高用户体验,我们可以使用JavaScript对输入的页码进行简单的验证,确保用户输入的是有效的数字,在上述表单代码之后添加以下JavaScript代码:
<script type="text/javascript">
document.getElementById('pageNumber').addEventListener('keypress', function(event) {
if (event.key === 'Enter') {
event.preventDefault();
this.form.submit();
}
});
document.querySelector('form').addEventListener('submit', function(event) {
var pageNumber = document.getElementById('pageNumber').value;
if (!pageNumber || isNaN(pageNumber)) {
alert('请输入有效的页码');
event.preventDefault();
return false;
}
});
</script>
这段代码监听了输入框的键盘事件,当用户按下回车键时,会自动提交表单,它还会在表单提交前验证输入的内容是否为有效数字。
我们需要在PHP代码中处理分页跳转的逻辑,打开你的列表页模板文件,找到生成分页链接的部分,通常位于循环显示内容的下方,我们需要修改这部分代码,使其支持通过GET参数p
来指定当前页数。
假设原来的分页代码如下:
<?php
if ($cfg_cmspath == '/') {
$pageval = ",";
} else {
$pageval = ".html,";
}
$nowurl = $cfg_cmspath . $pageval . strtolower($row['typedir']) . '/' . strtolower($row['id']) . '.html';
include_once("include/arc.partview.class.php");
$arcpageview = new PartView();
$arcpageview>SetTemplet($cfg_basedir . $cfg_templates_dir . "/list_article.htm");
$arcpageview>Row = $row;
$arcpageview>PageNo = $cpage;
$arcpageview>TotalResult = $totalcount;
$arcpageview>PageSize = $row['listnum'];
$arcpageview>Flink = $flink;
$arcpageview>MakeUp($nowurl);
?>
我们需要将其修改为支持通过GET参数p
来指定当前页数,修改后的代码如下:
<?php
if ($cfg_cmspath == '/') {
$pageval = ",";
} else {
$pageval = ".html,";
}
$nowurl = $cfg_cmspath . $pageval . strtolower($row['typedir']) . '/' . strtolower($row['id']) . '.html';
include_once("include/arc.partview.class.php");
$arcpageview = new PartView();
$arcpageview>SetTemplet($cfg_basedir . $cfg_templates_dir . "/list_article.htm");
$arcpageview>Row = $row;
$arcpageview>PageNo = isset($_GET['p']) && is_numeric($_GET['p']) ? intval($_GET['p']) : $cpage;
$arcpageview>TotalResult = $totalcount;
$arcpageview>PageSize = $row['listnum'];
$arcpageview>Flink = $flink;
$arcpageview>MakeUp($nowurl);
?>
这样,当用户在输入框中输入页码并提交表单时,系统会根据输入的页码跳转到相应的分页。
完成上述步骤后,保存模板文件并刷新页面,检查输入框和提交按钮是否正常显示,尝试输入不同的页码并点击提交按钮,确认页面是否正确跳转到指定的分页,如果一切正常,说明功能已经成功实现。
为了进一步提升用户体验,可以考虑以下优化措施:
1、样式美化:通过CSS样式美化输入框和提交按钮,使其与页面整体风格更加协调。
2、错误提示:在JavaScript验证失败时,除了弹出警告框外,还可以在输入框旁边显示错误信息,让用户更容易理解问题所在。
3、历史记录:利用浏览器的历史记录功能,当用户刷新页面时,保留上一次输入的页码。
4、移动端适配:确保输入框和提交按钮在移动设备上也能正常使用。
以下是一个完整的代码示例,结合了上述所有内容:
<! list_article.htm >
<!DOCTYPE html>
<html lang="zhCN">
<head>
<meta charset="UTF8">
<title>文章列表</title>
<style>
/* 样式美化 */
#pageNumber {
width: 50px;
padding: 5px;
marginright: 10px;
}
#jumpForm {
display: flex;
alignitems: center;
}
</style>
</head>
<body>
<! 其他内容 >
<div id="jumpForm">
<input type="text" name="p" id="pageNumber" placeholder="输入页码" style="width: 50px;">
<input type="submit" value="跳转">
</div>
<script type="text/javascript">
document.getElementById('pageNumber').addEventListener('keypress', function(event) {
if (event.key === 'Enter') {
event.preventDefault();
this.form.submit();
}
});
document.querySelector('form').addEventListener('submit', function(event) {
var pageNumber = document.getElementById('pageNumber').value;
if (!pageNumber || isNaN(pageNumber)) {
alert('请输入有效的页码');
event.preventDefault();
return false;
}
});
</script>
<?php
if ($cfg_cmspath == '/') {
$pageval = ",";
} else {
$pageval = ".html,";
}
$nowurl = $cfg_cmspath . $pageval . strtolower($row['typedir']) . '/' . strtolower($row['id']) . '.html';
include_once("include/arc.partview.class.php");
$arcpageview = new PartView();
$arcpageview>SetTemplet($cfg_basedir . $cfg_templates_dir . "/list_article.htm");
$arcpageview>Row = $row;
$arcpageview>PageNo = isset($_GET['p']) && is_numeric($_GET['p']) ? intval($_GET['p']) : $cpage;
$arcpageview>TotalResult = $totalcount;
$arcpageview>PageSize = $row['listnum'];
$arcpageview>Flink = $flink;
$arcpageview>MakeUp($nowurl);
?>
<! 其他内容 >
</body>
</html>
Q1: 如何修改每页显示的文章数量?
A1: 在织梦DedeCms后台,进入“系统” > “系统设置” > “基本设置”,找到“每页显示文章数目”选项,修改对应的数值即可,也可以通过模板文件中的$row['listnum']
变量来动态调整每页显示的文章数量。
Q2: 如果输入的页码超出范围怎么办?
A2: 可以在JavaScript验证部分添加额外的逻辑,确保输入的页码不超过总页数。
document.querySelector('form').addEventListener('submit', function(event) {
var pageNumber = document.getElementById('pageNumber').value;
var totalPages = <?php echo $totalPages; ?>; // 确保在PHP代码中计算总页数并传递过来
if (!pageNumber || isNaN(pageNumber) || pageNumber > totalPages) {
alert('请输入有效的页码');
event.preventDefault();
return false;
}
});
这样可以确保用户只能输入有效的页码,并且不会超出总页数的范围。