discuz分类信息筛选代码
时间 : 2023-12-05 12:13:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性
最佳答案
以下是一个简单的Discuz分类信息筛选代码的示例:
```php
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
// 假设你的分类信息ID为1
$catid = 1;
// 筛选条件
$condition = array();
// 筛选标题包含指定关键字的信息
$keyword = isset($_GET['keyword']) ? trim($_GET['keyword']) : '';
if(!empty($keyword)) {
$condition[] = "subject LIKE '%$keyword%'";
}
// 筛选发布时间大于指定日期的信息
$starttime = isset($_GET['starttime']) ? strtotime($_GET['starttime']) : 0;
if($starttime > 0) {
$condition[] = "dateline >= $starttime";
}
// 筛选发布时间小于指定日期的信息
$endtime = isset($_GET['endtime']) ? strtotime($_GET['endtime']) : 0;
if($endtime > 0) {
$condition[] = "dateline <= $endtime";
}
// 构建查询条件
$condition_sql = '';
if(!empty($condition)) {
$condition_sql = ' WHERE ' . implode(' AND ', $condition);
}
// 分页相关配置
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$perpage = 10;
// 查询分类信息总数
$totalcount = DB::result_first("SELECT COUNT(*) FROM ".DB::table('forum_thread')." $condition_sql");
// 计算分页相关信息
$start = ($page - 1) * $perpage;
$totalpage = ceil($totalcount / $perpage);
// 查询分类信息列表
$list = array();
$sql = "SELECT * FROM ".DB::table('forum_thread')." $condition_sql ORDER BY dateline DESC LIMIT $start, $perpage";
$query = DB::query($sql);
while($row = DB::fetch($query)) {
$list[] = $row;
}
// 输出分类信息列表
foreach($list as $info) {
echo $info['subject'] . '<br>';
}
// 分页链接
$pagination = '';
if($totalpage > 1) {
$pagination .= '<div class="pages">';
$pagination .= '<a href="index.php?catid='.$catid.'&keyword='.$keyword.'&starttime='.$starttime.'&endtime='.$endtime.'&page=1">首页</a>';
for($i = max(1, $page - 5); $i <= min($page + 5, $totalpage); $i++) {
if($i == $page) {
$pagination .= '<strong>'.$i.'</strong>';
} else {
$pagination .= '<a href="index.php?catid='.$catid.'&keyword='.$keyword.'&starttime='.$starttime.'&endtime='.$endtime.'&page='.$i.'">'.$i.'</a>';
}
}
$pagination .= '<a href="index.php?catid='.$catid.'&keyword='.$keyword.'&starttime='.$starttime.'&endtime='.$endtime.'&page='.$totalpage.'">尾页</a>';
$pagination .= '</div>';
}
echo $pagination;
?>
这个示例代码演示了如何使用Discuz提供的数据库操作方法和条件构建方式,来实现分类信息的筛选和分页功能。你可以根据自己的需求进行修改和扩展。请确保在使用此代码之前,已经正确地配置了Discuz的数据库连接参数和表前缀。
其他答案
优化代码:
```javascript
// 获取分类信息筛选条件
function getCategoryFilters(categoryId) {
const filters = [];
// 根据分类ID获取相关的筛选条件,这里只是示例,你可以根据自己的需求进行修改
switch (categoryId) {
case 1:
filters.push({ name: '价格', options: ['0-500', '500-1000', '1000-2000'] });
filters.push({ name: '颜色', options: ['红色', '蓝色', '黄色'] });
break;
case 2:
filters.push({ name: '品牌', options: ['苹果', '三星', '华为'] });
filters.push({ name: '尺寸', options: ['4.7英寸', '5.5英寸', '6英寸'] });
break;
// 添加其他分类的筛选条件
// case 3:
// ...
}
return filters;
}
// 根据分类ID和筛选条件获取相关文章列表
function getArticlesByCategoryAndFilters(categoryId, selectedFilters) {
const articles = [];
// 根据分类ID和选中的筛选条件查询相关文章列表,这里只是示例,你可以根据自己的需求进行修改
switch (categoryId) {
case 1:
articles.push({ title: '图书馆搬迁公告', price: 200, color: '红色' });
articles.push({ title: '清明节放假安排', price: 800, color: '蓝色' });
articles.push({ title: '学校迎新活动通知', price: 1500, color: '黄色' });
break;
case 2:
articles.push({ title: 'iPhone 12发售通知', brand: '苹果', size: '6英寸' });
articles.push({ title: '三星Galaxy S21发布会', brand: '三星', size: '5.5英寸' });
articles.push({ title: '华为P40 Pro新品上市', brand: '华为', size: '4.7英寸' });
break;
// 添加其他分类的文章
// case 3:
// ...
}
// 根据选中的筛选条件过滤文章列表
const filteredArticles = articles.filter(article => {
let match = true;
for (const filter of selectedFilters) {
if (article[filter.name] !== filter.value) {
match = false;
break;
}
}
return match;
});
return filteredArticles;
}
// 示例代码使用
const categoryId = 1;
const selectedFilters = [
{ name: '价格', value: '500-1000' },
{ name: '颜色', value: '红色' }
];
const categoryFilters = getCategoryFilters(categoryId);
console.log('分类信息筛选条件:', categoryFilters);
const filteredArticles = getArticlesByCategoryAndFilters(categoryId, selectedFilters);
console.log('筛选后的文章列表:', filteredArticles);
这是一个示例代码,你可以根据自己的实际需求进行修改。在示例代码中,我们定义了两个函数:`getCategoryFilters`和`getArticlesByCategoryAndFilters`,分别用于获取分类信息筛选条件和根据分类ID和筛选条件获取相关文章列表。
示例中的`getCategoryFilters`函数根据传入的分类ID,返回对应的筛选条件数组。你可以根据自己的需求,增加或修改分类ID对应的筛选条件。
`getArticlesByCategoryAndFilters`函数根据分类ID和选中的筛选条件过滤文章列表,并返回筛选后的文章列表。在示例中,我们通过`switch`语句模拟根据分类ID来获取不同分类的文章列表,你可以根据自己的需求,根据分类ID从数据库或接口中获取相关数据。
最后,我们使用示例代码进行调用和打印结果。可以根据实际情况,修改分类ID和选中的筛选条件来测试代码的效果。
https/SSL证书广告优选IDC>>
推荐主题模板更多>>
推荐文章