Пусть есть некоторый подкаталог и иногда возникает задача массово изменить какое-либо поле в подкаталоге.
Для этого можно создать в любом месте произвольный файл php со следующим кодом и запустить его из командной строки 'php <filename>.php' :
<?php
chdir('/usr/lib64/elis/drupal/');
require_once('drupal.bootstrap.php'); // Запускаем ядро Drupal
$node = node_load('12345'); // node типа 'subj' у которого есть поле $field_name
$filter = array('nodeType'=>array('ebook', 'web')); // типы нод, на которые будем копировать поле. Если хотите скопировать поле на все типы нод, то передайте в фильтр пустой массив $filter = array();
$field_name = 'field_tags'; // Поле, которое копируем с $node на все ноды в подкаталоге типов.
$autosave = true; // Надо ли сохранять ноды или скопировать поля без сохранения
$nodes = ElisHelper::copyFieldToAllNodesOfCatalogTree($node, $field_name, 'replace', $filter, $autosave); // В данном случае $node->field_tags будет скопировано на ноды типа 'ebook' и 'web' в подкаталоге с nid '12345'.
// в $nodes массив всех нод, для которых были изменены поля.
Пример установки метаданных для статей какого-то выпуска научного журнала[править]
Предположим где-то в каталоге с nid '1234' был размещен том '24', выпуск '4' некоторого журнала и при размещении отдельных статей эти метаданные забыли указать.
Но метаданные нужны для правильного размещения в Google Scholar и их следует заполнить.
Тогда можно на ноде каталога заполнит правильно поля field_volume, field_issue, field_serial и произвести массовое копирование этих полей.
<?php
chdir('/usr/lib64/elis/drupal/');
require_once('drupal.bootstrap.php'); // Запускаем ядро Drupal
$node = node_load('1234');
$filter = array('nodeType'=>array('ebook'));
ElisHelper::copyFieldToAllNodesOfCatalogTree($node, 'field_serial', 'replace', $filter, true);
ElisHelper::copyFieldToAllNodesOfCatalogTree($node, 'field_volume', 'replace', $filter, true);
ElisHelper::copyFieldToAllNodesOfCatalogTree($node, 'field_issue', 'replace', $filter, true);
// ElisHelper::copyFieldToAllNodesOfCatalogTree($node, 'field_open_access', 'replace', $filter, true); // uncomment for Google Scholar.