Ответы:
Параметры кардинальности жестко запрограммированы в field_ui_field_edit_form()
функции с помощью следующих строк кода:
$form['field']['cardinality'] = array(
'#type' => 'select',
'#title' => t('Number of values'),
'#options' => array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + drupal_map_assoc(range(1, 10)),
'#default_value' => $field['cardinality'],
'#description' => $description,
);
Это drupal_map_assoc(range(1, 10))
линия, которая ограничивает число до 10.
Не похоже, что максимальная мощность проверяется (или дополнительно ограничивается) где-либо еще, хотя (по крайней мере, не ядром), поэтому было бы довольно легко предложить больше вариантов для этого значения, используя хук изменения формы:
function MYMODULE_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
// Increase the max cardinality to 20
$range = drupal_map_assoc(range(1, 20));
$new_options = array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + $range;
// Change the options
$form['field']['cardinality']['#options'] = $new_options;
}
Я только что попробовал это, и у этого, кажется, нет никаких побочных эффектов вообще. Полевая система учитывает любую установленную вами мощность, превышающую 10, и сохраняет ее без проблем при редактировании поля в пользовательском интерфейсе администратора.
Я использовал этот проект песочницы для решения той же проблемы: https://www.drupal.org/sandbox/ydahi/2421885
Он предоставляет пользовательский интерфейс для установки диапазона для количества значений.