Создание пользовательской страницы регистрации


Я хотел бы изменить внешний вид страницы регистрации пользователя, которую я создаю. Он содержит поля профиля содержимого и область повторной записи. Я создал 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. Любая помощь будет признательна!

Спасибо

Author: kiamlaluno, 2012-09-04

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 файл, и все сработало.

 0
Author: user5013, 2012-09-04 22:47:06