Стандартная форма drupal в popup

26.07.2017

На странице товара отображаются комментарии к нему, реализованные через модуль Comment. Для авторизованных пользователей ниже располагается кнопка, при клике на которую появляется стандартная форма добавления новых комментариев (модуль Comment). Как реализовать эту форму в модальном окне, с валидацией формы через Ajax? Нативным программирование на php и js это сделать могу быстро. Drupal знаю плохо.

Узнавай о новых статьях сайта - первым. Просто подпишись на рассылку.

Комментарии (6)

Profile picture for user pantey
pantey
27.07.2017

Для валидации через Ajax, попробуйте модуль - ajax_comments.

Вывод в модальное окно форму добавления - здесь только через темизацию, CSS + JS. Оборачиваете форму в враппер с абсолютным позиционированием и дальше через CSS добиваетесь необходимого результата. Файлы темизации для формы комментариев:

  1. comment-wrapper.tpl.php
  2. comment.tpl.php (вряд ли пригодится)

Плюс можно через hook_form_FORM_ID_alter() навесить враппер на форму.

Profile picture for user Николай
sunn
27.07.2017

Спасибо. Темизацию формы произвел в указанных файлах, все норм. Модуль ajax_comments установил, проверил, работает, только коммент сразу не появляется только через f5. В настройках к модулю нет по данному случаю параметров. Вот с модальным окном получается следующее из ваших рекомендаций: я обрамляю формы в div с классом, в правилах css скрываю этот div. Далее создаю кнопку с id. Через js вешаю событие на кнопку которое показывает скрытый правилом div. При этом к div закрепить метод colorbox ( ex: jQuery('.show-form').colorbox() ) , colorbox, т.к. этот модуль стоит. Я правильно понимаю? Прочитал тут про модуль auto-dialog (http://xandeadx.ru/blog/drupal/733) и возник вопрос как указать форму добавления комментариев в ссылке чтобы форма открылась в модальном окне. Возможно ли такое?  

Profile picture for user pantey
pantey
27.07.2017

Если комментарий сразу не отображается, то скорее всего проблема c ID элементами формы, а точнее с ID комментария на который был дан ответ или на форму комментария, именно по этим ID выбирается в DOM место вставки созданного комментария - копайте в файлах темизации, скорее всего не выводите ID комментария в файле comment.tpl.php

Если у вас уже используется Colorbox, можете его использовать, только я не уверен, что он может работать с формами, если только через iframe использовать, что-то вроде этого

$(".iframe").colorbox({
  iframe:true,
  fastIframe:false,
  width:"450px",
  height:"480px",
  transition:"fade",
  scrolling   : false
});

AutoDialog - из описания понял, что он  открывает только страницы, а это значит, что выбирает все содержимое указанной страницы c #content. Возможно ошибаюсь, код не смотрел. Форма ответа на комментарий имеет свою страницу, а вот форма простого добавления нет, не думаю что он вам подходит для этой задачи. Да и по сути задача не сложная, можно только CSS обойтись без доп. модулей -  я про вывод формы в окне

Profile picture for user Николай
sunn
27.07.2017

Спасибо еще раз. Вообщем решил пока не трогать AutoDialog потому как времени нет, а показать уже нужно, после разберусь. Средствами css отображаю div с формой  похоже на модальное окно. А вот с добавлением комментариев через ajax все равно не получается разобраться. Вернул дефолтный шаблон comment.tpl.php сбросил кеш, но все равно коммент, если валидация успешно пройдена, отображается только после f5.

Profile picture for user pantey
pantey
27.07.2017

поставьте дефолтную тему, bartik например и проверьте. 

PS: проверил у себя - все корректно работает

Profile picture for user Николай
SUNN
27.07.2017

Проверю на тестовом сайте, спасибо за помощь. Помогли разобраться с модулем Auto-dialog. Все отлично работает. Проблема была только получить страницу на которой располагается форма добавление комментарием - /comment/reply/[nid].