Drupal - обновление типа контента новыми полями не обновляет существующий контент - PullRequest
2 голосов
/ 27 января 2010

Быстрый вопрос, я думаю ...

Я создал сайт drupal, в котором есть несколько пользовательских типов контента. Я создал множество записей с ними, а затем мне пришлось изменить пользовательский тип контента, чтобы изменить одно из полей и присвоить ему новое значение по умолчанию.

Проблема в том, что существующие записи не обновляются с этим значением по умолчанию. Видимо, мне нужно пойти и заново отредактировать все, чтобы добавить значение по умолчанию.

Новые записи имеют значение по умолчанию. Там нет проблем.

Это просто Drupal или я пропустил трюк?

Спасибо, Хью

Ответы [ 3 ]

2 голосов
/ 28 января 2010

Я почти уверен, что это «вещь Drupal» (точнее, вещь CCK;)

Однажды я наткнулся на эту проблему и, насколько я помню, не нашел в CCK логики для применения изменений задним числом к ​​существующим узлам. Таким образом, вам необходимо обеспечить цикл загрузки / сохранения для каждого затронутого узла некоторыми способами. Для небольших сумм это может быть выполнено с помощью одной или другой массовой операции «admin / content / node / Overview». Для большого количества узлов это может потребовать небольшого скрипта, вызывающего node_load(), node_save() на всех задействованных узлах.

1 голос
/ 20 ноября 2015

Публикация для кого-либо в будущем: https://www.drupal.org/project/field_defaults

Позволяет обновлять существующее содержимое при создании поля или редактировании значений по умолчанию для существующего поля

0 голосов
/ 09 октября 2015

с использованием 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 - таблица, соответствующая моему полю и содержащая одно значение номинала записи, установленное с идентификатором объекта со ссылкой на узел

я использовал SQL insert ... выберите синтаксис

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)
...