恐怕 Drupal 字段系统不是这样工作的,one field == one table(如果您包含每个字段的修订表,实际上是 2 个表)。
地址模块使用hook_field_schema() 为该特定字段定义几个列(看看address.install,你就会明白我的意思了)。
因此,如果您想将所有内容放在一个表中,您只需定义自己的字段类型(请参阅examples module,特别是field_example 以获得帮助)。
请记住,一旦安装了模块,您在 hook_field_schema() 中定义的列数将是静态的,并且您能够增加/减少它的唯一方法是使用 _update 挂钩为您的自定义模块。
此外,如果您正在破解 Commerce 模块中包含的文件...停止!:Commerce 仍处于起步阶段,您可能需要尽快对其进行更新。 ..一旦完成,您的代码更改就会消失,您的网站很有可能会处于不一致的状态。
Drupal 的全部意义在于,所有内容都被挂钩/外包,以便系统的其他部分可以对其进行更改。在 product.install 中没有什么可以通过在另一个模块中实现 Drupal 挂钩来更改。
如果您不确定,请发布另一个问题,详细说明您通过直接编辑 contrib 模块文件尝试完成的工作,并且 SO 上的 Drupal 专家之一将为您指明正确的方向 :-)
编辑
只是说我在 Drupal 7 中使用 Ubercart 已经有一段时间了,发现它是一个非常非常好的解决方案(许多 Commerce 贡献的模块仍处于 dev/alpha/beta 中;这是对于 Ubercart 贡献的模块来说则更少)。可能值得一看。
更多信息
我认为您在这里基本上有两个选择,但无论哪种方式,您都需要创建一个自定义模块 (excellent set of instructions here)。
选项 1:创建自定义字段
如果您是 Drupal 编码初学者,我建议这可能是完成您想要的最简单的方法,但它仍然不是完全直截了当。从上面的 Drupal 示例模块链接中获取field_example 模块并查看.install 文件,特别是field_example_field_schema() 函数。这定义了将在该字段的表中的列。然后查看field_example.module...几乎每个用Implements hook_x 注释的函数都是您想要复制到模块中并根据自己的需要进行调整的函数。
我认为这会更容易,因为 Drupal 会为您处理表格/表单字段的创建
这样您就不必弄乱数据库、架构或表单 API。
选项 2:创建自定义模块
此选项涉及实现您自己的表(就像您在评论中建议的那样),其中主键是产品的实体 ID,并且还包含您的所有自定义列。 (有关这方面的帮助,请参阅 Schema API documentation)。
然后您将实现hook_form_alter() 以添加用户输入数据所需的表单字段,然后实现hook_node_insert() 和hook_node_update() 以将此数据持久保存到您的数据库表中。如果不实际编写代码,很难深入了解更多细节,而且代码相当多!
希望对您有所帮助,对不起,我不能再具体了,但是如果不了解情况的所有来龙去脉,这并不容易