Перетворіть один-єдиний елемент, який ви хочете відключити, у порожній <optgroup>
.
Плюси:
- Це можна зробити в
hook_form_alter
або безпосередньо під час створення власної власної форми, немає необхідності реалізовувати theme_select
функцію у вашій темі.
Мінуси:
- Немає можливості представити
value='title'
атрибут, пов'язаний з оригіналом, <option>
в отриманому DOM.
- YMMV, якщо ви намагаєтесь вимкнути опцію, яка вже стосується optgroup. Вкладені оптигрупи дійсно можуть працювати, але це не перевірено і не підтверджено.
Впровадження:
Оптигрупи в Drupal позначаються всередині #options
масиву як будь-які key => value
пари, де значенням є сам масив.
Так з прикладу в OP ми б перемістити значення , t('Titles only')
щоб стати , key
а потім зробити значення буде порожній масив.
$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 буде виглядати приблизно так:
<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>