Как зарегистрировать и создать шаблон формы регистрации в 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>

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

  • Иван: к записи Привет всем, доброго времени суток! Я излазил весь »
  • Александер: к записи Потом пригляделся, вроде Вы не это имели в виду и »
  • Александер: к записи У Вас не русифицируется, потому что не везде включ »
  • Администратор: к записи Это надо использовать функции вашей CMS. »
  • Alex: к записи Ребят, а подскажите пожалуйста, как реализовать с »
  • Владимир: к записи А как теперь будет выглядеть ссылка для перехода н »
  • Администратор: к записи Не знаю. »

Статистика спама

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