使用Drupal动态创建字段

时间:2012-08-07 15:29:47

标签: drupal drupal-7 drupal-modules drupal-rules

好吧,假设我有一个基本的人口统计内容类型(客户端),我将其保存为节点。

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

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

新字段应包含以下内容 名字的前3个字母 姓氏的前3个字母 社会安全号码的最后4位数。

  

例如
  名字:约翰   姓氏:Doe
  SSN:123-45-6789

     

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

这可以通过规则模块完成,还是应该以不同的方式处理?如果我需要通过PHP脚本执行此操作,那么究竟应该在Drupal结构中添加它?

2 个答案:

答案 0 :(得分:1)

最简单的方法可能是使用Computed Field模块,它几乎是为了你想要做的而构建的:

  

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

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

答案 1 :(得分:-2)

我个人会构建一个自定义模块来处理这个问题并使用节点API来处理自定义字段(如果你想动态构建它们)?

模块可以在'root'上的modules目录中创建,或者它们应该在站点>中创建。全部>模块

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

您将能够通过案例陈述(例如

)挂钩API并处理请求
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
}