概述
实现二级分类的功能定制。该定制主要用于国内用户比较需要的首页展示需求。
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数据返回到前端显示。
由于已经是二级分类,不再显示更多按钮,直接显示此二级分类下的全部课程。
一级分类不可点击(移动版本考虑)