Приветствую вас, товарищи знатоки!
Сабж:
Создаю ноду следующим образом:
$node = new stdClass();
$node->title = $res_mass['typeautoparts_name'].' '.$res_mass['firm_name'].' '.$res_mass['model_name'];
$node->body = $res_mass['node'];
$node->type = 'product';
$node->uid = 1;
$node->filter = 1;
$node->status = 1;
$node->comment = 0;
$node->language ='ru';
$node->field_firm_name[0]['value'] = $res_mass['firm_name'];
$node->field_model_name[0]['value'] = $res_mass['model_name'];
$node->field_color_name[0]['value'] = $res_mass['color_name'];
$node->field_body[0]['value'] = $res_mass['body'];
$node->field_optic[0]['value'] = $res_mass['optic'];
$node->field_engine[0]['value'] = $res_mass['engine'];
$node->field_location_f_r[0]['value'] = $res_mass['F_R'];
$node->field_location_l_r[0]['value'] = $res_mass['l_r'];
$node->field_typeautoparts_name[0]['value'] = $res_mass['typeautoparts_name'];
$node->field_oem[0]['value'] = $res_mass['oem'];
$node->field_producer[0]['value'] = $res_mass['producer'];
$node->model = ($res_mass['origcode']+0).'';
$node->sell_price = ($res_mass['price']);
//*
//РАбота с картинкой
//*
//Загружаем
$file_jc=$res_mass['photos'][0];
$file='sites/default/files/tmp/'.basename($file_jc);
file_put_contents($file, file_get_contents($file_jc));
//Регистрируем в системе
// Get the file size
$details = stat($file);
$filesize = $details['size'];
// Get the path to your Drupal site's files directory
$dest = file_directory_path();
// Copy the file to the Drupal files directory
if(!file_copy($file,$dest)) {
echo "Failed to move file: $file.\n";
return;
} else {
// file_move might change the name of the file
$name = basename($file);
}
// Build the file object
$file_obj = new stdClass();
$file_obj->filename = $name;
$file_obj->filepath = $file;
$file_obj->filemime = file_get_mimetype($name);
$file_obj->filesize = $filesize;
$file_obj->filesource = $name;
// You can change this to the UID you want
$file_obj->uid = 1;
$file_obj->status = FILE_STATUS_TEMPORARY;
$file_obj->timestamp = time();
$file_obj->list = 1;
$file_obj->new = true;
// Save file to files table
drupal_write_record('files', $file_obj);
// change file status to permanent
file_set_status($file_obj,1);
$image_field['fid'] = 'upload';
$image_field['title'] = $node->title;
$image_field['nid'] = $node->nid;
$image_field['filename'] = $file_obj->filename;
$image_field['filepath'] = $file_obj->filepath;
$image_field['filemime'] = $file_obj->filemime;
$image_field['filesize'] = $file_obj->filesize;
$node->field_image_cache[0]=$image_field;
node_save($node);
Картинка не прикрепляется
Картинка загружается на сервер, регистрируется в "files" - но к ноде не прикрепляется
Комментарии
http://www.appnovation.com/creating-nodes-attachments-programmatically
Картинка к ноде может крепится разными способами. Например через image field.
Создайте ноду с картинкой в ручную и поглядите как она выглядит.
Да, пожалуй, извиняюсь за некорректно заданный вопрос.
Именно через imagefield и надо.
Ну так как знатоки дремлют сам решил свою проблему.И так прошу внимания
$node = new stdClass();
$node->title = $res_mass['typeautoparts_name'].' '.$res_mass['firm_name'].' '.$res_mass['model_name'];
$node->body = $res_mass['node'];
$node->type = 'product';
$node->uid = 1;
$node->filter = 1;
$node->status = 1;
$node->comment = 0;
$node->language ='ru';
$node->field_firm_name[0]['value'] = $res_mass['firm_name'];
$node->field_model_name[0]['value'] = $res_mass['model_name'];
$node->field_color_name[0]['value'] = $res_mass['color_name'];
$node->field_body[0]['value'] = $res_mass['body'];
$node->field_optic[0]['value'] = $res_mass['optic'];
$node->field_engine[0]['value'] = $res_mass['engine'];
$node->field_location_f_r[0]['value'] = $res_mass['F_R'];
$node->field_location_l_r[0]['value'] = $res_mass['l_r'];
$node->field_typeautoparts_name[0]['value'] = $res_mass['typeautoparts_name'];
$node->field_oem[0]['value'] = $res_mass['oem'];
$node->field_producer[0]['value'] = $res_mass['producer'];
$node->model = ($res_mass['origcode']+0).'';
$node->sell_price = ($res_mass['price']);
//*
//РАбота с картинкой
//*
//Загружаем
$file_jc=$res_mass['photos'][0];
//сохраняем temp файл
$file='sites/default/files/tmp/'.basename($file_jc);
file_put_contents($file, file_get_contents($file_jc));
//вот такая одна красивая строчка была на англоязычном сайте
//http://www.appnovation.com/creating-nodes-programmatically-have-cck-imag...
//вместо моих строк 30-50 я в шоке был)))
//сохраняем файл куда надо
$field = field_file_save_file($file, array(), 'sites/default/files/');
$node->field_image_cache[] = $field;
//сохраняем ноду
node_save($node);
if (!isset($file)) unlink($file);
file_put_contents($file, file_get_contents($file_jc));
Это что такое?
Сохранение фала в temp. стандартная PHP функция - Drupal тут не при чем.
А чем copy и [ru-api=file_copy]file_copy[/ru-api] не устроили?
Дело в том, что я пишу модуль импорта со старого сайта. А ссылки на картинки там не всегда "прямые". и не уверен что copy() может с URL работать.