Запись в ноду при создании [решено]

Главные вкладки

Аватар пользователя leninax leninax 27 марта 2013 в 23:07

Задача вставить текст в пустое тело ноды и показать этот текст при первом же вызове этой ноды.

Проверяю в темплейте preprocess_node, если тело пустое, то добавляю свой текст, сохраняю ноду node_save($node). Всё хорошо, но при первом вызове ноды текст не выводится. При втором вызове уже видно. Как показать сохранённый текст при первом же вызове?

Спасибоу

Комментарии

Аватар пользователя leninax leninax 27 марта 2013 в 23:12

Алгоритм получается такой: я запрашиваю ноду с пустым телом, перед выдачей мне ноды вызывается theme_preprocess_node, в котором я вставляю в пустое тело текст. Но нода выводиться с пустым телом. Видимо вывод уже где-то сгенерился, и моя вставка легла только в БД, но на вывод уже не повлияла. При повторном вызове ноды видно ранее вставленный текст.

Пробовал после сохнанения ноды вызвать drupal_render(node_view(node_load($node->nid))) — не помогло

Аватар пользователя leninax leninax 27 марта 2013 в 23:32

Задача подробнее: у меня ноды создаются по расписанию, автоматически, с пустым телом. Мне нужно при создании ноды пустое тело чем-то заполнить, для этого есть нужный текс, который генерится как мне нужно (всегда разный). так вот при создании ноды не нашёл как вставлять (что перехватить), решил theme_preprocess_node использовать — он хоть как-то работает

Аватар пользователя leninax leninax 28 марта 2013 в 2:56

Решено созданием модуля:

function mymodule_node_presave($node) {

if ($node->type == 'day_story'){

if (empty($node->body['und'][0]['value'])){

$node->body[$node->language][0]['value'] = 'mytext';
$node->body[$node->language][0]['format'] = 'full_html';
}
}
}