Respostas:
As opções de cardinalidade são codificadas na field_ui_field_edit_form()
função usando estas linhas de código:
$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,
);
É a drupal_map_assoc(range(1, 10))
linha que limita o número a 10.
Parece que a cardinalidade máxima é validada (ou ainda mais limitada) em qualquer outro lugar, embora (pelo menos não pelo núcleo), por isso seria muito fácil oferecer mais opções para esse valor usando um alter hook de forma:
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;
}
Eu apenas tentei isso e parece não ter efeitos colaterais. O sistema de campo respeita qualquer cardinalidade definida acima de 10 e a salva sem problemas quando você edita o campo na UI do administrador.
Usei esse projeto de sandbox para resolver o mesmo problema: https://www.drupal.org/sandbox/ydahi/2421885
Ele fornece uma interface do usuário para definir o intervalo para o número de valores.