Создание пользовательской страницы регистрации
Я хотел бы изменить внешний вид страницы регистрации пользователя, которую я создаю. Он содержит поля профиля содержимого и область повторной записи. Я создал user-register.tpl.php файл и обновил мой template.php файл, чтобы этот файл шаблона был распознан.
Я хотел бы вытащить фрагменты регистрационной формы и разместить их с конкретными дивами для оформления. Проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить поля. Я пытался использование
print drupal_render(drupal_get_form('user_register'));
Но это создает белую страницу. Когда я пытаюсь просто распечатать drupal_get_form ('пользователь_регистр') Я тоже ничего не получаю. Поэтому я в замешательстве от того, что я делаю неправильно. Похоже, что команда drupal_render ничего не возвращает, поэтому я не могу понять, почему это так.
Вот моя модификация темы шаблона:
function mytheme_theme($existing, $type, $theme, $path) {
return array('user_login'=>array(
'template'=>'user-login',
'arguments'=>array(
'form'=>NULL),
),
'user_pass'=>array(
'template'=>'user-pass',
'arguments'=>array(
'form'=>NULL),
),
'user_register'=>array(
'template'=>'user-register',
'arguments'=>array(
'form'=>NULL),
),
);
}
Казалось бы, это должно сработать, но это не так. Это почти похоже на то, что этой формы не существует.
Я использую Drupal 6.26. Любая помощь будет признательна!
Спасибо
1 answers
Я нашел причину проблемы с невозможностью отображать элементы формы, как описано выше. Проблема заключалась в следующей строке в моем файле шаблонов:
function mytheme_preprocess_user_register(&$variables) {
$variables['intro_text'] = t('some text.');
$variables['rendered'] = drupal_render($variables['form']);
}
Похоже, что вы можете вызвать drupal_render только один раз. Любые последующие вызовы drupal_render игнорируются, так как Drupal уже пометил код как отрисованный. Должен быть способ принудительно выполнить повторный рендеринг, если это необходимо, или получить уже отрисованные результаты. Если кто-то знает, как это сделать, пожалуйста, ответьте на это пост.
Решение состояло в том, чтобы удалить эту строку из templates.php файл, и все сработало.