Если я понимаю, что вы пытаетесь сделать;Вы хотите получить предварительный просмотр узла после того, как кто-то отправляет изменения?
Кнопка предварительного просмотра имеет свой собственный обработчик отправки, node_form_build_preview()
.Там он создает новый объект узла, используя данные в $form_state
, и запускает node_preview()
, который возвращает разметку для предварительного просмотра.
Если вы хотите захватить этот предварительный просмотр, когдапользователь нажимает кнопку предварительного просмотра, вам нужно будет использовать hook_form_alter
, чтобы добавить другой обработчик отправки к кнопке предварительного просмотра:
$['form']['buttons']['preview']['#submit'][] = 'mymodule_custom_preview';
, где mymodule_custom_preview - это имя вашей пользовательской функции отправки.,Посмотрите на node_form_build_preview()
для руководства, но ваша функция отправки будет выглядеть примерно так:
function mymodule_custom_preview($form, &$form_state) {
$node = node_form_submit_build_node($form, $form_state);
$preview = node_preview($node);
}
Также взгляните на node_form()
, который дает вам представление о том, как структурирована форма узла.Когда вы все закончите, в вашем модуле будет код, который будет выглядеть примерно так:
function mymodule_form_alter(&$form, $form_state, $form_id) {
if (strstr($form_id, '_node_form') !== FALSE) {
$['form']['buttons']['preview']['#submit'][] = 'mymodule_custom_preview';
}
}
function mymodule_custom_preview($form, &$form_state) {
$node = node_form_submit_build_node($form, $form_state);
$preview = node_preview($node);
// Do what you will with $preview.
}