Hi,

i want to theme registration form as per my site, so, i followed following process:

in template.php file, i added following code:
function mytheme_theme($existing, $type, $theme, $path){
return array(
'user_register' => array(
'render element' => 'form',
'template' => 'templates/user-register',
),

'user_login_block' => array(
'template' => 'templates/user-login-block',
'render element' => 'form',
),
);
}

function mytheme_preprocess_user_register(&$variables) {
$variables['rendered'] = drupal_render_children($variables['form']);
}

Now if i use echo $rendered;

whole form gets displayed, but, i want to display different fields individually, please advise me and help me to achieve this.

like in div1 firstname
in div2 lastname.

Thanks,
Kul.

Comments

kuldeepkaundal’s picture

I used following code in template.php:
function mytheme_theme($existing, $type, $theme, $path){
return array(
'user_register' => array(
'render element' => 'form',
'template' => 'templates/user-register',
),

'user_login_block' => array(
'template' => 'templates/user-login-block',
'render element' => 'form',
),
);
}

function themename_preprocess_user_register(&$vars) {

// Uncomment the following line if Devel module is enabled, to view the contents of the form.
// dsm($vars['form']);

unset($vars['form']['timezone']['timezone']['#title']);

// Adjust the size of several fields to fit better in 2 columns.
$vars['form']['account']['name']['#size'] = 25;
$vars['form']['actions']['submit']['#value'] = '';
$vars['form']['account']['mail']['#size'] = 25;
$vars['form']['picture']['picture_upload']['#size'] = 40;
$vars['form']['signature_settings']['signature']['#cols'] = 50;

$vars['form_build_id']= drupal_render($vars['form']['form_build_id']);
$vars['form_id']= drupal_render($vars['form']['form_id']);
$vars['timezone']= drupal_render($vars['form']['timezone']);

// Prepare all of the desired form elements as variables, to be used in user-profile-form.tpl.php.
// Everything before this part is optional.
$vars['firstname'] = drupal_render($vars['form']['field_firstname']);
$vars['lastname'] = drupal_render($vars['form']['field_lastname']);
$vars['submit'] = drupal_render($vars['form']['actions']['submit']);
$vars['reset'] = drupal_render($vars['form']['actions']['reset']);

Then in template(user-register):
print $firstname; //field variable

Also, one important thing to render form:
function golf4millions_get_registration_block() {
$form = drupal_render(drupal_get_form('user_register_form'));
return theme_status_messages($display = NULL).$form;
}

then call this function in page.tpl.php like:
print golf4millions_get_registration_block() ;

nampham’s picture

this is my code

function mytheme_theme($existing, $type, $theme, $path){
	$hooks['user_login']=array(
		'render element'=>'form',
		'template'		=>'templates/user-login',
	);
	$hooks['user_register']=array(
		'render element'=>'form',
		'template'		=>'templates/user-register',
	);
	$hooks['user_pass']=array(
		'render element'=>'form',
		'template'		=>'templates/user-pass',
	);
	return $hooks;
}

function mytheme_preprocess_user_register(&$variables){
	$variables['rendered'] = drupal_render_children($variables['form']);
	print_r($variables);exit;
}

Nothing is happen, 'user_login' and 'user_pass' works well. I have cleared cache also.
Could you let me know how you make it work, please? i'm using drupal 7.

nampham’s picture

I use 'user_register_form' instead of 'user_register'