Массово изменить значение поля у определённых нод
Временами требуется массово сменить значение какого-нибудь поля, например цену товаров в определённой категории магазина.
Ниже, пример изменения значения текстового поля 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
Комментарии:
Нету комментариев для вывода...