我想快速提问......
我做了一个drupal网站,它有一些自定义内容类型。我用这些创建了大量记录,然后我必须修改自定义内容类型以更改其中一个字段并为其指定一个新的默认值。
问题是现有记录不会使用此默认值进行更新。显然我必须去重新编辑所有内容以添加默认值。
新记录具有默认值。没问题。
这只是一个Drupal的事情还是我错过了一个技巧?
谢谢, 休
答案 0 :(得分:2)
我很确定这是'Drupal'(更确切地说,是一个CCK的东西;)
我偶然发现了这个问题,据我所知,在CCK中没有发现逻辑将追溯应用于现有节点。因此,您需要通过某种方式确保每个受影响节点的加载/保存周期。对于少量,这可以通过'admin / content / node / overview'上的一个或另一个批量操作来完成。对于更大量的节点,这可能需要在所有受影响的节点上调用node_load()
,node_save()
的小脚本。
答案 1 :(得分:1)
将来发布给任何人: https://www.drupal.org/project/field_defaults
允许您在创建字段或在现有字段上编辑默认值时更新现有内容
答案 2 :(得分:0)
使用sql,考虑到未设置字段值的节点是
SELECT nid,vid
from node where type='procedure' and nid not in (select entity_id from field_data_field_pr_choix_du_document)
field_data_field_pr_choix_du_document是与我的字段对应的表,包含一个条目值,设置为实体ID,引用节点
我确实使用了SQL插入...选择语法
https://dev.mysql.com/doc/refman/5.5/en/insert-select.html
INSERT INTO `field_data_field_pr_choix_du_document` (`entity_type`, `bundle`, `deleted`, `entity_id`, `revision_id`, `language`, `delta`, `field_pr_choix_du_document_value`)
SELECT 'node','procedure',0,nid,vid,'und',0,'Importer un document'
from node where type='procedure' and nid not in (select entity_id from field_data_field_pr_choix_du_document)