你现在的位置:首页 > PHP网站建设知识库 > Drupal > 正文

Drupal View 操作

在处理任何节点的显示之前,要为与这个节点相关联的所有数据创建一个容器。用 node 和 node_revisions 表中的数据库记录数据填充这个节点对象(node object),这个记录的主键字段值与 URL 中的节点 id 相同。这些数据包含节点类型、标题、摘要、主体、创建者和创建时间。

接下来,将任何扩展数据应用于这个节点对象。这通过两个挂钩来完成,load 和 nodeapi。 nodeapi 挂钩为任何模块提供了对 Drupal 核心操作(装载、查看、准备、删除)进行扩展的另一种方法。

因为 node_type 是已知的,Drupal 使用它判断 <node_type>_load() 函数是否存在。例如,如果节点类型是 announcement,那么调用 announcement_load() 函数,在这里可能用公告的发布日期和过期日期扩展默认的节点信息。

现在,Drupal 调用所有可用模块中的任何 nodeapi 挂钩。这个函数调用包含一个参数,它让 Drupal 装载节点对象,并允许将来自任何模块的额外数据插入这个对象中。

然后,Drupal 存储节点的标题,在请求生命周期的后期可以将这一信息包含在 Web 页面的标题中。

Drupal 现在开始将节点对象数据放入内容中的过程。默认操作是为节点主体和摘要创建并存储主题化的输出。如果 Drupal 找到 <node_type>_view() 挂钩,就会调用它来覆盖这些内容片段的主题化。例如,如果节点类型是 announcement,那么除了主体和摘要内容之外,announcement_view() 函数可能还会返回公告发布日期和过期日期的主题化内容片段。

与这个序列的装载部分一样,Drupal 现在寻找所有可用模块中的任何 nodeapi 挂钩。这个函数调用包含一个参数,它让 Drupal 对节点对象进行主题化,并允许任何模块修改或扩展主题化的主体片段中的内容。然后,将修改后的内容存储在节点对象中。

链接是另一种可以添加进节点对象的内容。它们为节点内容提供额外的主题化的 Web 链接,Drupal 允许任何模块通过 link 挂钩添加这些链接。

然后,Drupal 检查是否应该为这个节点显示评论。它使用节点对象中存储的任何评论数据对内容片段进行主题化,然后将结果存储回节点对象中。

最后,节点对象(包含所有数据和主题化的内容)被传递给主题化系统,从而作为主题化的节点显示。这时,节点已经完全构建好了,可以显示了。