Массово изменить значение поля у определённых нод

Временами требуется массово сменить значение какого-нибудь поля, например цену товаров в определённой категории магазина.

Ниже, пример изменения значения текстового поля field_price у материалов типа product, у которых текстовое поле field_category имеет значение Игрушки:

drupal_set_time_limit(0);
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node');
$query->propertyCondition('type', 'product'); // фильтр по типу ноды
$query->fieldCondition('field_category', 'value', 'Игрушки'); // фильтр по категории
$result = $query->execute();
$nodes = node_load_multiple(array_keys($result['node']));
foreach ($nodes as $node) {
  $node->field_price[LANGUAGE_NONE][0]['value'] = 110; // новое значение поля
  node_save($node);
}
drupal_set_message('Обновлено ' . count($nodes) . ' нод');

Чтобы воспользоваться кодом, нужно поставить модуль Devel, открыть страницу devel/php, вставить код в textarea и нажать кнопку Выполнить. Перед выполнением кода обязательно сделайте бэкап базы.

Написанное актуально для
Drupal 7.x
Теги:
работа с нодами, работа с полями, работа с сущностями
Добавлено: 29 Июля 2018 20:14:54 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...