Темизация формы авторизации в Drupal 7. Drupal 7 темизация форм


Темизация веб-формы в Drupal 7. Файл webform-tpl.php

Сегодня начнём изучение темизации веб-форм в Drupal 7, напомню, что самым популярным при создании своих веб-форм является модуль webform. Как создать свою веб-форму вы можете почитать вот здесь, на этом я останавливаться не буду. В качестве примера я буду использовать стандартный шаблон Drupal – Bartik, и создам форму из нескольких полей (2х текстовых полей, 1го поля с электронной почтой и 1го поля с текстовой областью), в результате данная форма у меня выглядит вот так

И имеет следующие настройки

Теперь приступим к самой темизации. Например давайте разместим данную форму в таблицу, в первой строке которого у нас будут находится поля с «Именем» и «Фамилией», во второй строке разместим поле «E-mail», ну а в третьей строке выведем поле «Текст сообщения». Приступим, первое что нам необходимо – это узнать id нашей формы, в моём случае моя форма имеет #360, свой id вы можете увидеть в адресной строке браузера при создании формы, либо через Firebug. Теперь переходим в корень вашего шаблона и создаём файл с именем

  1. webform-form-idвашейформы.tpl.php

в моём случае файл будет иметь имя

и впишем первым делом в него вывод нашей таблицы

  1. <table border="1">

  2. <thead>

  3. <tr>

  4. <td>

  5. <h4>наша тестовая форма</h4>

  6. </td>

  7. </tr>

  8. </thead>

  9. <tbody>

  10. <tr>

  11. <td> </td>

  12. <td> </td>

  13. </tr>

  14. <tr>

  15. <td> </td>

  16. </tr>

  17. <tr>

  18. <td> </td>

  19. </tr>

  20. </tbody>

  21. </table>

И посмотрим на результат, не забудьте только про кодировку UTF-8 без BOM, и очистить кеш сайта, вот что в итоге у нас получается

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

  1. <?php print drupal_render($form['submitted']);?>

Таким образом мы выведем все поля из данного массива, а нам же нужно каждое поле по отдельности, сложности с этим у вас не должно возникнуть, так как массив submitted является многомерным, и чтобы вытащить конкретное поле, нужно лишь дописать ключ данного поля и выглядеть запрос будет вот так

  1. <?php print drupal_render($form['submitted']['ключ поля']);>

Ключом поля является машинное имя создаваемого поля, которое вы задаете при создании данного поля

В результате вывод поля «Имя» будет выглядеть, как

  1. <?php print drupal_render($form['submitted']['imya']);?>

На странице это выглядит вот так

Теперь то же самое проделаем для всех остальных полей нашей формы, это вы сделаете самостоятельно, я лишь покажу как должно получиться у вас

и для красоты я добавил дополнительные столбцы в таблице, в результате мой код выглядит вот так

Как мы видим с поставленной задачей мы справились, осталось лишь вывести саму кнопку отправки формы, вывод производится как

  1. <?php print drupal_render_children($form);?>

Выведем кнопку после таблицы, в результате конечный код моей формы выглядит так

Посмотрим результат,

Как мы видим, теперь у нас полноценная веб-форма, с полями и кнопкой отправки. Далее в уроках мы рассмотрим еще различные файлы модуля webform, которые упрощают стилизацию вывода практически каждого элемента формы, а пока на этом всё.

drupalfly.ru

Темизация формы логина в Drupal 7

Здравствуйте!Прошу посказать момент с темизацией формы входа. Уже несколько часов не могу понять, что не так. До этого с темизацией не работал, но обстоятельства вынудили взяться за это дело в кратчайшие сроки :)Пробовал разные способы, и с двойными дефисами, и чистить кеш, и в разных браузерах смотреть... Ничего не помогло. Подскажите, где косяк:

function sky_theme() {   return array(     'color_scheme_form' => array(       'render element' => 'form',       'path' =>  drupal_get_path('theme', 'sky') . '/templates',       'template' => 'color-scheme-form',     ),   );   return array(     'user_login_form' => array(       'render element' => 'form',       'path' =>  drupal_get_path('theme', 'sky') . '/templates',       'template' => 'user-login-form',     ),   );}

Подскажите, пожалуйста, как вывести из шаблона в папке темплейтс свою форму входа.В файле, из которого должна быть выведена форма, пока что же самое, за исключением более узких полей и Username2 вместо Username.

Вид файла:

<?phpfunction user_login_block($form) {   $form['#action'] = url($_GET['q'], array('query' => drupal_get_destination()));   $form['#id'] = 'user-login-form';   $form['#validate'] = user_login_default_validators();   $form['#submit'][] = 'user_login_submit';   $form['name'] = array('#type' => 'textfield',     '#title' => t('Username2'),     '#maxlength' => USERNAME_MAX_LENGTH,     '#size' => 10,     '#required' => TRUE,   );   $form['pass'] = array('#type' => 'password',     '#title' => t('Password'),     '#maxlength' => 60,     '#size' => 10,     '#required' => TRUE,   );   $form['actions'] = array('#type' => 'actions');   $form['actions']['submit'] = array('#type' => 'submit',     '#value' => t('Log in'),   );   $items = array();   if (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)) {     $items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.'))));   }   $items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));   $form['links'] = array('#markup' => theme('item_list', array('items' => $items)));   return $form;}?>

drupal.ru

О средстве темизации форм в Drupal 7

Добрый день.

Поделитесь, пожалуйста, опытом, есть ли способы темизации друпаловских форм, кроме классических (hook_form_alter, другие хуки, переопределение уже прописанных классов CSS и т.д.) ?

Например, недавно решал такую задачу.Есть готовая верстка сделанная верстальщиком, и нужно было, чтобы форма ввода комментария выглядела вот таким вот образом:

И вот для того, чтобы привести стандартную форму к такому виду, пришлось написать вот такой вот код

function music_preprocess_comment_wrapper(&$vars){   // Настройка формы добавления комментария     // Обрамляем всю форму ввода комментария   $vars['content']['comment_form']['#prefix'] = '';     // Добавляем классы для формы ввода комментария   $vars['content']['comment_form']['#attributes'] = array(     'class' => array('form','form_standard', 'form_comment'),   );     // Настройка поля ввода текста комментария   $vars['content']['comment_form']['comment_body']['#prefix'] = '
  • '
  • ;   $vars['content']['comment_form']['comment_body']['#suffix'] = '';     $vars['content']['comment_form']['comment_body']['und'][0]['value']['#title_display'] = 'invisible';   $vars['content']['comment_form']['comment_body']['und'][0]['value']['#attributes'] = array(     'class' => array('field', 'field_type_textarea'),     'placeholder' => array('Ваш комментарий'),   );   $vars['content']['comment_form']['comment_body']['und'][0]['value']['#rows'] = 1;     // Настройка внешнего вида кнопки "Добавить"   $vars['content']['comment_form']['actions']['#prefix'] = '
  • '
  • ;   $vars['content']['comment_form']['actions']['#suffix'] = '';     $vars['content']['comment_form']['actions']['submit']['#prefix'] = '';  $vars['content']['comment_form']['actions']['submit']['#suffix'] = '';   $vars['content']['comment_form']['actions']['submit']['#attributes'] = array('class' => array('btn__in'));   $vars['content']['comment_form']['actions']['submit']['#value'] = 'Добавить';       // Убираем из формы выбор формата   $vars['content']['comment_form']['comment_body']['und'][0]['format']['#access'] = FALSE;     // Добавляем элементы для обрамления элементов формы   $vars['content']['comment_form']['list_begin'] = array(     '#weight' => -1000,     '#markup' => ',   );   $vars['content']['comment_form']['list_end'] = array(     '#weight' => 1000,     '#markup' => '',   );     // Скрываем кнопку "Предварительный просмотр"   $vars['content']['comment_form']['actions']['preview']['#access'] = FALSE;     // Скрываем поле темы   $vars['content']['comment_form']['subject']['#access'] = FALSE;     // Скрываем поле автора   $vars['content']['comment_form']['author']['#access'] = FALSE;}

    Да и то, задача решилась частично, так как хоть форма теперь и выглядит, как задумывалось, но её код остался довольно громоздким по сравнению с тем, как сверстал верстальщик.

    Вот так сверстал верстальщик:

                    div>                    form>                        ul>                            li>textarea placeholder="Ваш комментарий">textarea>li>                            li> span>input type="submit" value="Добавить">span>li>                        ul>                    form>                div>

    А вот так получилось в итоге:

    div> form action="/comment/reply/4" method="post" accept-charset="UTF-8">  div>    ul>      li>        div>          div>            div>              div>                label for="edit-comment-body-und-0-value">Comment span title="Это поле обязательно для заполнения.">*span>label>                textarea placeholder="Ваш комментарий" name="comment_body[und][0][value]" cols="60" rows="1">textarea>              div>            div>          div>        div>       li>     input type="hidden" name="form_build_id" value="form-IMbWa6LBhg4aO-nLOSYy9UKWWglyI6vWUYtlCK6FR0I" />     input type="hidden" name="form_token" value="tLm1DJdighyhjN7fMBsLoyEE0pecvW_mdifiX3MZzEU" />     input type="hidden" name="form_id" value="comment_node_notice_form" />     li>       div>         span>           input type="submit" name="op" value="Добавить" />         span>       div>     li>    ul>   div>  form>div>

    Так вот, хочу спросить, есть ли визуальные средства, которые позволяли бы без потери функционала генерировать код форм без всяких друпаловских врапперов и т.д. ?То есть, чтобы код был как можно более приближен к коду ручной верстки.

    drupal.ru

    Темизация формы авторизации в Drupal 7

    Темизация формы авторизации в Drupal 7 мне была необходима для расположения формы авторизации в шапке сайта. Искал очень долго решение, оно оказалось простым. Для этого нужно создать файл в папке с вашей темой c названием

    block--user--login.tpl.php

    .Далее нужно разместить следующий код:

    <form accept-charset="UTF-8" method="post" action="/node?destination=node"> <div > <div > <div> <div>Логин</div> <div> <input type="text" name="name"> <div> <a href="/user/register">Регистрация</a> </div> </div> </div> <div> <div>Пароль</div><br/> <div> <input type="password" name="pass"> <input type="hidden" value="" name="form_build_id"> <input type="hidden" value="user_login_block" name="form_id"> <div> <a href="/user/password">Забыли пароль?</a> <input type="submit" value="Войти" name="op"> </div> </div> </div> <div></div> </div> </div> </form>

    Прописываем стили для формы.

    input[type="text"],.autoriz input[type="password"]{ height:21px; width:145px; /* Фоновая картинка для полей, если не нужна можно удалить */ background:url(../img/input-text.png) no-repeat; border:none; padding-left:10px; padding-right:10px; } input[type="submit"]{ /* Фоновая картинка для кнопки */ background:url(../img/button_enter.png) no-repeat; width:49px; height:21px; border:none; float:right; }

    В панели администратора у блока «Вход в систему» нужно будет выбрать существующий регион в котором будет размещаться форма.

    У меня получилась такая форма.

    autorizform

    comments powered by HyperComments

    pro-cod.ru


    Prostoy-Site | Все права защищены © 2018 | Карта сайта