Konversi satu item yang Anda ingin nonaktifkan menjadi kosong <optgroup>
.
Pro:
- Ini dapat dilakukan dalam
hook_form_alter
atau langsung ketika membangun formulir kustom Anda, tidak perlu menerapkan theme_select
fungsi dalam tema Anda.
Cons:
- Tidak ada cara untuk mewakili
value='title'
atribut yang berhubungan dengan aslinya <option>
di DOM yang dihasilkan.
- YMMV jika Anda mencoba menonaktifkan opsi yang sudah berkaitan dengan optgroup. Optgroup bersarang mungkin memang berfungsi, tetapi ini belum diuji dan belum dikonfirmasi.
Penerapan:
Optgroups di Drupal dilambangkan di dalam #options
array sebagai key => value
pasangan mana pun yang nilainya adalah array.
Jadi dari contoh di OP kita akan memindahkan nilai t('Titles only')
menjadi key
dan kemudian membuat nilai menjadi array kosong.
$form['feed'] = array(
'#type' => 'select',
'#title' => t('Display of XML feed items'),
'#options' => array(
t('Titles only') => array(), // This one becomes disabled as an empty optgroup
'teaser' => t('Titles plus teaser'),
'fulltext' => t('Full text'),
),
'#description' => t('Global setting for the length of XML feed items that are output by default.'),
);
HTML yang dihasilkan akan terlihat seperti ini:
<form>
<div>
<label>Display of XML feed items</label>
<select>
<optgroup>Titles only</optgroup>
<option value="teaser">Titles plus teaser</option>
<option value="fulltext">Full text</option>
</select>
</div>
</form>