我有一个类型文本的字段,我想将它转换为Drupal 7中的List(文本)类型。我不能简单地更改值,因为它不会让我,有一个简单的方法这样做?
答案 0 :(得分:5)
没有简单的方法,没有。据我所知,这些是您需要进行的手动DB更改:
在field_config
中,将type
列更改为“list_text”,将module
列更改为“list”为您的字段。
然后,您需要更改data
列中的序列化数组以匹配列表类型(此时它将具有文本类型的设置)。没有简单的方法向您展示如何在此处执行此操作,最好的方法是将序列化数组与列表类型的不同字段进行比较,然后您将能够看到需要删除/更改的值。 allowed_values
下的settings
数组将放置列表值的位置。更改后,重新序列化并将其放回到您所在字段的data
列中。
之后删除字段field_data
和field_revision
表中以field_myfield_
开头但不 field_myfield_value
的所有列(列表类型仍然需要该列)。
为value
列的这些表添加索引。
清除缓存
我必须警告说,完全没有经过测试,只是看看桌面结构看起来很有意义,为了以防万一,我们应该备份你将要玩的三张桌子。
答案 1 :(得分:5)
我刚刚在我的Helper module中编写了一些应该为您处理此问题的代码:http://cgit.drupalcode.org/helper/tree/lib/FieldChangeHelper.php?h=7.x-1.x
FieldChangeHelper::changeType('my_text_field_name', 'list_text');
对于大多数简单的案例和字段,它应该可以正常工作,但应该彻底测试。它目前还没有更新任何字段格式化程序,因此您希望在运行此字段后查看该字段的显示配置。