2012-07-04 18 views
5

Başımı Drupal Form API'sine götürmek için gerçekten uğraşıyorum ... aslında bir bütün olarak Drupal.Drupal 7 - Temel Formları Geçersiz Kılma HTML İşaretleme

İşte benim sorunum, iyi bir render oluşturdum, ancak şimdi yapmaktan hoşlandığım şey, belirli form öğelerinin etrafındaki sarmalayıcı bölmelerdir, bu yüzden formumu uygun bir şekilde şekillendiririm site ve bazı kutu standart bok değil.

Birisi, "iyi" bir öğreticinin doğru yönüne en azından bir noktada yardım edebilir mi, yoksa tüm web üzerinde sıvalı olan kısa ve çok belirsiz bir saçmalık değil mi?

Teşekkürler.

+0

Özel bir form oluşturdunuz veya varolan stili biçimlendirmek mi istiyorsunuz? Bunu deneyin [eğitici] (http://www.jaypan.com/tutorial/themeing-drupal-7-forms-including-css-and-js) veya [bu] (http://www.digett.com)/blog/05/26/2011/how-theme-comment-form-drupal-7) –

+0

Form API'sini kullanarak kendi özel formumu oluşturdum ama istediğim gibi stil edemiyorum çünkü Bir eleman yükü yani Kişisel detayı (isim, adres, telefon vb.) gruplandırın. Temel olarak, formun bölümlerini ekranda kaydırmak istiyorum, her parça dolduğunda, bu yüzden fazladan HTML işareti eklemem gerekiyor. Cevabınız için –

+0

teşekkürler. JAYPAN tarafından gönderilen ilk ders, serbest bırakıldıktan sonra iyi çalışıyor ve belirli değişikliklerden sonra modülü yeniden başlatmam gerekti. –

cevap

13

hook_form_alter arkadaşın burada. Temanızın template.php dosyasında

sen Aşağıda Geçenlerde yaptığı bir siteden bir örnektir vb formlar, form elemanları

için önek ve sonek ekleyebilir.

function bhha_form_alter(&$form, &$form_state, $form_id) { 
    if ($form_id == 'user_login') {  
    $form['#prefix'] = '<div class="loginForm">'; 
    $form['#suffix'] = '</div>'; 
    $form['name']['#title'] = Null; // Change text on form 
    $form['name']['#description'] = Null; // Change text on form 
    $form['name']['#attributes'] = array('placeholder' => t('username')); 
    $form['name']['#size'] = '30'; 
    $form['pass']['#title'] = Null; 
    $form['pass']['#description'] = Null; // Change text on form 
    $form['pass']['#attributes'] = array('placeholder' => t('password')); 
    $form['pass']['#size'] = '30'; 
    //$form['actions']['submit']['#value'] = t('password'); 
    $form['actions']['submit'] = array('#type' => 'image_button', '#src' => base_path() . path_to_theme() . '/images/Login.png'); 
    $form['links']['#markup'] = '<a class="user-password" href="'.url('user/password').'">' . t('Forgot your password?') . '</a>'; // Remove Request New Password from Block form 
    $form['links']['#weight'] = 540; 
    } 
} 

Kodunu, tema kimliğine almak istediğiniz formu almak için inceleyin. Alt çizgileri tire ile değiştirin ve istediğiniz örneği yapmak için yukarıdaki örneği kullanabilmeniz gerekir. o en temel var At

Ben bir örnek olacağını tahmin:

function THEME_NAME_form_alter(&$form, &$form_state, $form_id) { 
    if ($form_id == 'FORM_ID') {  
     // Adds a wrapper div to the whole form 
    $form['#prefix'] = '<div class="loginForm">'; 
    $form['#suffix'] = '</div>'; 

     // Adds a wrapper div to the element NAME 
    $form['name']['#prefix'] = '<div class="formRow">'; 
    $form['name']['#suffix'] = '</div>'; 
    } 
} 
+0

Yardım işlevine yaptığınız yardım için gerçekten yardımcı oldu, bunu yapmak için diğer bazı yolları denedim. –

+0

Dinamik bir onay kutusu listeniz olduğunda (taksonomi açısından) ve adlarını kodlayamazsanız ne yaparsınız? Dinamik #options sayısı olan bir #type onay kutum var. ATM'de her seçenek istenmeyen bir sarmalayıcıyı gösterir, hiç bir sarmalayıcı istemiyorum. Tam kontrol istiyorum. –

2

Çeşitli yolları Bunu yapmanın. Örneğin

  1. Eğer saha düzeyinde işaretlemeyi üzerine yazmak arıyorsanız için, field.tpl.php veya template_preprocess_field() kullanabilirsiniz.
  2. Formunuzun kapatma işaretlemesini değiştirmek isterseniz (Drupal'ın standart biçimlendirmesinin neden son derece stil sahibi olabileceğini merak etsem de), tema işlevlerini kaydetmek ve işaretlemeyi bu şekilde kullanmak isteyebilirsiniz. İşte bu konuda ayrıntılı bir nice article.