Ben bir fieldset içeren bir form oluşturur bir modülü var. Bunun yerine fieldset başlığı işlemek için <legend>
elemanı kullanarak, ben yerine <div>
öğesi bu içeriği yerleştirmek istiyorum. Ama sadece modülü tarafından döndürülen form için davranışlarını değiştirmek istiyorum, bu yüzden benim temanın template.php dosyası içine herhangi bir yeni işlevsellik yerleştirmek istemiyorum.
Mymod.module Ben tanımlanmış:
// custom rendering function for fieldset elements
function theme_mymod_fieldset($element) {
return 'test';
}
// implement hook_theme
function mymod_theme() {
return array(
'mymod_fieldset' => array('arguments' => array('element' => NULL)),
'mymod_form' => array('arguments' => array())
);
}
// return a form that is based on the 'Basic Account Info' category of the user profile
function mymod_form() {
// load the user's profile
global $user;
$account = user_load($user->uid);
// load the profile form, and then edit it
$form_state = array();
$form = drupal_retrieve_form('user_profile_form', $form_state, $account, 'Basic Account Info');
// set the custom #theme function for this fieldset
$form['Basic Account Info']['#theme'] = 'mymod_fieldset';
// more form manipulations
// ...
return $form;
}
Benim sayfa render aldığında, ben tamamen benim test mesajı 'test' ile değiştirilmesi 'Temel Hesap Bilgisi' temsil fieldset görmek bekleniyor. Bunun yerine ne olur <fieldset>
ve <legend>
elemanları, normal olarak, fakat böyle yerine test mesajı ile ikame alan kümesi gövdesi ile işlenmiş olmasıdır:
<fieldset>
<legend>Basic Account Info</legend>
test
</fieldset>
Neden # tema fonksiyonu tüm <fieldset>
elemanını değiştirmek için şansı yok? Ben yerine bu işlevi Textfield sarın, ben tamamen kendi etiketiyle birlikte <input>
elemanını değiştirmek mümkün duyuyorum. Ben theme_fieldset benim sitenin template.php bir kılma sağlamak Ayrıca, eğer beklenen ve ben tamamen <fieldset>
yerine mümkün olduğum gibi çalışır, bu yüzden mümkün olduğunu biliyoruz.
Ne bir modül içinde fieldsets için # tema fonksiyonları sağlayan ilgili farklı?