Копирование данных из одного поля материала в другое - собственно как

Аватар пользователя alexsaab alexsaab 25 октября 2012 в 10:20

Приветствую, еще раз.

Как программно скопировать данные одного поля в другое?

Смотрите есть поле (картинка): field_img есть второе поле (тоже картинка) uc_product_image - такие поля делает Ubercart для добавления изображения по умолчанию.

Интересует вопрос как данные из одного поля скопировать в другое. То есть источник field_img приемник uc_product_image именно программно, всякие модули не предлагать - глючные они.

Навоял такой код:

       
        $nodes = db_select('node', 'n')
            ->fields('n', array('nid'))
            ->condition('n.type', 'product')
            ->execute();    
       
        foreach ($nodes as $n) {
            $node = node_load($n->nid);
            $node->uc_product_image = $node->field_img;
            node_save($node);
        }

Данные копируются и все нормально до тех пор пока не удаляем ненужное поле источник field_img.

Начинают пропадать файлы из каталога в которые записаны по умолчанию для поля field_img.

Далее если вставляем файлы из каталога (я их предварительно сохранил) в котором они были записаны до удаления поля, картинки появляются, но...

Обнаружил, что пропали записи в таблице file_managent ну я то уже ученый - я сделал дамп базы - выдираем из него все данные которые были в таблице file_managent, которые были до удаления поля field_img.

Получам результат и что пока все работает!

Нет будет ли далее подводных камней? Что мог я еще пропустить?

С ув., Алексей

Комментарии

Аватар пользователя alexsaab alexsaab 25 октября 2012 в 10:27

Да конечно я понимаю, что есть модуль: node_convert ну что-то все таки ставить модуль из-за одной операции - не разумно.

с ув., Алексей