概述

实现二级分类的功能定制。该定制主要用于国内用户比较需要的首页展示需求。

edX的分类机制

原生代码中的分类其实是标签和搜索。通过扩展课程数据结构,并且把数据结构注册到搜索栏,可以在搜索的时候附加分类。这个分类是通过elasticsearch对课程数据的索引来做的,在查看所有课程/搜索页才可以筛选分类。

这个标签式的分类是一级的。在edX.org里面称为 Subjects,主题。

Cousera的分类机制

cousera有一个二级的机制。是在点击进入某个一级分类后的顶部有页面跳转链接。每个二级分类最多显示5个,还可以“更多”,将这个二级分类的内容全部呈现出来。一门课程可以属于多个二级分类。

而搜索界面实际上是个多维筛选器,和edX的搜索一样,分类只有一级。

观察搜索界面的分类方法,可以看到和目录的分类方法有明显不同。所以其实在Coursera里面这是两种检索方式:目录和类别。

目录法的类别为:

艺术与人文

历史|语言和文学|音乐与艺术|哲学

商务

领导与管理|金融|营销|创业|商务核心|商业战略

计算机科学

软件开发|移动和网络开发|算法|计算机安全和网络|设计和产品

数据科学

数据分析|机器学习|概率论与数理统计

生命科学

动物和兽医科学|生物信息学|生物|医疗保健|营养|临床科学

数学和逻辑

个人发展

物理科学与工程

社会科学

经济学|教育|政府与社会|法律|心理学

 

 

 

产品设计思路

社区二级分类产品可以借鉴cousera的方式。

Open edX搜索中的分类其实是标签tag,而且可以自己扩充很多标签。这个功能可以和要开发的二级分类完全独立。

二级分类可以有类似“目录”的形式,用于独立的展示,技术上做成容易调用的方式,在首页和其他页面方便的嵌入。

作为示例先在首页上实现。

 

 

分类的管理

分类信息

在MySQL中实现数据结构,

一级分类信息表Course_category_class1

`id` int(11)

`category_name` varchar(255)

`category_cname` varchar(255)

 

二级分类信息表Course_category_class2

`id` int(11)

`category_name` varchar(255)

`category_cname` varchar(255)

`parent_id` int(11)

 

 

在Django Admin实现二级分类信息的管理,

课程分类

课程对应分类表Course_category

`id` int(11)

`course_id` varchar(255)

`category_id` int(11)

 

在Django Admin里面实现课程对应分类的管理。

分类界面

edX.org

Cousera

xuetangX

社区二级分类模块可以采用国内习惯的二级菜单方式。菜单的样式可以多样,比如纵向一级展开横向二级;横向一级菜单展开纵向二级。

当前产品定义为横向一级分类展开纵向二级分类。

 

这个分类的菜单直接读取数据中的Course_category_meta。点击二级后即刷新下方的课程展示为对应二级。默认展示为全部最新的课程。

 

首页上可以同时存在别的课程区别,比如推荐课程。一般推荐课程会在最上面的区块,而分类课程展示在第二个区块。

 

分类的刷新采用ajax,分类传递到后端py程序后,封装为json数据返回到前端显示。

 

由于已经是二级分类,不再显示更多按钮,直接显示此二级分类下的全部课程。

 

一级分类不可点击(移动版本考虑)