Drupal 6:自定义配置文件字段并将数据保存到数据库

时间:2009-09-06 10:01:04

标签: php drupal

所以我添加了一些自定义配置文件字段(管理 - >配置文件),如果我无法将信息存储在数据库中,这些字段都很好但完全没用。我一直在寻找几个小时,试图找出“最佳实践”的方式来做这件事,运气很少。

我是否将新列添加到Users表?我创建一个全新的表吗?我甚至发现一个模糊的参考,核心配置文件模块应该为我添加这些列?并且您应该能够在核心配置文件模块中使用CCK(但我没有任何选项)?

然后我显然希望允许用户更新自己的字段,但自定义配置文件字段不包含在$ form数组中...

PS arrrggg! Drupal因为它的不一致而让我在弯道附近徘徊,不得不一直破解它!

1 个答案:

答案 0 :(得分:4)

如果使用核心配置文件模块,则会自动提供数据库存储,您无需修改​​数据库中的任何内容。在安装时,模块将两个表添加到数据库,profile_fields用于存储自定义字段定义,profile_values用于存储用户为这些字段提供的数据。

这些字段通过hook_user中的profile_user()实现自动添加到用户编辑表单中 - 相同的机制用于在加载时将这些字段的值添加到用户对象。

因此,如果这些字段没有显示给您,那么有些东西是可疑的 - 您是否添加了带有“类别”的字段?如果是这样,它们将不会显示在标准用户编辑页面上,而是显示在其他新页面上(每个类别一个)。这些是作为菜单类型MENU_LOCAL_TASK添加的,因此他们应该在用户编辑页面的顶部创建新的“标签”条目 - 也许您有一个不显示标签的主题?
要检查的另一件事是在字段配置表单上选择的字段可见性设置。如果将其设置为“隐藏”,则只能为管理员和模块/主题代码访问该字段。如果用户应该自己编辑它,你至少应该把它设置为'私人'。

至于使用CCK字段,我不认为核心配置文件模块可以实现这一点(可能有些扩展模块提供了此功能)。 Content Profile Module采取了不同的方法。它为用户配置文件创建自定义节点类型,以便将配置文件值存储为标准Drupal节点。这样做的一个优点是您可以将所有CCK字段用于配置文件,因为您只需将它们添加到创建的节点类型中。