Вопрос

У меня действительно глупая проблема, которая уже стоила мне уймы времени.

Я создал шаблон контента с URL-адресом.Когда я смотрю на его HTML-код, я вижу большое жирное «maxlength=256» в теге формы.Я хотел бы увеличить длину этого поля, поскольку мой клиент хочет вводить очень длинные ссылки (более 500 символов).Есть идеи, как я могу это изменить?Когда я выполняю общий поиск по коду, я вижу очень много вхождений 256, но длина вполне может быть где-то в базе данных.Я, конечно, сделал поле базы данных более длинным varchar (1024 показалось мне поэтичным), так что мне не о чем беспокоиться.

Я считаю это глупостью, но клиент всегда прав, как мы знаем.

Я использую Друпал 6.14.

Это было полезно?

Решение 2

Йауаууу!Я исправил это благодаря полезным страницам Drupal:http://drupal.org/node/300705

Я понял, что могу редактировать форму после того, как она будет полностью сгенерирована.Решение, представленное Эриком, хорошее, но, похоже, не работает для полей CCK.В моем случае решение Эрика могло бы сработать, если бы не первый шаг генерации.

Мой новый код выглядит следующим образом:

function longerfield_form_alter(&$form, &$form_state, $form_id) {
      $form['#after_build'][] = 'longerfield_after_build';
    }

function longerfield_after_build($form, &$form_state) {
  // This is for a node reference field:
  $form['field_page_boeken'][0]['data']['url']['#maxlength'] = 1024;
  return $form;
}

Теперь я тоже вижу, что это некрасиво, особенно потому, что здесь могут быть другие элементы формы (просто увеличивайте от 0), но для первого элемента это работает!Ура!

Другие советы

Вы хотите использоватьook_form_alter() в ваш Templete.php или специальный модуль.

Это будет выглядеть примерно так:

MODULE_form_alter(&$form, &$form_state, $form_id) {
  if($form_id = 'name_of_form_you_want_to_alter') {
    form['name_of_url_field']['#maxlength'] = 500;
  }
}

Просто замените MODULE на имя свою тему (если она есть в template.php) или замените ее на имя пользовательский модуль, который вы используете.

Чтобы найти идентификатор формы, проверьте элемент с помощью Firebug.То же самое касается идентификатора поля URL.

Дайте мне знать, если вам нужна более подробная информация.

РЕДАКТИРОВАТЬ:Как уже отмечалось, похоже, что вы не можете вызывать хуки с уровня темы.

Лучший способ сделать это — создать небольшой собственный модуль для вашего сайта.Вы можете назвать это примерно так: SITENAME_customizations.

Все, что вам нужно, это простой файл .info с именем MODULENAME.info, который будет выглядеть примерно так:

name = SITE customizations
description = "Customizations"

Вам также понадобится файл MODULENAME.module, куда вы будете включать свои hook_form_alter вызов.

ПС.Убедитесь, что вы не закрываете тег php (?>) в вашем файле .module.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top