mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-29 05:41:37 +08:00
整理代码
This commit is contained in:
parent
5e8e179fe8
commit
75f969c874
@ -223,7 +223,7 @@ class CourseQuery extends Service
|
||||
$params['tc'] = $query['tc'];
|
||||
}
|
||||
|
||||
if (isset($query['sc']) && $query['tc'] != 'all') {
|
||||
if (isset($query['sc']) && $query['sc'] != 'all') {
|
||||
$validator->checkSubCategory($query['sc']);
|
||||
$params['sc'] = $query['sc'];
|
||||
}
|
||||
|
@ -2,86 +2,15 @@
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="course-filter">
|
||||
<div class="filter-group">
|
||||
<div class="title">方向</div>
|
||||
<div class="content">
|
||||
{% for category in top_categories %}
|
||||
{% set class = request.get('tc','int','all') == category.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ category.url }}">{{ category.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% if sub_categories %}
|
||||
<div class="filter-group">
|
||||
<div class="title">分类</div>
|
||||
<div class="content">
|
||||
{% for category in sub_categories %}
|
||||
{% set class = request.get('sc','int','all') == category.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ category.url }}">{{ category.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="filter-group">
|
||||
<div class="title">类型</div>
|
||||
<div class="content">
|
||||
{% for model in models %}
|
||||
{% set class = request.get('model','trim','all') == model.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ model.url }}">{{ model.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-group">
|
||||
<div class="title">难度</div>
|
||||
<div class="content">
|
||||
{% for level in levels %}
|
||||
{% set class = request.get('level','trim','all') == level.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ level.url }}">{{ level.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-group">
|
||||
<div class="title">排序</div>
|
||||
<div class="content">
|
||||
{% for sort in sorts %}
|
||||
{% set class = request.get('sort','trim','score') == sort.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ sort.url }}">{{ sort.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ partial('course/list_filter') }}
|
||||
|
||||
<div class="course-list clearfix">
|
||||
{{ partial('partials/macro_course') }}
|
||||
{% for item in pager.items %}
|
||||
<div class="course-card">
|
||||
<div class="cover">
|
||||
<a href="{{ url({'for':'web.course.show','id':item.id}) }}" title="{{ item.title }}">
|
||||
<img src="{{ item.cover }}!cover_270" alt="{{ item.title }}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="title">
|
||||
<a href="{{ url({'for':'web.course.show','id':item.id}) }}" title="{{ item.title }}">{{ substr(item.title,0,15) }}</a>
|
||||
</div>
|
||||
<div class="meta">
|
||||
{% if item.market_price > 0 %}
|
||||
<span class="price">¥{{ item.market_price }}</span>
|
||||
<span class="level">中级</span>
|
||||
<span class="lesson">{{ item.lesson_count }}节课</span>
|
||||
<span class="user">{{ item.user_count }}人购买</span>
|
||||
{% else %}
|
||||
<span class="free">免费</span>
|
||||
<span class="level">中级</span>
|
||||
<span class="lesson">{{ item.lesson_count }}节课</span>
|
||||
<span class="user">{{ item.user_count }}人报名</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{{ course_card(item) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="pager">
|
||||
{{ partial('partials/pager') }}
|
||||
</div>
|
||||
{{ partial('partials/pager') }}
|
||||
|
||||
{% endblock %}
|
50
app/Http/Web/Views/course/list_filter.volt
Normal file
50
app/Http/Web/Views/course/list_filter.volt
Normal file
@ -0,0 +1,50 @@
|
||||
<div class="course-filter">
|
||||
<div class="filter-group">
|
||||
<div class="title">方向</div>
|
||||
<div class="content">
|
||||
{% for category in top_categories %}
|
||||
{% set class = request.get('tc','int','all') == category.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ category.url }}">{{ category.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% if sub_categories %}
|
||||
<div class="filter-group">
|
||||
<div class="title">分类</div>
|
||||
<div class="content">
|
||||
{% for category in sub_categories %}
|
||||
{% set class = request.get('sc','int','all') == category.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ category.url }}">{{ category.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="filter-group">
|
||||
<div class="title">类型</div>
|
||||
<div class="content">
|
||||
{% for model in models %}
|
||||
{% set class = request.get('model','trim','all') == model.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ model.url }}">{{ model.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-group">
|
||||
<div class="title">难度</div>
|
||||
<div class="content">
|
||||
{% for level in levels %}
|
||||
{% set class = request.get('level','trim','all') == level.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ level.url }}">{{ level.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="filter-group">
|
||||
<div class="title">排序</div>
|
||||
<div class="content">
|
||||
{% for sort in sorts %}
|
||||
{% set class = request.get('sort','trim','score') == sort.id ? 'layui-btn layui-btn-xs' : 'none' %}
|
||||
<a class="{{ class }}" href="{{ sort.url }}">{{ sort.name }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -23,9 +23,7 @@
|
||||
|
||||
<div class="search">
|
||||
<form class="layui-form" action="{{ url({'for':'web.search.list'}) }}">
|
||||
<div class="layui-inline">
|
||||
<input class="layui-input" type="text" name="query" autocomplete="off" placeholder="请输入课程关键字...">
|
||||
</div>
|
||||
<input class="layui-input" type="text" name="query" value="{{ request.get('query','trim','') }}" autocomplete="off" placeholder="请输入课程关键字...">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
47
app/Http/Web/Views/partials/macro_course.volt
Normal file
47
app/Http/Web/Views/partials/macro_course.volt
Normal file
@ -0,0 +1,47 @@
|
||||
{%- macro model_info(value) %}
|
||||
{% if value == 'vod' %}
|
||||
<span class="layui-badge layui-bg-green">点播</span>
|
||||
{% elseif value == 'live' %}
|
||||
<span class="layui-badge layui-bg-blue">直播</span>
|
||||
{% elseif value == 'read' %}
|
||||
<span class="layui-badge layui-bg-black">图文</span>
|
||||
{% endif %}
|
||||
{%- endmacro %}
|
||||
|
||||
{%- macro level_info(value) %}
|
||||
{% if value == 'entry' %}
|
||||
入门
|
||||
{% elseif value == 'junior' %}
|
||||
初级
|
||||
{% elseif value == 'medium' %}
|
||||
中级
|
||||
{% elseif value == 'senior' %}
|
||||
高级
|
||||
{% endif %}
|
||||
{%- endmacro %}
|
||||
|
||||
{%- macro course_card(course) %}
|
||||
<div class="course-card">
|
||||
<div class="cover">
|
||||
<a href="{{ url({'for':'web.course.show','id':course.id}) }}">
|
||||
<img src="{{ course.cover }}!cover_270" alt="{{ course.title }}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="title">
|
||||
<a href="{{ url({'for':'web.course.show','id':course.id}) }}">{{ substr(course.title,0,15) }}</a>
|
||||
</div>
|
||||
<div class="meta">
|
||||
{% if course.market_price > 0 %}
|
||||
<span class="price">¥{{ course.market_price }}</span>
|
||||
<span class="level">{{ level_info(course.level) }}</span>
|
||||
<span class="lesson">{{ course.lesson_count }}节课</span>
|
||||
<span class="user">{{ course.user_count }}人购买</span>
|
||||
{% else %}
|
||||
<span class="free">免费</span>
|
||||
<span class="level">{{ level_info(course.level) }}</span>
|
||||
<span class="lesson">{{ course.lesson_count }}节课</span>
|
||||
<span class="user">{{ course.user_count }}人报名</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{%- endmacro %}
|
@ -1,8 +1,10 @@
|
||||
{% if pager.total_pages > 1 %}
|
||||
<div class="layui-box layui-laypage layui-laypage-default">
|
||||
<a href="{{ pager.first }}">首页</a>
|
||||
<a href="{{ pager.previous }}">上页</a>
|
||||
<a href="{{ pager.next }}">下页</a>
|
||||
<a href="{{ pager.last }}">尾页</a>
|
||||
<div class="pager">
|
||||
<div class="layui-box layui-laypage layui-laypage-default">
|
||||
<a href="{{ pager.first }}">首页</a>
|
||||
<a href="{{ pager.previous }}">上页</a>
|
||||
<a href="{{ pager.next }}">下页</a>
|
||||
<a href="{{ pager.last }}">尾页</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
35
app/Http/Web/Views/search/content_course.volt
Normal file
35
app/Http/Web/Views/search/content_course.volt
Normal file
@ -0,0 +1,35 @@
|
||||
{% if pager.total_pages > 0 %}
|
||||
<div class="search-course-list">
|
||||
{% for item in pager.items %}
|
||||
<div class="search-course-card clearfix">
|
||||
<div class="cover">
|
||||
<a href="{{ url({'for':'web.course.show','id':item.id}) }}">
|
||||
<img src="{{ item.cover }}!cover_270" alt="{{ item.title|striptags }}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="title">
|
||||
<a href="{{ url({'for':'web.course.show','id':item.id}) }}">{{ item.title }}</a>
|
||||
</div>
|
||||
<div class="summary">{{ item.summary }}</div>
|
||||
<div class="meta">
|
||||
<span>分类:{{ item.category.name }}</span>
|
||||
<span>讲师:{{ item.teacher.name }}</span>
|
||||
<span>难度:{{ level_info(item.level) }}</span>
|
||||
<span>课时:{{ item.lesson_count }}</span>
|
||||
<span>学员:{{ item.user_count }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="search-empty">
|
||||
<div class="icon">
|
||||
<i class="layui-icon layui-icon-face-surprised"></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
没有找到<span class="query">{{ request.get('query') }}</span>相关内容,换个关键字试试吧!
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
6
app/Http/Web/Views/search/content_other.volt
Normal file
6
app/Http/Web/Views/search/content_other.volt
Normal file
@ -0,0 +1,6 @@
|
||||
<div class="search-other-list">
|
||||
|
||||
</div>
|
||||
<div class="pager">
|
||||
{{ partial('partials/pager') }}
|
||||
</div>
|
@ -2,38 +2,27 @@
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="search-course-list">
|
||||
{% for item in pager.items %}
|
||||
<div class="search-course-card">
|
||||
<div class="cover">
|
||||
<a href="{{ url({'for':'web.course.show','id':item.id}) }}" title="{{ item.title|e }}">
|
||||
<img src="{{ item.cover }}!cover_270" alt="{{ item.title|e }}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="title">
|
||||
<a href="{{ url({'for':'web.course.show','id':item.id}) }}" title="{{ item.title|e }}">{{ item.title }}</a>
|
||||
</div>
|
||||
<div class="meta">
|
||||
{% if item.market_price > 0 %}
|
||||
<span class="price">¥{{ item.market_price }}</span>
|
||||
<span class="level">中级</span>
|
||||
<span class="lesson">{{ item.lesson_count }}节课</span>
|
||||
<span class="user">{{ item.user_count }}人购买</span>
|
||||
{% else %}
|
||||
<span class="free">免费</span>
|
||||
<span class="level">中级</span>
|
||||
<span class="lesson">{{ item.lesson_count }}节课</span>
|
||||
<span class="user">{{ item.user_count }}人报名</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% set type = request.get('type','trim','course') %}
|
||||
|
||||
<div class="pager">
|
||||
{{ partial('partials/pager') }}
|
||||
{{ partial('partials/macro_course') }}
|
||||
|
||||
<div class="layui-breadcrumb breadcrumb">
|
||||
<a href="/">首页</a>
|
||||
<a href="#">搜索</a>
|
||||
<a><cite>{{ request.get('query') }}</cite></a>
|
||||
</div>
|
||||
<div class="layout-main clearfix">
|
||||
<div class="layout-content">
|
||||
{% if type == 'course' %}
|
||||
{{ partial('search/content_course') }}
|
||||
{% elseif type == 'other' %}
|
||||
{{ partial('search/content_other') }}
|
||||
{% endif %}
|
||||
{{ partial('partials/pager') }}
|
||||
</div>
|
||||
<div class="layout-sidebar">
|
||||
{{ partial('search/sidebar') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
21
app/Http/Web/Views/search/sidebar.volt
Normal file
21
app/Http/Web/Views/search/sidebar.volt
Normal file
@ -0,0 +1,21 @@
|
||||
{% if hot_queries %}
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">热门搜索</div>
|
||||
<div class="layui-card-body">
|
||||
{% for query in hot_queries %}
|
||||
<a class="layui-badge-rim query-badge" href="{{ url({'for':'web.search.list'},{'query':query}) }}">{{ query }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if related_queries %}
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">相关搜索</div>
|
||||
<div class="layui-card-body">
|
||||
{% for query in related_queries %}
|
||||
<a class="layui-badge-rim query-badge" href="{{ url({'for':'web.search.list'},{'query':query}) }}">{{ query }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
@ -1,4 +1,4 @@
|
||||
.layui-badge, .layui-badge-rim, .layui-badge-dot {
|
||||
.layui-badge, .layui-badge-rim {
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,7 @@
|
||||
.layui-badge, .layui-badge-rim {
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
display: block;
|
||||
clear: both;
|
||||
@ -6,6 +10,10 @@
|
||||
height: 0
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
|
||||
.clearfix {
|
||||
zoom: 1
|
||||
}
|
||||
@ -24,7 +32,7 @@
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
position: fixed;
|
||||
background-color: #393D49 !important;
|
||||
background-color: #393D49;
|
||||
}
|
||||
|
||||
.logo {
|
||||
@ -39,6 +47,7 @@
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 240px;
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.search .layui-input {
|
||||
@ -49,11 +58,13 @@
|
||||
#main {
|
||||
margin-top: 80px;
|
||||
margin-bottom: 40px;
|
||||
min-height: 550px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
padding: 30px 0;
|
||||
text-align: center;
|
||||
font-size: 12px;
|
||||
background: #474443;
|
||||
}
|
||||
|
||||
@ -74,10 +85,24 @@
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.pager {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.layout-content {
|
||||
float: left;
|
||||
width: 800px;
|
||||
}
|
||||
|
||||
.layout-sidebar {
|
||||
float: right;
|
||||
width: 320px;
|
||||
}
|
||||
|
||||
.index-module {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
@ -111,13 +136,45 @@
|
||||
max-height: 270px;
|
||||
}
|
||||
|
||||
/**
|
||||
*search
|
||||
*/
|
||||
.search-empty {
|
||||
padding: 50px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.search-empty .icon {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.search-empty .icon .layui-icon {
|
||||
font-size: 150px;
|
||||
color: #393D49;
|
||||
}
|
||||
|
||||
.search-empty .text {
|
||||
color: #999;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.search-empty .text .query {
|
||||
color: red;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.search-course-list {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.search-course-card {
|
||||
padding-bottom: 15px;
|
||||
margin-bottom: 15px;
|
||||
border-bottom: 1px dashed #ccc;
|
||||
}
|
||||
|
||||
.search-course-card .cover {
|
||||
float: left;
|
||||
width: 210px;
|
||||
height: 118px;
|
||||
margin-bottom: 10px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.search-course-card .cover img {
|
||||
@ -125,28 +182,43 @@
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.search-course-card .info {
|
||||
float: left;
|
||||
width: 500px;
|
||||
color: #999;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.search-course-card .title {
|
||||
width: 210px;
|
||||
white-space: nowrap;
|
||||
margin-bottom: 10px;
|
||||
font-size: 14px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.search-course-card .summary {
|
||||
margin-bottom: 10px;
|
||||
line-height: 1.5em;
|
||||
max-height: 4.5em;
|
||||
word-wrap: break-word;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.search-course-card .meta {
|
||||
color: #999;
|
||||
font-size: 12px;
|
||||
|
||||
}
|
||||
|
||||
.search-course-card .meta span {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.search-course-card .price {
|
||||
.search-course-card em {
|
||||
color: red;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.search-course-card .free {
|
||||
color: green;
|
||||
.query-badge {
|
||||
margin-right: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.course-card {
|
||||
@ -195,6 +267,8 @@
|
||||
}
|
||||
|
||||
.filter-group {
|
||||
padding-bottom: 5px;
|
||||
border-bottom: 1px dashed #ccc;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user