Требуется:
При нажатии на кнопку, чтобы создавался, определенный тип материала, и пользователю отсылалось личное сообщение. Каким образом это реализовать, или может быть существуют готовые модули для этих целей, премного благодарен за любую помощь.
Требуется:
При нажатии на кнопку, чтобы создавался, определенный тип материала, и пользователю отсылалось личное сообщение. Каким образом это реализовать, или может быть существуют готовые модули для этих целей, премного благодарен за любую помощь.
Комментарии
расшифруйте что, кому и после чего отсылается, и для чего нужно....
Делаете скрытую форму с заполненными полями по вкусу, потом по submit создаете ноду и прикручиваете сообщение (через свою систему или через мессаге модуль).
Для примера советую посмотреть как генерирует контент модуль devel - там есть функция генерировать контент, так вот ее реализация это и есть ответ на ваш вопрос.
Посмотрите файл devel_generate.inc, функцию devel_generate_content_add_node(&$results)
Кстати форму можно в этом случае делать и без полей, в общем удачи в эксперименте)
Какому пользователю? Попробуйте триггер стандартный.
Есть какой то тип материала, созданный каким то пользователем. Допустим у пользователя uid = 78
В теле материала есть кнопка "связаться" (с пользователем). По ее нажатию происходит создание типа материала "Чат" и пользователю на материале которого была нажата эта кнопка отсылается приглашение в чат.
sadmin каким образом делать скрытую форму? Буду очень благодарен за ссылки на информацию. *ушёл гуглить*
Что-то тут не логично, по-моему. Создавать тип материала при каждом обращении, это же сколько типов будет.
Нcсчет скрытой формы - смотрите API (Input со свойством hidden)
ой, конечно же происходит создание экземпляра типа материала чат. ну нода вобщем.
Как? создавать ноду по сабмиту?
нашел в апи такое вот
<?php// Create a new node
$form_state = array();
module_load_include('inc', 'node', 'node.pages');
$node = array('type' => 'story');
$form_state['values']['title'] = 'My node';
$form_state['values']['body'] = 'This is the body text!';
$form_state['values']['name'] = 'robo-user';
$form_state['values']['op'] = t('Save');
drupal_form_submit('story_node_form', $form_state, (object)$node);?>
размещаю этот код в PHP файле который расположен в корне сайта, к которому по сабпиту происходит обращение.... ничего не происходит.
Программное создание ноды:
<?php
module_load_include('inc', 'node', 'node.pages');
$node_form_state = array();
global $user;
$node = array('type' => 'story');
$node_form_state['values']['title'] = 'My node';
$node_form_state['values']['field_some_cck_field'][0]['value'] = '12345';
//$node_form_state['values']['name'] = $user->uid? $user->name : 'Гость';
$node_form_state['values']['op'] = t('Save');
drupal_execute('story_node_form', $node_form_state, (object)$node);
?>
То есть то же что и у вас, только drupal_execute, что правильней.
Спасибо, то что надо, все работает.
Возник еще один вопрос. А как перенаправить пользователя автоматом на созданную ноду?
<?php
...
drupal_execute('story_node_form', $node_form_state, (object)$node);
drupal_goto('node/'.$node->nid);
?>
не сработало.
Сделал так:
drupal_goto("node/$nod");
Это не правильно. Смотрите $node_form_state, может там есть nid. Но вообще странно - в $node должно быть...
$node->nid возвращает пустое значение...
с одной стороны удивительно.. с другой, код во отдельном php скрипте, и может быть $node->nid содержит nid как раз для него.. то есть null
Пробывал drupal_goto('node/'.$node_form_state['values']['nid']);
все равно кидает на
www.example.com\node
Так, с этим разобрался
<?php $node = node_load(array('nid' => $node_form_state['nid']));
drupal_goto("node/$node->nid");
?>
Теперь как бы, отправить сообщение пользователю, с помощью модуля private message после создания этой страницы...
Это что за изврат?!
Вот так:
<?php
drupal_goto("node/{$node_form_state['nid']}");
или
drupal_goto('node/'.$node_form_state['nid']);
?>
(зачем делать лишнюю загрузку ноды, если нужет просто её номер, который и так есть!)
PrivateMessage посмотри код модуля там наверняка будет ф-ция отправки сообщения.
<?phprupal_goto('node/'.$node_form_state['nid']);?>
Да, так гораздо лучше...
Отправку сообщения решил проше, и в моем случае даже лучше. место отправки ЛС, я отправляю емаил
<?php$subject = "Приглашение в чат на example.com";
$message = "Вас приглашать пользователь $name2 в чат. Чтобы перейти к чату, вы можете пройти по cсылке example.com/node/{$node_form_state['nid']}";
$from = db_result(db_query("SELECT mail FROM {users} where uid = $id2"));
$to = db_result(db_query("SELECT mail FROM {users} where uid = $id1"));
mail($to, $subject, $message, $from);?>