Количество значений поля больше 10, но меньше "Неограниченно"
Опубликовано в сб, 11/01/2014 - 16:48
Имеем, к примеру, поле для загрузки изображений, в настройках поля есть параметр "Количество значений поля" ("Number of field values"), который можно установить от 0 до 10ти, или неограниченно. Бывает так, что необходимо задать предел более 10ти, но НЕ неограниченно, например, позволить пользователю загружать не более 19 изображений. Чтобы модифицировать наш селект со значениями воспользуемся хуком hook_form_alter, а точнее hook_FORM_ID_form_alter.
Для этого создаем модуль (на этом моменте останавливаться не буду - в сети куча инфы на эту тему), в теле нашего модуля пишем:
<?php
/**
* hook_FORM_ID_form_alter
*/
function ModuleName_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
// создаем ассоциативный массив range, то есть формируем массив наших значений от 1 до 19
$range = drupal_map_assoc(range(1, 19));
// прикрепляем новый массив к значению "неограниченно"
$new_options = array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + $range;
// и заменяем выбор нашим массивом
$form['field']['cardinality']['#options'] = $new_options;
}?>
Активируем модуль, сбрасываем кэш, идем в настройки поля.
В результате получаем:
PROFIT!