среда, 1 июня 2011 г.

Программное создание комментария к ноде.

Есть задача: при создании ноды автор должен обязательно оставить к ней комментарий, ну типа нафига он её создал.
Если комментария нет, то нода не создается и выводится сообщение, что комментарий обязателен для заполнения.

Решение:
1. Создаем CCK поле, например field_authcomment и делаем его обязательным для заполнения.
2. С помощью модуля Rules в момент сохранения ноды выполняем следующий PHP код.

$form_state['nid'] = $node->nid;
$form_state['comment'] = $node->field_authcomment[0]['view'];;
$values = array();
$values['submitted'] = 1;
$values['values']['nid'] = $node->nid;
$values['values']['pid'] = '0';
$values['values']['uid'] = $node->uid;
$values['values']['name'] = $author->name;
$values['values']['author'] = $author->name;
$values['values']['subject'] = 'Комментарий автора';
$values['values']['comment'] = $node->field_authcomment[0]['value'];
$values['values']['op'] = t('Post comment');
$values['values']['submit'] = 'save';
drupal_execute('comment_form', $values, $form_state);


В результате при создании ноды от имени автора автоматически создается правильный друпаловский комментарий. Ловкость рук и никакого мошенничества.

Кстати, с помощью drupal_execute можно программно заполнить и засабмитить любую форму на сайте. Главное знать её ID и какие элементы её надо передавать.


Комментариев нет:

Отправить комментарий