1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-29 22:01:38 +08:00

整理代码

This commit is contained in:
xiaochong0302 2020-05-23 20:06:35 +08:00
parent 5e8e179fe8
commit 75f969c874
12 changed files with 279 additions and 128 deletions

View File

@ -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'];
}

View File

@ -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 %}

View 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>

View File

@ -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>

View 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 %}

View File

@ -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 %}

View 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 %}

View File

@ -0,0 +1,6 @@
<div class="search-other-list">
</div>
<div class="pager">
{{ partial('partials/pager') }}
</div>

View File

@ -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 %}

View 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 %}

View File

@ -1,4 +1,4 @@
.layui-badge, .layui-badge-rim, .layui-badge-dot {
.layui-badge, .layui-badge-rim {
padding-bottom: 1px;
}

View File

@ -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;
}