Решил перевести сайт с самописного двжика на друпал 7. Пытаюсь программно добавить ноды через node_save() и drupal_form_submit() - с текстовыми полями title и body все хорошо, но к ноде также нужно прикрепить изображение. Для изображения в типе материала создано специальное поле (filed_teaser) с типом "Изображение".
Пытался и так:
$file_temp = '/home/neos/www/sites/default/files/1.jpg';
$node->field_teaser = array(
array(
'fid' => 'upload',
'title' => basename($file_temp),
'filename' => basename($file_temp),
'filepath' => $file_temp,
'filesize' => filesize($file_temp),
'description' => basename($file_temp),
'list' => 1,
),
);
node_save($node);
Нода создается, но ничего не прикреплено
И так:
drupal_form_submit('news_node_form', $form_state, (object)$node);
Опять же нода создается, но ничего не прикреплено.
Что только уже не перепробывал, но либо ошибки, либо ничего не прикрепляется...
Уже вторые сутки бьюсь, но никакого продаижения нету.
Прошу помоши сообщества. Заранее благодарен!
Комментарии
там аналогично все полям CCK а насчет файла - файл должен быть загружен и прописан в таблице files
только тогда filefield будет сохранено - если пичкаете ноду данными сами и сохраняете черех node_save
в 6 и 7 принцип работы почти не отличается. названия функций тока сменились
Спасибо, об этом и не задумался (думал node_save() сама в таблицу с файлами добавит).
В общем вот итоговое решение:
'uid' => 1,
'filename' => '1.jpg',
'uri' => 'public://1.jpg',
'filemime' => 'image/jpeg',
'filesize' => 59153,
'status' => 1,
'timestamp' => time(),
))->execute();
$node->field_teaser['ru'][0]['fid'] = $fid;
Подскажите. ситуация след. создаю пограмно ноду
и пробую прикрепить к ней изображение:
$file->uid = 1;
$file->uri = $img_path . $new_node['img'];
$file->filemime = file_get_mimetype($file->uri);
$file->status = 1;
$dest = file_default_scheme() . '://art';
$file = file_copy($file, $dest);
$node->field_art_image[$node->language][0] = (array)$file;
node_save($node);
файл копируется, прописывается в file_managed, нода добавляется, НО:
field_data_field_art_image и file_usage пустые, и соответственно нода просматривается без изображения.
В чём ошибка?
А если попробывать $node->field_art_image[$node->language][0]['fid'] = $file->fid
А если попробывать $node->field_art_image[$node->language][0]['fid'] = $file->fid
Не, так не сработает. Оказалось что надо язык файла указать как und
$node->field_art_image['und'][0] = (array)$file;