去年有一次跟朋友闲聊,他说他们公司(一家上海做 Drupal 开发的公司)经常会收到请求,要照着宁皓网做一个一样的网站,我自己也收到过这样的请求。如果你也有类似的想法,可以读下这篇文章,在这里会提供给你一个大体的思路,这样实施起来会更容易一些。
宁皓网是基于 Drupal 7 创建的一个 Web 应用,基本上用到的功能全部来自 Drupal 核心,以及社区贡献的模块。Drupal 的好处之一就是完全开放,社区里的模块全部都是免费开源的。Drupal 在扩展模块这方面的理念是,不去竞争,而是合作。也就是一种类型的模块最好只有一个,如果你想为 Drupal 开发一个模块,先去搜索一下,如果已经有类似的模块,加入进来,一起让这个模块变的更好,而不是去重新创建一个模块。除非你有完全不同的想法。
现在你知道宁皓网的核心是 Drupal 了,或许你可以先去看一下宁皓网的 Drupal 视频来了解一下 Drupal ,这会让你对 Drupal 有个大概的了解,你会知道它到底能做什么,其实在宁皓网上应用的功能,在我们现有的 Drupal 视频里都已经提到了。你只需要组织一下,再去试试看。宁皓网其实只有两个重要的功能,一个是视频的播放,第二个是会员在线支付以后自动开通权限,可以去在线观看视频。下面我再详细的解释一下。
内容结构
宁皓网有三个内容类型,视频,课程,博客。不同的内容类型存储不同类型的内容,每一种内容类型都可以拥有各自的字段,这些字段是内容的一部分,比如标题字段,正文字段,海报字段,视频文件字段等等。我用 视频 这个内容类型去存储视频内容,在这个内容类型上添加了视频文件字段,视频截图字段,视频字幕字段。然后用 课程 这个内容类型来组织整个课程相关的信息,课程的名称,介绍,海报,作者,时长,在这个课程内容类型上还有一个关键的字段,就是相关视频的字段,这个字段可以去关联与这个课程相关的视频内容。这样我们可以利用这种关系,比如可以在课程内容上面显示出所有的相关的视频内容。
打开宁皓网的某个课程,在这个课程页面上,你会看到一个相关的视频目录, 这个目录就是利用课程与视频之间的关系来创建的。也就是,你可以创建一个与当前查看的这个课程相关的视频的列表。创建这个列表可以使用 Drupal 的 Views(视图) 模块,在宁皓网的 《 Drupal 7 : 字段 视图 关系(下)》这个课程里,介绍了 Views 模块的使用方法。你需要知道使用 Views 模块创建内容列表,特别要了解下 Views 模块里的 上下文过滤器(语境过滤器) 的使用。使用 上下文过滤器 你才能在课程页面只显示与当前这个课程相关的视频内容。
视频播放
宁皓网的视频播放功能是很简单的,为 视频 内容添加一个文件字段,可以去上传视频文件,结合 JW Player 播放器,通过自定义模板文件的方法,让视频文件字段成为 JW Player 播放器里要播放的视频文件 。这种方法不是最好的,因为用户很容易找到视频文件的地址,把视频下载下来,不过并不是所有的用户只要知道视频文件的地址就能下载视频文件,Drupal 的私有文件系统,可以保证让拥有特定权限的用户才能访问私有文件系统里的东西。
如果你想把视频文件地址隐藏的好点,可以考虑使用 Media Server ,比如 Wowza,Adobe Media Server,Red5 之类的。它们可以实时为用户传输视频,也就是用户每次只下载视频的一小部分,这样在用户的客户端上,不会缓存完整的视频文件。
控制权限
Drupal 自身的权限控制做的已经非常好了,也足够的灵活。你可以为 Web 应用创建不同的用户角色,不同的用户角色可以拥有不同的权限,比如你可以让特定的用户角色查看指定的内容。我在宁皓网上添加了一个 付费会员 的用户角色,只有这个类型的用户可以查看视频内容。然后再去添加一个电子商务模块,比如 Ubercart 或者 Commerce 模块。用户支付成功以后,会自动赋予用户某个指定的用户角色,并且,你可以指定用户属于某个角色的时间,到期以后,会自动去掉用户的这个角色。
Commerce 模块相当灵活,它是用在 Drupal 7 上的一个电子商务模块,配合 Rules 模块,你可以为网站定制一系列的规则,也就是当发生什么的时候,去做什么样的事情。Ubercart 模块也是一个电子商务模块,它用起来更简单一些。
在宁皓网上,有一些视频是可以试看的,使用 Content Access 模块,你可以去设置单个内容的权限。
关于设计
我不喜欢浮夸,花俏,也不是动画,还有社交网络的粉丝。在宁皓网上,唯一的社交功能是评论,我曾想过去掉评论功能,不过怕你憋坏,还是保留了这个唯一的发泄口。对于设计,保持简单,也要保持个性,网站是你自己的,你想怎样都行,用户也会因为你的网站个性喜欢或者讨厌你。
总结
以上基本上就是宁皓网的核心了。三个内容类型,视频,课程,还有博客。博客类型里放的就是你现在看到的这篇文章,视频 类型的内容里存储视频文件,然后用 课程 内容来组织相关的视频内容。再用 Views 模块,去创建视频的列表,设置 上下文过滤器,在 课程 内容上只去显示出相关的视频列表。使用 Content Access 模块来控制单个内容的权限。用电子商务模块控制用户角色的购买还有到期的时间。
在实施的过程中,你会遇到些小问题,受点折磨以后,你都能解决掉它们。宁皓网是你的伙伴,不断完善的课程,可以让你少受点折磨 :)
工作


