Вывести коментарии в своем модуле

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

Аватар пользователя fil.diesel fil.diesel 17 декабря 2011 в 16:31

Нужно вывести возможность комментирования пользователями страницы, созданной ч/з модуль в D7.
Подскажите, как проще реализовать?

Комментарии

Аватар пользователя fil.diesel fil.diesel 17 декабря 2011 в 21:17

Это несколько страниц, выведенных ч/з $_GET['page']...
по принципу модуля

<?phpfunction examplepage_menu(){ 
  $items['new_year']=array(
                  'title' => 'С Новым Годом!',
                  'description' => 'Поздравление к Новому Году!',
                  'page callback'=>'examplepage_new_year',
                  'access callback' => 'user_access',
                  'access arguments' => array('access content'),
                  'type' => MENU_NORMAL_ITEM
                  );
    return $items;
}
function examplepage_new_year(){
    return "Поздравляем Всех с Новым годом!";
}?>

т.е. траницы выгледят new_year?page=1, new_year?page=2, и т.д.

Аватар пользователя enemis enemis 17 декабря 2011 в 22:38

До 7 го еще не дошел. Но по 6 скажу вроде как каменты могут применяться только к нодам. Чтобы сделать возможность комментирования вам необходимо очень много написать кода.
Более простое решение создайте тип материала программно hook_node_info не забудьте про module_form. Вешайте эту ноду на меню и пусть ее комментируют стандартными способами. для программного создания ноды можно использовать drupal_execute, или node_save. Закройте этот тип для создания только админом и все, зачем изобретать велосипед.

"fil.diesel" wrote:
т.е. траницы выгледят new_year?page=1, new_year?page=2, и т.д.

На самом деле это 1 страница и вы ей передаете get параметр page.

более правильно можно сделать вот так :

 $items['new_year/%']=array(
                  'title' => 'С Новым Годом!',
                  'description' => 'Поздравление к Новому Году!',
                  'page callback'=>'examplepage_new_year',
                  'page arguments'=>array(1),
                  'access callback' => 'user_access',
                  'access arguments' => array('access content'),
                  'type' => MENU_NORMAL_ITEM
                  );
    return $items;
function examplepage_new_year($page){
    return "Поздравляем Всех с Новым годом! А это кстати страница $page";
}?>
Аватар пользователя fil.diesel fil.diesel 18 декабря 2011 в 15:34

"enemis" wrote:
Более простое решение создайте тип материала программно hook_node_info не забудьте про module_form. Вешайте эту ноду на меню и пусть ее комментируют стандартными способами.

Ну раз нет альтернативных решений. Можно по подробней? Возможно из за кривизны рук у меня не получается воплотить идею в реальность..

Аватар пользователя enemis enemis 18 декабря 2011 в 17:58

Альтернатива может и есть но я не знаю.

"fil.diesel" wrote:
Можно по подробней?

http://api.drupal.ru/api/file/developer/examples/node_example.module/6
почитайте внимательно все понятно. Обязательно использовать хуки insert, update. Затем drupal_execute формируете $form_state и отправляете создается node в form_state указываете настройки о возможности комментирования и типа комментариев, см. comment_node_type(). Если проще можно сделать drupal_execute() для 6 или drupal_form_submit() для 7 эти функции отправляют форму, как будто вы нажали кнопочку submit, использовать их не для создания материала а для создания типа материала . Как по мне это не очень хороший способ тк. пользователь имеющий права сможет удалить тип материала, те в данном случае тип материала без привязки к модулю, первый способ изящнее так сказать.