2012-03-22 14 views
16

मैं Drupal 7 में एक क्षैतिज लॉगिन प्रपत्र यह पाठ उन्हें क्लिक करने पर गायब करने की जरूरत के लिए एक प्लेसहोल्डर निर्धारित करने की आवश्यकता पर Drupal 7 में एक प्लेसहोल्डर कैसे सेट करें। वे सिर्फ 'उपयोगकर्ता नाम' और 'पासवर्ड' कहेंगे। अभी के रूप में फॉर्म के लिए कोड है। धन्यवाद!एक लॉगिन प्रपत्र

function horizontal_login_block($form) { 
$form['#action'] = url($_GET['q'], array('query' => drupal_get_destination())); 
$form['#id'] = 'horizontal-login-block'; 
$form['#validate'] = user_login_default_validators(); 
$form['#submit'][] = 'user_login_submit'; 
$form['#prefix'] = '<div id="loginbar">'; 
$form['#suffix'] = '</div>'; 
$form['name'] = array(
'#type' => 'textfield', 
'#prefix' => '<div class="usericon">', 
'#suffix' => '</div>', 
'#maxlength' => USERNAME_MAX_LENGTH, 
'#default_value' => t('Username'), 
'#id' => 'userbar', 
'#size' => 15, 
'#required' => TRUE, 
); 

उत्तर

24

प्लेसहोल्डर HTML विशेषता का उपयोग करके एचटीएमएल 5 में ऐसा करने का तरीका है। हालांकि, यह किसी भी इंटरनेट एक्सप्लोरर संस्करण में काम नहीं कर रहा है।

function YOURTHEMENAME_form_alter(&$form, &$form_state, $form_id) 
{ 
    if (in_array($form_id, array('user_login', 'user_login_block'))) 
    { 
     $form['name']['#attributes']['placeholder'] = t('Username'); 
     $form['pass']['#attributes']['placeholder'] = t('Password'); 
    } 
} 

यह दोनों लॉगिन रूपों में प्रयोक्ता नाम und पासवर्ड क्षेत्रों के लिए एचटीएमएल 5 प्लेसहोल्डर जोड़ देगा:

function horizontal_login_block($form) { 
    $form['#action'] = url($_GET['q'], array('query' => drupal_get_destination())); 
    $form['#id'] = 'horizontal-login-block'; 
    $form['#validate'] = user_login_default_validators(); 
    $form['#submit'][] = 'user_login_submit'; 
    $form['#prefix'] = '<div id="loginbar">'; 
    $form['#suffix'] = '</div>'; 
    $form['name'] = array(
    '#type' => 'textfield', 
    '#prefix' => '<div class="usericon">', 
    '#suffix' => '</div>', 
    '#maxlength' => USERNAME_MAX_LENGTH, 
/* Don't set default values. HTML5 
    '#default_value' => t('Username'), */ 
    '#id' => 'userbar', 
    '#size' => 15, 
    '#required' => TRUE, 
    '#attributes' =>array('placeholder' => t('Username')) 
    ); 
+0

धन्यवाद! इस पर आईई के लिए एक फिक्स का कोई विचार? – Zach

+3

पुराने ब्राउज़र के लिए http://drupal.org/project/jquery_placeholder संभवतः उपयोगी हो सकता है। – Vacilando

+0

अभी भी ड्रूपल 8 में काम करता है :) –

22

एक और आसान तरीका अपने विषयों template.php को यह समारोह जोड़ना है।

न कार्यों नाम की शुरुआत को बदलने के लिए मत भूलना!

मज़े करो!

+0

और खोज के लिए प्लेसहोल्डर जोड़ने के लिए, फ़ंक्शन के भीतर निम्न जोड़ें: यदि ($ form_id == 'search_block_form') {$ form ['search_block_form'] ['# विशेषताएँ]] [' प्लेसहोल्डर '] = टी (' खोज ... '); } – timofey

+4

इस कोड लेबल '$ प्रपत्र [ 'नाम'] [ '# title_display'] =" अदृश्य "को छिपाने के लिए के लिए एक सुधार; $ प्रपत्र [ 'पास'] [ '# title_display'] = "अदृश्य"; ' – Capy

+1

आगे सुधार: स्पष्ट रूप से प्लेसहोल्डर पाठ लिखने की बजाय, लेबल का फिर से उपयोग:' $ प्रपत्र [ 'नाम'] [ '# जिम्मेदार बताते हैं' ] [ 'प्लेसहोल्डर'] = $ प्रपत्र [ 'नाम'] [ '# शीर्षक']; '' $ प्रपत्र [ 'पास'] [ '# जिम्मेदार बताते हैं'] [ 'प्लेसहोल्डर'] = $ प्रपत्र [ 'पास'] [ '#title']; ' –

1

इस मॉड्यूल https://www.drupal.org/project/form_placeholder का उपयोग कर एक एचटीएमएल 5 प्लेसहोल्डर लागू करता है और न पुराने ब्राउज़र पुराने ब्राउज़र के लिए "एचटीएमएल 5 प्लेसहोल्डर विशेषता समर्थन मैथियास Bynens द्वारा jQuery प्लेसहोल्डर प्लगइन का उपयोग करता है" पर विचार करें।

संबंधित मुद्दे