Доброго времени суток.
Необходимо из модуля создать ноду, основываясь на данных в файле xml.
Погуглив, пришел к выводу, что есть функция node_save, которая и отвечает за создание ноды, но немогу найти полный список переменных и спецификацию. В частности в каком формате указывать файл, для поля "imagefile_field", и чем определять таксономию.
Сейчас используется примерно такое:
<?php
$node = new stdClass();
$node->type = 'nodetype';
$node->title = '$title';
$node->body = '$descr';
$node->uid = 1; // id автора
$node->status = 1; // 1 - опубликовано, 0 - нет
$node->promote = 1; // 1 - показывать на главной, 0 - нет
//пример заполения полей ноды
//$node->field_publisher[0]['value'] = 'Foo'; // текстовое cck поле field_publisher
//$node->field_author[0]['value'] = 'Bar'; // текстовое cck поле field_author
?>
Буду благодарен за помощь.
Комментарии
сам же и отвечаю.
Для заполнения программного заполнения imagefield используется такой код:
<?php
$filepath = file_directory_path() . '/images/'. $image;
if (file_exists($filepath)) {
$field = field_file_save_file($filepath, array(), file_directory_path());
$node->field_photo = array(0 => $field);
}
?>
для добавления таксономии
$node->taxonomy[n] = tid;
Столкнулся с новым вопросом: как с помощью полученного кода добавить несколько картинок в поле.
варианты
$node->field_photo[] = array(0 => $field);
и$node->field_photo[n] = array(0 => $field);
неработают.Мне тоже интересно
А вот это сработает?
$node->field_photo = array(0 => $field1, 1 => $field2);
У меня задача решилась,дело оказалось в невмнимательности. $field получился массивом и все нужные значения содержались под индексом 0=>.
мой код, для импорта в ноду нескольких картинок:
foreach ($imgfile as $file) {
if (file_exists($file)) {
$field = field_file_save_file($file, array(), file_directory_path());
$node->field_foto[$a] = $field;
$a++;
подозреваю что счетчик тут вписан как пятое колесо телеге, и можно обойтись просто
$node->field_foto[] = $field;
, но пока работает -- не трогаюВот как я делал для загрузки файла:
««
<?php
$filename = $_FILES['files']['name']['image'];
$tmp_filename = $_FILES['files']['tmp_name']['image'];
$filepath = file_directory_path().'/'.$filename;
$filesize = $_FILES["image"]["size"];
$filemime = $_FILES["image"]["type"];
$timestamp = time();
if(is_uploaded_file($tmp_filename))
{
// Если файл загружен успешно, перемещаем его
// из временной директории в конечную
move_uploaded_file($tmp_filename, $filepath);
} else {
form_set_error('image', 'File missing for upload.');
}
$field = field_file_save_file($filepath, array(), file_directory_path());
$node->field_image[] = $field;
?>
»»