Задача вставить текст в пустое тело ноды и показать этот текст при первом же вызове этой ноды.
Проверяю в темплейте preprocess_node, если тело пустое, то добавляю свой текст, сохраняю ноду node_save($node). Всё хорошо, но при первом вызове ноды текст не выводится. При втором вызове уже видно. Как показать сохранённый текст при первом же вызове?
Спасибоу
Комментарии
Алгоритм получается такой: я запрашиваю ноду с пустым телом, перед выдачей мне ноды вызывается theme_preprocess_node, в котором я вставляю в пустое тело текст. Но нода выводиться с пустым телом. Видимо вывод уже где-то сгенерился, и моя вставка легла только в БД, но на вывод уже не повлияла. При повторном вызове ноды видно ранее вставленный текст.
Пробовал после сохнанения ноды вызвать drupal_render(node_view(node_load($node->nid))) — не помогло
Задача подробнее: у меня ноды создаются по расписанию, автоматически, с пустым телом. Мне нужно при создании ноды пустое тело чем-то заполнить, для этого есть нужный текс, который генерится как мне нужно (всегда разный). так вот при создании ноды не нашёл как вставлять (что перехватить), решил theme_preprocess_node использовать — он хоть как-то работает
Решено созданием модуля:
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';
}
}
}