以艺修身的诗句:CCK & Views 模块使用小结(Drupal6.x)之四

来源:百度文库 编辑:偶看新闻 时间:2024/05/01 13:14:40

CCK & Views 模块使用小结(Drupal6.x)之四

由 Loocor 于 周六, 2008-08-23 00:40 提交。

接着第三部分的继续...

Views的口水开场白

开始Views的总结不是很容易,与CCK不同,CCK的应用反复在字段添加、编辑、设置之间,往返于多个页面,但其实过程是比较单一的,因为每个字段的处理都相对独立。Views,特别是Views2,在一个界面中完成了所有的工作,各个参数之间相互关联,在我看来,难度确实要高于CCK很多...

但Views确实是让人惊喜的,特别对于我这样的程序盲。尽管如上所说它拥有太多的关联的参数,但Views2提供了尽量友好的方式,来进行相应功能的设置。

因为Views是一组查询,所以,根据不同的主表(primarytable)Views被分为节点Node、评论Comment、节点修订Noderevision、文件File、术语Term、用户User几个类型。您希望抽取站内某些注册的用户信息并显示出来,那么选择Views应主要考虑User类型。 Views2安装后提供了很多预置的Views,可以启用、编辑查看相应的设置。

Views是一整套工具,因此除了上述核心内容之外,还提供了数据输入、输出的工具,控制缓存、预览等功能的设置,以及提供对Views1版本的转换。

后面将以创建具体的内容为例,为我们之前的本本创建一系列的“视图”,具体需求后面描述。

插播一项关于View Reference模块的信息

View Reference是CCK模块,用来为节点提供Views的引用,就在今天(2008-Aug-30),ViewReference发布了6.x-2.0版本。现在,ViewReference终于增加了对arguments的支持(包括php代码模式的arguments)。这意味着Views的应用灵活性再进一步。

将Views与CCK结合,是Views应用的重要方式之一。

我们将可能存在的需求罗列一下,然后尝试使用Views来完成这些需求,最后再来看看,Views都为我们提供了什么。

关于本本的一些扩展需求

通过CCK模块,我们创建了符合展现一个“本本”所需要的相关信息,但最终,它们都以一篇文章的方式表现了出来。我们的客户不会仅仅满足于这种形式的表现,那么我们可以考虑通过如下的形式来表现这些产品:

  • 本期主打,这是比较有意思的一个功能,我们最新的本本比如Macbook pro,或者按照某个规则指定的产品,将以独立的形式出现在首页顶部的某个位置,类似这个样子(抱歉,这不是Macbook):
  • 分类产品,也是很典型的样式,比如我们按Macbook、MacBook air或者Macbook pro分类展现我们的新本本,前5款(或者更少/更多)将出现在这个分类产品列表里面,类似这个样式:
  • 产品列表,对于客户快速查阅本本的型号、价格和规格,这个模式可能更方便,没有参考图,类似最常见的Excel电子表单。

不好意思,拖的越来越久了...

需求分析——本期主打

从前面给出的本期主打样图来看,构成元素还是比较简单:一幅图片、三组文字(权且认为是简述、标题、摘要)以及一个More按钮。这些元素的关系也 很简单,都是某主打产品节点信息的一部分。至于布局,按我的惯性理解,CSS可以完成大部分的布局需求,所以最后应该是以使用CSS润饰收尾的。

知道了这部分内容的构成,主要思路就很简单了:
1、抽取节点的内容(字段)——》2、设置基本布局——》3、CSS细节调整;
其中第1、2部分就是通过Views来实现的。
当然,我们还需要考虑其他的问题,才能最终满足实际应用,比如:

  • 这项内容(本本)的状态,是否允许未发布的内容(本本)也显示出来?
  • 要查看(访问)这项内容,是否需要某些权限的许可(比如访客是否可以直接看到——当然)?
  • 再或者,以什么标准判定内容是“本期主打”?

等等,这些方面的问题/需求,也大多能在Views中得到解决。

关子卖的够多了,下面开始进入具体的Views操作。

创建一个Views(定制视图)

快速创建一个Views

  1. 进入 Administer › Site building › Views 页面(路径admin/build/views);
  2. 点击 Add 添加一个 Views,如图设置之后点击继续;
  3. 进入Views编辑页面,各区域名称分别为如下所示,不求精确,仅进行辨识;
  4. 在页面添加分析区下拉菜单处选择区块Block,然后点击增加显示(Add display);
  5. 在Views设置区Fields部分点击右上角的十字图标,开始添加字段,Views设置区下方将呈现如下设置界面;
  6. 在字段组Group下拉框处,选择Content,点选如下几项;
    1. Content: Image: 外观 (field_benben_images);
    2. Content: Text: 特性 (field_benben_feature);

    如图所示:

  7. 在字段组Group下拉框处,再切换至Node,点选Node: Title,然后点击添加Add按钮;
  8. 紧接上步,将弹出一系列区块配置字段“Block: Configure field”的界面,一次设置以上步骤添加的字段并点击更新默认显示(Update default display),具体设施分别如下:
  9. 分别对外观、特性、标题设置完毕后,Views设置区Fields部分如图所示:
  10. 注意下面的实时预览(Live preview)终于出现了内容,刚才一些红色的警告信息也消失了:
  11. 继续在Views设置区Filters部分添加如下Node: Type内容(过程与刚才添加字段相似):
  12. 在紧接着的页面中按照如下设置进行配置,点击更新默认显示(Update default display):
  13. 点击Views设置区下方的保存按钮保存设置,准备继续进一步调整——我们需要确保显示的产品是发布的,所以再增加一个节点发布状态(Node: Published)的过滤,并选择Published选项:
  14. 我们还需要调整显示本本的数量,因为我们只需要1个型号显示在首页。点击基本设置(Basic settings)部分的显示条目数(Items to display),进行如下设置:
  15. 问题来了,如何保证显示的这一个本本是我们的主打呢?可以有两种假设:
    1. 所有最新发布的本本就是最新主打;
    2. 最新发布的标记有主打的本本是最新主打;

    第一种假设是比较牵强的,但是很好实现;第二种存在一个问题,那就是如何标记本本是否是主打产品。
    这里我们只按照第一种假设为例进行示范。但是实现第二种的方法也比较简单,运用CCK增加一个本期主打字段,并将控件模式选择为选择框,然后再使用过滤器筛选就可以了。
    但无论如何,这两种假设都需要一个顺序的问题,所以我们在排序规则(Sort criteria)处增加一项以发布时间为基准的排列,进行如下的设置:

    我们选择了节点发布日期Node: Post date,当然也可以选择其他的一些参数。对于发布日期过滤器,设置排列顺序和精度两项参数:

  16. 因为,我们创建的是区块Block,还需要为Block指定一个名称,然后我们才能在页面中添加这个区块,点击Block settings的None添加一个管理描述名称:
  17. 点击保存按钮,然后我们去区块管理页面将我们的Views添加到需要的位置。比如首页的正文部分:
  18. 最终的首页效果如图:
  19. 注意先别喷,我知道现在的结果距离开始的设定实在相差太远:图片很大而且撑破布局、居然显示在页面底部、文字格式内容超多等等等等。这涉及两个需要解决的问题:主题区域(Theme region)的设置以及Views主题的设置。主题区域的设置属于模板相关的讨论,建议参阅葛大翻译的《Drupal 6.x 主题制作指南》。我们下面来看看Views的主题如何设置。

Views的主题设置

在我看来,Views2这个版本主题设定的手段先进了许多,直接利用Views的设定,配合CCS可以完成很深很细的外观控制。点击基本设置中的“Theme: Information”,会显示如下的界面: