优化搜索界面及控制器

This commit is contained in:
2025-06-06 11:15:11 +08:00
parent a81aff626e
commit eca0f18501
3 changed files with 583 additions and 239 deletions
+13 -4
View File
@@ -28,14 +28,14 @@ class SearchController extends BaseController
$detailUrl = '/index/articles/detail';
$categoryUrl = '/index/articles/category';
$status = 2; // 文章状态为2
$fields = 'id, title, cate, image, author, create_time as publishdate';
$fields = 'id, title, cate, image, author, FROM_UNIXTIME(create_time, "%Y-%m-%d") as publishdate';
} else if ($type == 'resource') {
$model = new Resources();
$categoryModel = new ResourcesCategory();
$detailUrl = '/index/resources/detail';
$categoryUrl = '/index/resources/category';
$status = 1; // 资源状态为1
$fields = 'id, title, cate, icon, author, create_time as publishdate';
$fields = 'id, title, cate, icon, uploader, FROM_UNIXTIME(create_time, "%Y-%m-%d") as publishdate';
} else {
$this->error('无效的搜索类型');
}
@@ -61,6 +61,7 @@ class SearchController extends BaseController
->find();
$item['category'] = $category ?: ['id' => 0, 'name' => '未分类', 'image' => ''];
$item['cate'] = $item['category']['name']; // 使用分类名称替换分类ID
// 如果文章的图片为空,使用分类的图片
if (empty($item['image'])) {
@@ -71,10 +72,11 @@ class SearchController extends BaseController
}
} else {
$category = $categoryModel->where('id', $item['cate'])
->field('id, name, icon')
->field('id, name, icon, cid')
->find();
$item['category'] = $category ?: ['id' => 0, 'name' => '未分类', 'icon' => ''];
$item['category'] = $category ?: ['id' => 0, 'name' => '未分类', 'icon' => '', 'cid' => 0];
$item['cate'] = $item['category']['name']; // 使用分类名称替换分类ID
// 如果资源的图片为空,使用分类的图片
if (empty($item['icon'])) {
@@ -83,6 +85,13 @@ class SearchController extends BaseController
if (empty($item['icon'])) {
$item['icon'] = '/static/images/default.jpg';
}
// 根据分类cid判断资源类型
if ($item['category']['cid'] == 8) {
$item['detail_url'] = url('game/detail', ['id' => $item['id']]);
} else {
$item['detail_url'] = url('program/detail', ['id' => $item['id']]);
}
}
}
+68 -24
View File
@@ -19,29 +19,24 @@
{if $items}
{volist name="items" id="item"}
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-body">
<div style="display: flex; align-items: center;">
<div style="margin-right: 20px;">
{if $type == 'article'}
<img src="{$item.image}" alt="{$item.title}" style="width: 250px; height: 140px; object-fit: cover;">
{else}
<img src="{$item.icon}" alt="{$item.title}" style="width: 250px; height: 140px; object-fit: cover;">
{/if}
</div>
<div class="layui-col-md8">
<h3 class="layui-text">
<a href="{$detailUrl}?id={$item.id}" class="layui-text" style="color: #333;">{$item.title}</a>
</h3>
<div class="layui-text" style="margin: 10px 0;">
<span class="layui-badge layui-bg-gray">{$item.category.name}</span>
<span class="layui-badge layui-bg-gray">{$item.author}</span>
<span class="layui-badge layui-bg-gray">{$item.publishdate|date="Y-m-d"}</span>
</div>
<div class="layui-text" style="margin-top: 10px;">
<a href="{$detailUrl}?id={$item.id}" class="layui-btn layui-btn-sm layui-btn-normal">查看详情</a>
</div>
</div>
<div class="search-result-item" onclick="window.location.href='<?php echo $type == 'article' ? url('article/detail', ['id' => $item['id']]) : $item['detail_url'] ?>'">
<div class="search-result-image">
<?php if($type == 'article'): ?>
<img src="<?php echo $item['image'] ?: '/static/images/default.jpg' ?>" alt="<?php echo $item['title'] ?>">
<?php else: ?>
<img src="<?php echo $item['icon'] ?: '/static/images/default.jpg' ?>" alt="<?php echo $item['title'] ?>">
<?php endif; ?>
</div>
<div class="search-result-content">
<h3 class="search-result-title"><?php echo $item['title'] ?></h3>
<div class="search-result-meta">
<span class="layui-badge layui-bg-blue"><?php echo $item['cate'] ?></span>
<?php if($type == 'article'): ?>
<span class="layui-badge layui-bg-green">作者:<?php echo $item['author'] ?></span>
<?php else: ?>
<span class="layui-badge layui-bg-green">上传者:<?php echo $item['uploader'] ?></span>
<?php endif; ?>
<span class="layui-badge layui-bg-gray"><?php echo $item['publishdate'] ?></span>
</div>
</div>
</div>
@@ -85,4 +80,53 @@ layui.use(['laypage'], function(){
}
});
});
</script>
</script>
<style>
.search-result-item {
display: flex;
align-items: center;
padding: 15px;
transition: all 0.3s ease;
border-radius: 4px;
background-color: #fff;
}
.search-result-item:hover {
background-color:rgb(255, 255, 255);
transform: translateY(-2px);
box-shadow: 0 2px 8px rgba(0, 174, 255, 0.5);
}
.search-result-image {
margin-right: 20px;
flex-shrink: 0;
}
.search-result-image img {
width: 250px;
height: 140px;
object-fit: cover;
border-radius: 4px;
}
.search-result-content {
flex: 1;
}
.search-result-title {
font-size: 18px;
color: #333;
margin: 0 0 10px 0;
}
.search-result-meta {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.search-result-meta .layui-badge {
margin-right: 5px;
}
</style>