Drupal 7:
$node = new stdClass();
$node->type = 'story';
node_object_prepare($node);
$node->title = 'Заголовок ноды';
$node->language = LANGUAGE_NONE;
$node->body[LANGUAGE_NONE][0]['value'] = 'Содержание ноды';
$node->body[LANGUAGE_NONE][0]['summary'] = 'Текст анонса';
$node->body[LANGUAGE_NONE][0]['format'] = 'filtered_html';
$node->uid = 1; // необязательно
$node->status = 1; // необязательно
$node->promote = 1; // необязательно
node_save($node);
Способ с помощью модуля Entity API:
$node = entity_create('node', array(
'type' => 'page',
'title' => 'test',
'body' => array(
'und' => array(
array(
'value' => 'body value',
'summary' => 'body teaser',
'format' => 'filtered_html',
),
),
),
));
node_save($node);
Drupal 6:
$node = new stdClass();
$node->type = 'story';
$node->title = 'Заголовок ноды';
$node->body = 'Содержание ноды';
$node->teaser = 'Текст анонса';
$node->uid = 1; // id автора
$node->status = 1; // 1 - опубликовано, 0 - нет
$node->promote = 1; // 1 - показывать на главной, 0 - нет
node_save($node);
Написанное актуально для
Drupal 6, Drupal 7
Похожие записи
- Добавить своё действие над сущностью в bulk operations
- Добавить своё действие над сущностью в contextual links
- Добавить своё действие над сущностью в operations links
- Добавляем на страницу управления отображением материала поля "Заголовок" и "Дата создания"
- Добавить вкладку/таб/локальную-задачу/local-task для определённого типа материала
Комментарии
А как же node_submit() перед node_save() ?
Добрый день!
Использую указанный Вами код в модуле для 7-ки.
Почему-то если заголовок и значение поля кириллические, то открывается "На сайте произошла непредвиденная ошибка. Пожалуйста, повторите попытку позже." и нода соответственно не создается. При латинском заголовке и полях все нормально.
Подскажите, пожалуйста, в чем может быть проблема?
читайте логи
Выдает ошибку
PDOException: в функции field_sql_storage_field_storage_write() (строка 448 в файле /home/u120949/mysiteru/www/modules/field/modules/field_sql_storage/field_sql_storage.module)
Гуглил, связано с кодировкой БД, но вменяемого решения так и не нашел :(
Проблема в кодировке файла модуля, а не БД
Нету ли способа, чтобы весь шаблон объекта ноды уже был собран(со всеми полями),
а значения полей можно было просто дописать в сформированый объект?
Можно через node_load() загрузить ноду такого же типа изменить нужные поля и сохранить.
Да, я уже разобрался, спасибо - именно в кодировке файла модуля и была проблема.
Я уже думал об этом. Если ноду, которую я загружал, ктотоо удалит, то код не будет работать. Или сайт чистый, и на нет нет еще контента, код не сработает.
При создании новой ноды или доугой entity нужно приходится сохранять значение созданых полей. Нашел хороший способ тут .
Поля присоеденины к новому товару с помощью функции field_attach_submit.
А как url необходимый задать?
что за url?
http://xandeadx.ru/blog/drupal/441 извиняюсь я имел ввиду alias )))Благодарю!
Стоит обратить внимание на функцию node_object_prepare(), которая делает сразу несколько полезных вещей:
- заполняет объект ноды данными по умолчанию для этого типа ноды (например, флаги статуса, комментариев,
показа и подобное).
- заносит идентификатор текущего пользователя в $node->uid (делает пользователя автором материала)
- вызывает хуки hook_prepare() и hook_node_prepare()
Добрый день уважаемый xandeadx!
Как мне создать программно ноду с данными, которые я предварительно отправил из формы?
Заранее спасибо!
В функции сабмита твоей формы достаешь все данные. Они находятся в
$form_state['values'];
Добавить комментарий