evgentus
@evgentus
Директор OBS Group

Drupal 7 и форма обратной связи?

Доброго времени суток.


Суть вопроса такая.

Нужно сделать форму обратной связи, но не стандартную, как у модуля Contact, а человеческую(placeholder и js немного). Говорят что надо использовать webform.

Поставил я его и не нахожу не единого сходства с инструкциями в интернетах.


Сам я ниразу не пользовался всякими бесплатными cms, drupal увидел первый раз вчера.


А нужно именно сделать сайт на этой cms. (на своей cms давно бы уже сделал). 2ой день уже мучаюсь.


Так что кто в курсе моего вопроса, можете на пальцах рассказать как мне эту задачу решить?


И еще каким образом можно вывести несколько последних статей на главную? Точнее как в файле page.tpl.php это вызвать?
  • Вопрос задан
  • 11602 просмотра
Пригласить эксперта
Ответы на вопрос 3
Ritsuka
@Ritsuka
Нужно сделать форму обратной связи, но не стандартную, как у модуля Contact, а человеческую(placeholder и js немного)

Если отличия от стандартной формы только в оформлении и каких-то дефолтных значениях, то используйте стандартную же. У каждого элемента свой постоянный id, цепляйтесь к ним и добавляйте все, что требуется, через JS.

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

1. В папке темы, с которой вы работаете, редактируете файл template.php. Добавляете/модицифируете функцию:

function %имятемы%_theme() {
	return array(	'contact_site_form' => array(
					'render element' => 'form',
					'template' => 'contact-site-form',
					'path' => drupal_get_path('theme', '%имятемы%').'/templates',
				),
	);
}


Добавляете функцию:

function %имятемы%_preprocess_contact_site_form(&$vars)
{
	$vars['form_html'] = drupal_render_children($vars['form']);
/*	$vars['name'] = drupal_render($vars['form']['name']);	
	$vars['email'] = drupal_render($vars['form']['mail']);
	$vars['subject'] = drupal_render($vars['form']['subject']);
	$vars['message'] = drupal_render($vars['form']['message']);
	$vars['copy'] = drupal_render($vars['form']['copy']);
	$vars['submit'] = drupal_render($vars['form']['submit']);	*/
}


2. Создаете в папке темы файл contact-site-form.tpl.php. В него будет передаваться переменная $form_html, в которой будет оригинальный код формы, и он будет выполняться на странице обратной связи. По желанию, раскомментировав код из блока выше, можно передать туда и все элементы формы по отдельности. Все они придут в виде готового html-кода. Базовый пример этого файла:

<p>Пишите письма!</p>
<div class="submit-contact-form"><?php print $form_html; ?></div>


И еще каким образом можно вывести несколько последних статей на главную

1. Устанавливаете модуль Views.
2. Создаете в нем представление с нужными фильтрами.
3. Создаете блок для него
4. Перетаскиваете блок в нужную вам область и ограничиваете отображение только главной страницей.

P.S. Ненавижу Drupal за чрезмерное количество муторных манипуляций, и поэтому давно его бросил.
Ответ написан
@ru_janex
я делала для диплома форму обратной связи в виде ноды, которую разрешено создавать анонимам, они автоматом создаются неопубликованные.
а отдельно там уже можно форму подредактировать, jquery скрипты через murkUp поставить и тд...
Причем смотри.
1. делаешь два вьюса. один - на котором неопубликованные.
2. ставишь модуль Rules, в нем прописываешь действие, что бы после того как кто то откаментирует этот отзыв, он получал статус опубликован. в тот же Rules прописываешь что бы этот камент отсылался на ящик указанный в поле формы.(который аноним указал)
(тут может быть проблема только в настройке сервера, SMTP)
Ответ написан
@Backstabe
$vars['submit'] = drupal_render($vars['form']['submit']);
Кнопку не выводит почему-то (
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы