聚焦:CCK

CCK是一个极其灵活的表单创建框架。虽然Drupal的核心模块已经提供了创建不同内容类型(比如 Job Opening或 Application)的功能。但是它没有提供向新创建表单里面添加数据域的机制,在CCK被集成到Drupal的内核中以前(期望将来的版本会这样)。安装CCK是每个Drupal站点必须的第一步。在一个新安装的Drupal中,只有两个内容类型:Story 和Page。他们基本上是相同的,都是一个包含一个标题域和一个主体域的表单。任何新创建的内容类型也都是这样(这里主体域是可选项)。如果我们想在内容类型中添加其他的数据项,需要安装一个像CCK这样的第三方模块。图3-2显示了在用cck添加新的数据项之前的Strory内容类型。
     在启用了CCk模块之后,你可以向内容类型中任意添加数据项。结合上Drupal核心模块创建自定义内容类型的功能,我们就可以用CCK创建完全自定义的表单,自由添加内容了。图3-3展示了添加了诸如文本域,图像域,一组单选按钮等自定义数据项的表单。
     在添加了数据域后,CCK可以自动完成信息到数据库的保存任务,在数据提交之后,就可以用各种各样的方式显示数据了。

     
 图3-3 添加了新的数据域的Story内容类型表单

数据域


     从功能上讲,CCK建立两种用户端组件。第一种就是数据域,这些数据域让用户可以把数据保存到你的站点上,例如:整数,小数,文本。当我们在选择一个数据域添加到内容类型上去的时候,首先你必须决定在当前场合所需要的数据类型。输入到表单的基本数据类型如文本,数字或者一些更特殊的,比如一个节点或用户的关系,都包含在CCK核心的数据域类型中,如表3-1所示。其它的模块比如 Fivestar (http://drupal.org/project/fivestar), ImageField (http://drupal.org/project/imagefield), 和 Date (http://drupal.org/project/date), 可以添加更多的数据域类型。我们将在以后的第4,7,9章中讨论到。你可以到http://drupal.org/
project/Modules/category/88.看到全部CCK数据项类型的介绍。


表 3-1. CCK 内建的数据域类型

数据项类型 一般用法
Integer 存储数字的最有效方式。用做产品编号,标号,任何用到数字的地方,比如专辑的张数,会议的出席人数

Decimal

存储带小数数字的最有效方式,用于金额
Float 存储数字的最精确方式,试用于高精确度的场合,比如科学测量
text

可以存储任何的文本串。用于名字,描述,也可以用于更长的文本内容比如传记

Node Reference 节点引用,可以在一个数据域中引用任何站上的节点。用于在内容间建立关联。
User Reference 用户引用,可以在一个数据域中引用任何用户。用于在一个用户和一个内容间建立关联,比如   销售经理和联系人

 

                          CCK 与 Taxonomy 比较

Taxonomy和CCK都可以用来在创建内容的表单上创建可选的列,下面有一些指导意见来帮助你做出选择:


  Taxonomy 的主要目的是用来创建分类,所以如果你要把东西分类,你一般可以使用Taxonomy模块,如果你曾经建立了一个叫做分类的数据项,那就要慎重考虑一下了。Taxonomy模块是用做特殊用途的,而且很多模块和Taxonomy直接整合在一起。


  •Taxonomy提供了分层分类功能,可以很方便的排序和组织。如果你的分类需要做成树形结构,Taxonomy是一个很好的选择。


  •Taxonomy只提供了标题和描述两个数据项。如果你的需要包含更多的数据信息,最好先创建一个内容类型用来分类,让后创建一个属于那个节点的CCK数据项。


  •一个经验的规则是如果你能够减少数据项后内容类型还能满足要求,就使用Taxonomy,一个含有“技术”分类的文章,如果你删除分类关联还是一个文章,用Taxonomy比较适合。如果数据项是内容的一部分,比如专辑的作者,CCK是一个更好的选择。

 

Widgets

 

    数据的类型一旦确定,就该考虑它在表单的外观了。在CCK的术语中,表单的元素被叫做widgets。你是否需要一个下拉列表框或者一组单选按钮哪?还是需要选择框或一个自动填充的文本域?选择widget和用户输入数据紧密相关。记住widgets的不同适合你选择的数据类型相关的.CCK中包含的Widget类型显示在表3-2中,在数据项中,相关的模块经常出现更多的可选widget。

表3-2 CCK中内建的Widget类型

 

Widget类型 一般用法
Text field 这种widget用来输入大段的文本,比如传记,产品介绍。即支持普通文本也支持格式化文本

Single on/off checkbox

用于只需回答是或不是的地方。例如用来询问用户是否要添加一个邮件列表
Checkboxes/Radio buttons 用于用到多项选择的地方。Checkboxes用于支持多选的数据域。通常,在性别数据域中用单选,而在喜欢的颜色数据域中用Checkboxes
Select list

下拉列表框是checkboxes  radio buttons的一种变体。用于从多个选项中选取一个,可以占一行的空间显示多个选项

Autocomplete text field 输入前面几个字符,可以自动提示输入的文本框。比如输入“st”,就会有相关的提示,如Stewart,” “Studebaker,”和“Style“。用于要选择的条目太多,下拉列表不好显示的地方。但是这要求用户知道开头的字母

Text area (multiple rows)

这种widget用来输入大段的文本,比如传记,产品介绍。即支持普通文本也支持格式化文本

 

 

格式化

和输入数据项的配置不同,格式化工具让你更够调整显示在用户站点上的数据的样式,例如,整数可以显示为在千位上加逗号。如图3-4所示

  

 
 

    其他的模块可能添加附加的格式,给你一个很多显示的方式,例如在第七章中用到的ImageCache模块就是一个例子,它允许你的显示图像后改变它的大小。记住格式是依赖于数据的类型的,如果你要显示数字,你可以建立整数或者浮点数的数据项。CCK 不允许你在数据项建好以后改变数据的类型,你需要删除这个项,然后添加一个你需要的类型的项

Tags:

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
By submitting this form, you accept the Mollom privacy policy.