Хорошо ... вы собираетесь ввести одну из самых захватывающих и сложных функций Drupal: API формы или - для краткости - FAPI. Сначала немного теории, а потом решение! :)
Все формы в Drupal создаются функцией drupal_get_form()
, которая принимает массив в качестве параметра. Каждое поле в массиве является в основном полем вашей формы, и у каждого поля есть ряд свойств, каждое из которых определяет дополнительные характеристики поля, например, его значение по умолчанию, если оно является обязательным или необязательным, и - да - в случае текстовых полей ... насколько они должны быть большими! Вы можете найти подробное объяснение структуры массивов форм здесь на сайте drupal .
Прелесть API формы в том, что функция, которая визуализирует форму, вызывает несколько хуков в различные моменты в процессе ее построения, поэтому вы можете реализовать эти хуки для того, чтобы «изменить» форму перед ее финализацией и отправкой в браузер.
Наиболее распространенными крючками для изменения формы являются hook_form_alter()
и hook_form_FORM_ID_alter()
. Первый выполняется для любой формы, обрабатываемой движком drupal, последний - только для конкретной формы с именем «FORM_ID». Я не буду вдаваться в подробности внутренней работы API формы, но здесь вы можете прочитать подробнее .
Что касается вашего конкретного случая, я предполагаю, что вы используете стандартную «пользовательскую блокировку», поставляемую с Drupal. В этом случае я предлагаю вам реализовать hook_form_FORM_ID_alter()
в форме, подобной этой:
mymodule_form_user_login_block_alter(&$form, $form_state) {
$form['pass']['#size'] = 43;
}
Надеюсь, это поможет! :)