Пользовательская контактная форма на узле Drupal CCK

Как лучше всего создать контактную форму в Drupal 6 для каждого узла определенного типа? У меня есть несколько узлов CCK типа "профиль", которые имеют адрес электронной почты в качестве поля. Я хочу иметь представление для каждого узла с контактной формой, которую пользователи могут заполнить и отправить со своим собственным адресом электронной почты в качестве обратного адреса (чтобы дальнейший контакт осуществлялся вне офиса).

По сути, я просто хочу, чтобы этот первоначальный контакт по электронной почте осуществлялся через мой сайт, и когда получатель отвечает, он просто переходит на адрес, который отправитель указал при заполнении контактной формы.

Вы можете спросить себя, почему я не использую личную контактную форму, которая запекается в Drupal. Проблема заключается в том, что способ, которым мое учреждение развертывает свои экземпляры Drupal для использования локальных учетных записей Kerberos, учетные записи пользователей, которые он создает в Drupal, не имеют адресов электронной почты. Они просто получают базовую учетную запись скелета с именем пользователя. Я на самом деле не хочу заставлять пользователей проходить очередную серию редактирования информации о своей учетной записи, потому что они, скорее всего, просто не будут этого делать.

1 ответ

Решение

С самим узлом делать нечего, все, что вам для этого нужно - это форма с полями (от, до, тема, сообщение) и пользовательский обработчик отправки для этой формы. Вы можете реализовать все это в пользовательском модуле, используя API форм для создания формы и написания настраиваемой отправки для нее. И в этом сообщении вам необходимо отправить электронное письмо через drupal_mail () - посмотрите на это, оно также предоставляет примеры. Эта тема может помочь вам с формами.

Затем, если вам нужно разместить эту форму внутри узла, вы можете сделать следующее: через hook_nodeapi, в операции "view", добавить форму, которую вы создали ранее, вы можете проверить определенный тип_узла и использовать существующие значения полей (вы упомянули cck поле с электронной почтой) для предварительного заполнения формы. Так что каждый раз, когда пользователь просматривает узел, он видит эту форму.

В качестве логического продолжения вашей задачи, я думаю, что имеет смысл взглянуть на систему меню и создать локальную задачу (вкладку) для узла, где вы будете отображать форму электронной почты.

В общем и всё. Конечно, есть и другие способы реализации этого, однако я думаю, что этот способ наиболее прост для понимания.

С уважением, Слава

Другие вопросы по тегам