2012-08-07 81 views
1

好吧,让我说我有一个基本的人口统计内容类型(客户端),我保存为节点。使用Drupal动态创建字段

我需要为我们偶尔需要使用的外部数据库创建一个密钥。

我想让Drupal在客户端内容类型中收集三个字段的片段,并将它们合并到单个字段中以保存在客户端内容类型中。理想情况下,这应该在创建新(客户端)节点时完成。

新字段应该包含姓以下 前3个字母 姓 的前3个字母和最后一个4位数字的社会安全号码。

例如
姓:约翰
名字:李四
SSN:123-45-6789

一个新的领域应建立,让我们称之为fk_database。使用上面的例子,字段>创建将是 - > johdoe6789

这可以通过规则模块来完成,还是我应该以不同的方式来处理?如果我需要通过PHP脚本来做到这一点,那么应该将其添加到Drupal结构中?

回答

1

最简单的方法很可能是使用Computed Field模块,这几乎是专为正是你想做的事:

计算字段是一个非常强大的CCK字段模块,可让你添加为您的内容类型定制“计算字段”。这些计算出来的字段用您通过PHP代码定义的值填充。你可以利用任何可用于Drupal的东西,包括其他字段,当前用户,数据库表,你的名字。

如果您确实需要在代码中执行此操作,请查看hook_entity_presave()这可能是您运行代码的最佳位置。

+0

我一定会看看计算领域模块,似乎会做我正在寻找的东西。对于Drupal来说很新,所以我很欣赏这些头像。 – moonman 2012-08-07 15:59:21

-2

我个人会建立一个自定义模块来处理这个问题,并利用节点API来处理自定义字段,如果你想立即构建它们的话?

模块可以创建无论是在对“根”或modules目录实际上他们应该在站点>全部>模块

你必须打开它在后端下网站建设>模块启用它

您将能够钩入API并通过case语句处理请求,例如

function hook_node_load($node, $types) { 
    //do something on node load 
} 

function hook_node_update($node) { 
    //do something on node update 
} 

function hook_node_insert($node) { 
    //do something on node insert 
} 
+0

这个问题有一个[tag:drupal-7]标记...这段代码全部用于Drupal 6.加上你的建议,自定义模块可以放在核心模块文件夹内是完全错误的。这应该永远不会做。 – Clive 2012-08-07 15:42:09

+0

Ahhh道歉没有看到 - 你需要使用像函数hook_node_load($ node),函数hook_node_update($ node),函数hook_node_insert($ node)的升高方法 – Ryank 2012-08-07 15:49:08