Ответы пользователя по тегу Drupal
  • Drupal 7 и форма обратной связи?

    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 за чрезмерное количество муторных манипуляций, и поэтому давно его бросил.
    Ответ написан
    2 комментария