Как зарегистрировать и создать шаблон формы регистрации в Drupal

Итак, в Drupal 7 по умолчанию нет какого-либо более или менее сносного шаблона для темизации (читайте стилизации) стандартной формы регистрации пользователей на сайте, которая расположена по пути user/register. Однако сей недостаток можно исправить с помощью некоторого количества крючков.

1. В файле темы, template.php, объявите хуки hook_theme() и template_preprocess_user_register():

<?php
// hook_theme():
function REDBOOKCMS_theme($existing, $type, $theme, $path) {
    return array(
        'user_register_form' => array(
            'render element' => 'form',
            'template' => 'templates/user_register_form',
        )
    );
}

// template_preprocess_user_register():
function REDBOOKCMS_preprocess_user_register(&$vars) {
    $vars['form'] = drupal_build_form('user_register_form', user_register_form(array()));
    return $vars;
}
?>

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

2. Теперь остается создать собственно сам файл user_register_form.tpl.php, который должен располагаться в каталоге templates темы для Drupal.

<div id="register-page">
    <h1 class="register-page-title">Регистрация на сайте</h1>
    <div class="left register-page-fields">
        <?php
        print render($form['form_id']);
        print render($form['form_build_id']);

        // Пример вывода произвольных полей:
        print render($form['field_profile_surname']);
        print render($form['field_profile_name']);

        // Пример вывода стандартных полей профиля:
        print render($form['account']['name']);
        print render($form['account']['mail']);
        print render($form['account']['pass']);
        ?>
<!-- ... -->
    </div>
<!-- ... -->
    <?php
    // Пример вывода всех остальных элементов формы:
    print drupal_render_children($form);
    ?>
<!-- ... -->

Для того, чтобы вывести все оставшиеся элементы формы (тем, что вы не вывели вручную) используйте конструкцию print drupal_render_children($form);.

Опубликовано 17-03-2014 в 09:45


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>











Свежие комментарии

  • krasnov8953: к записи Не работает как мне кажется строчка $newTvId = $ »
  • Dimanski: к записи ничего не понимаю. Ставлю ModX на хостинг r01.ru »
  • Дмитрий: к записи Спасибо! Очень выручили. С битриксом беда, а прав »
  • леонид: к записи как сделать что были в ряд? у меня получается по о »
  • Администратор: к записи Статический IP. »
  • Steel: к записи Администратор, вы данную проблему решили подключен »
  • Дмитрий: к записи Хотел узнать как прикрутить данное окно (http://re »

Последние твиты