Итак, в 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);
.
Свежие комментарии