Although this blog is wordpress I’d typically choose Drupal for doing any proper content-based website as it’s so easily flexible and supports multiple languages really easily out of the box. I was doing a site recently where we wanted to have mostly placeholders everywhere rather than form labels. This was unfortunately a bit tricky so I wrote the following code for the theme’s template.php to automatically put labels into the placeholders of input elements:
function THEME_form_alter(&$form, &$form_state, $form_id) { if( $form_id == 'user_register_form' ) { $form['account']['mail']['#title'] = t('Your Email Address'); } if( $form_id == 'views_exposed_form' ) { foreach( $form as $key => &$config ) { if( !is_array($config) ) continue; if( array_key_exists('#attributes', $config) ) $config['#attributes']['placeholder'] = $config['#attributes']['title']; } $form['keys']['#attributes']['placeholder'] = $form['#info']['filter-keys']['label']; $form['#action'] = ''; } //error_log( print_r( $form, TRUE ) . ' ' . $form_id ); add_placeholder_check($form); } function add_placeholder_check(&$array) { if( !is_array($array) ) return; foreach( $array as $key => &$config ) { if( !is_array($config) ) continue; add_placeholder_check( $config ); if( substr($key, 0, 1) != '#' && array_key_exists( '#title', $config ) ) { if( !array_key_exists('#attributes', $config) ) $config['#attributes'] = array(); $config['#attributes']['placeholder'] = $config['#title']; } } }