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和选中的筛选条件来测试代码的效果。