我大部分时间都是通过 Drupal 6 将 Drupal 5 站点迁移到 Drupal 7。CCK 内容迁移做得很好,但有一个例外:“选择列表”格式中的所有字段都有键|标签对的几个问题之一在他们的“允许值”列表中。
如果原来的“允许值”列表没有使用键|标签对,像这样:
Alabama
Alaska
Arizona
迁移到 Drupal 7 时,允许的值会自动更新为 key|label 格式,如下所示:
1|Alabama
2|Alaska
3|Arizona
这不会那么糟糕,只是数据库中的实际数据没有相应地改变,所以对于现有数据,您会看到“Alabama”而不是“1”。据推测,任何新数据都会存储“1”而不是“Alabama”。此外,在编辑节点时,尽管该字段存在数据,但在选择列表中预先选择了值“-None-”。
在某些情况下,“允许值”列表确实使用了键|标签对(以字符串作为键),如下所示:
movie|Movie
television|Television
product_or_service|Product or Service
在这些情况下,密钥存储在数据库中。与前一种情况一样,在编辑节点时会预先选择值“-None-”(而不是显示现有数据)。迁移到 Drupal 7 时,键|标签对没有更改,尽管我注意到空格已被删除,例如:
product_or_service | Product or Service
变成:
product_or_service|Product or Service
但这里的问题是密钥显示在节点(如 product_or_service)而不是标签(如产品或服务)中。
在所有情况下,从视图中的这些选择列表创建的公开过滤器都不会返回任何结果。我尝试使用不是选择列表的其他字段(如文本字段)创建公开的过滤器,并且工作得很好(一旦在该视图的高级选项中选择了“使用 AJAX”)。
所以问题是:推进这些领域的最佳方式是什么?我想对现有节点和新节点一致地使用 key|label 数据。如果可能的话,我希望避免回溯到 Drupal 6 以重新开始迁移过程!
我在网上只找到了两个关于这个问题的参考资料。一个人似乎在遇到同样的问题后手动更新了数据(参见这篇文章的单条评论)。我不反对这样的解决方案,因为我们没有太多节点,但我需要一些非常具体的指导说明如何做到这一点(我通过 phpMy Admin 访问我的数据库,如果你知道我的意思的话)。
另一个人似乎已经在 Drupal 6 中修复了它——但我希望避免回溯到 6,因为我们已经在 Drupal 7 中并且几乎完成了(除了这个)!在这种情况下,我可能也需要具体的指示。
有人经历过吗?或者知道一个智能/简单的解决方案?任何想法或建议将不胜感激。谢谢!