将字段文本转换为列表(文本)drupal 7

时间:2011-10-18 18:19:18

标签: drupal drupal-7

我有一个类型文本的字段,我想将它转换为Drupal 7中的List(文本)类型。我不能简单地更改值,因为它不会让我,有一个简单的方法这样做?

2 个答案:

答案 0 :(得分:5)

没有简单的方法,没有。据我所知,这些是您需要进行的手动DB更改:

  1. field_config中,将type列更改为“list_text”,将module列更改为“list”为您的字段。

  2. 然后,您需要更改data列中的序列化数组以匹配列表类型(此时它将具有文本类型的设置)。没有简单的方法向您展示如何在此处执行此操作,最好的方法是将序列化数组与列表类型的不同字段进行比较,然后您将能够看到需要删除/更改的值。 allowed_values下的settings数组将放置列表值的位置。更改后,重新序列化并将其放回到您所在字段的data列中。

  3. 之后删除字段field_datafield_revision表中以field_myfield_开头但 field_myfield_value的所有列(列表类型仍然需要该列)。

  4. value列的这些表添加索引。

  5. 清除缓存

  6. 我必须警告说,完全没有经过测试,只是看看桌面结构看起来很有意义,为了以防万一,我们应该备份你将要玩的三张桌子。

答案 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');

对于大多数简单的案例和字段,它应该可以正常工作,但应该彻底测试。它目前还没有更新任何字段格式化程序,因此您希望在运行此字段后查看该字段的显示配置。