Drupal是非常灵活的,从内容类型到版面布局都是可以自定义的,也正是由于这种自定义的灵活性导致了Drupal的学习曲线比较陡。但是理解了Drupal的架构思路,会使得学习比较容易。Drupal的核心是节点、模块、主题。正是因为模块的引入,极大地完善了Drupal的功能,吸引了众多Drupal爱好者为Drupal开发各类功能,方便了站点管理员和制作者不用写代码即可完成站点的制作与部署。
内容管理
首先让我们看一下Drupal的核心概念:内容节点、内容类型和字段。
节点(Node)、内容类型和字段
Drupal站点里的内容都是以节点形式来存储的,一个节点是某个类型的一个内容,如页面、文章、投票、论坛主题或者博客。正因为所有内容作为节点的这种概念,让我们可以自由定制内容类型。在Drupal核心代码中有Node模块来负责整个站点内容的创建、编辑、删除、设置和现实等功能。系统为每个节点默认添加了作者、创建时间、修改时间、内容类型等元数据属性。Drupal核心代码中的Field模块为系统提供了字段管理功能,用户可以为内容类型添加字段,并管理这些字段的显示。
Drupal安装完毕后,默认会创建两个文件类型:基本页面和文章,这两个类型只有标题和正文内容两个基本属性。而在网站中,这两个文件类型不能满足我们的需要,譬如图片新闻需要有图片属性,通知公告需要有附件,因此需要定义自己的内容类型,并为这些自定义内容类型添加不同的字段(属性),如图1所示。
除了以上字段类型,用户也可以自行定义字段类型,譬如Date模块提供的日期类型字段,Link模块提供的链接类型字段,Audiofield模块提供的音频类型字段,Email field模块提供的撰写email地址的字段,Telephone模块提供的书写电话号码的字段等。
字段是可以重用的,在某个类型下创建的字段,可以应用于另外一个内容类型。譬如图片新闻里的图片字段,可以用于普通新闻里添加图片。
一个字段的值可以限制只有一个或者指定个数,也可以无限个。譬如文章的标题数量只能有一个,而附件可以有无限个。
Drupal提供了默认的字段值的校验功能,譬如必选填写的字段,有红色*号标注,若用户没有填写,则会提示必须填写的警告提示。
字段在内容类型中的前后顺序也可以根据实际需要做出调整,编辑节点和显示节点时各字段的顺序可以完全不同,系统提供了Manage Fields和Manage Display两个界面来管理字段和管理显示界面。通过这两个界面来控制字段的类型、数量、显示方式。Drupal允许用户定义内容类型的显示模式,默认提供了全文(Fullcontent)、摘要(Teaser)等显示模式。在Manage Display界面中,用户可以切换显示模式进行定制。
分类(Taxonomy)
分类(Taxonomy)是一个非常强大的核心模块,它使得用户以类别、标签和元数据的形式来组织关键字,允许用户连接、关联和聚类站点内容。在Drupal中,分类是通过术语表来实现,术语表中包含词汇,这些词汇可以呈树状层级分布。
在国内传统网站中,其内容是通过栏目的形式来组织的,任何内容都是先有栏目,再有栏目下的内容,而在Drupal里,先有内容,再把这些内容按照某个关键字或者标签来进行分类,而这些分类就可以对应成传统网站的栏目,但分类不能完全等同于传统栏目。在Drupal中,通过菜单进行树状结构的组织,因此菜单在某种意义上才是传统栏目的对应,而分类主要的目标还是在于聚类相关内容。
分类在Drupal中是作为字段的形式存在的,在字段类型中,有一个“术语来源”类型,就是用来引用各个术语表。术语表里的词汇允许用户在添加内容时手工输入一个新的词汇,也可以在术语表管理中原先定义一组词汇。
在建设网站中,分类、关键字、标签等字段均通过术语来源类型实现,从而形成类别、标签云、访问关键字等展现形式。
常见几个字段
1.正文编辑
Drupal核心代码默认提供普通的文本区域编辑器,只能编辑纯文本内容,为了提供完整的HTML可视化编辑器,著名的CKEditor编辑器提供了模块与Drupal对接,允许用户在Drupal中调用CKEditor进行所见即所得的内容编辑界面。该模块支持外部文件浏览器,如CKFinder、IMCE,允许用户上传浏览文件,并且允许用户自定义编辑器的皮肤、工具栏、语言和默认状态。
2.图片
在一个网站中,图片扮演了吸引用户和直观展示内容的重要角色。每一个内容管理系统都要处理图片的存取。在传统网站中,上传到服务器上的图片已经处理后的尺寸已定的图片,在下次改版时,图片的尺寸与新版设计存在不匹配问题,也不能很好的适应目前多种浏览终端的尺寸问题。在Drupal中,图片上传到服务器后,并不会对原始图片进行修改,而是引入图片样式的概念,根据不同的需求生成新的图片文件。
在Drupal中,除了调用传统的GD来处理图片,还可以调用ImageMagick和GrpahicsMagick等专业图片处理工具来进行图片渲染,生成高质量的小文件图片。通过imagecache_actions模块,可以为图片添加水印和边框、调整亮度和透明度、调整图片尺寸以及其他图片处理相关功能。
在我们的网站中,尽量避免使用CKEditor的图片上传功能,而是使用图片字段的多个值的功能,把图片显示在内容后面。并且使用breakout模块来匹配不同的浏览器终端。
3.附件
附件的功能就是文件上传功能。Drupal提供了上传进度条等友好界面,并提供了描述属性,用来在显示时不用直接显示文件名。
4. 视频
Video模块为我们提供了视频上传播放的功能,借助于ffmpeg开源工具,我们还可以实现视频转换的功能。JW Player、jPlayer、Video.js等模块提供了页面播放视频功能,而实时转换功能可以生成x264编码的MP4文件,兼容了各种浏览器终端。Media Youku模块,则可以提供与国内较大的视频网站优酷进行对接。笔者所在的上海海事大学与优酷合作,将学校的视频上传至优酷,然后在学校官网通过MediaYouku模块对接,播放的媒体不在网站本地,而存储于优酷服务器。
视图(Views)
视图(Views)是Drupal的另一个功能非常强大的模块,没有该模块,几乎无法制作一个网站。视图为用户提供了一个查询可视化设计界面,通过该界面,用户可以选择要查询的字段、查询条件、排序字段、展现形式、分页功能以及上下文的条件。正因为这个查询的可视化设计,用户不需要接触数据库底层,也不需要了解PHP、MySQL就可以灵活地设计出各种查询,并且输出为页面或者区块,以及其他更多的服务接口。用户也可以通过模板来定制视图的展现形式。
在网站中,常见的列表,基本都是通过视图来实现的。各类slideshow、图片gallery也是通过视图来实现的。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。