Текстовые типы полей в Drupal 7

В прошлом уроке мы рассмотрели какие бывают три типа числовых полей в Drupal по умолчанию, а в этом уроке мы рассмотрим три текстовых типа полей.

Рассмотрим следующие типы полей:

  • Текст
  • Длинный текст
  • Полный текст с анонсом

Первым делом рассмотрим поле типа Текст, для этого создадим в нашем типе материалов Товар новое поле Доставка. Для этого заполним форму добавления нового поля как показано ниже:

Добавление текстового поля в Drupal 7

Нажимаем кнопку Сохранить. Следующим шагом необходимо заполнить форму настроек текстового поля:

Настройка текстового поля в Drupal 7

Как видно из картинки выше эта форма содержит только одно поле Максимальная длина - это поле определяет количество символов которое может содержать это поле (при этом по умолчанию выставлено наибольшее допустимое значение 255 символов, текстовое поле не может содержать больше чем 255 символов). Ограничивать длину стоит только в том случае если точно известно что данные которые будет содержать это поле будут меньше чем некоторое количество символов. Например если мы создаем поле Телефон то вряд ли оно будет содержать больше чем 30 символов.

Для примера оставим значение по умолчанию и нажмем кнопку Сохранить настройки. Следующим шагом нам предлагают заполнить форму настройки поля.

Настройка текстового поля в Drupal 7

Эта форма кроме стандартных полей которые мы рассматривали в предыдущем уроке содержит два специфических поля:

  • Размер текстового поля - эта настройка задает длину поля ввода для нашего будущего поля (тут имеется ввиду поле ввода на форме создания и редактирования материала, не стоит путать это с максимальной длинной)
  • Обработка текстового поля - настройка которая определяет какой формат ввода будет применен к этому полю.

По умолчанию в Drupal есть три формата ввода:

  • Простой текст (Plain text) - этот формат при выводе преобразует всю HTML разметку в спецсимволы, что не позволяет пользователю повлиять на формат отображения вводимого текста на сайте.
  • Filtered HTML - тоже что Простой текст но содержит список допустимых тегов которые не преобразуются. Например можно вывести ссылку или HTML список.
  • Full HTML - позволяет вводить любые HTML теги. Из соображений безопасности этот формат ввода должен быть доступен только администратору. О том как это сделать мы поговорим в серии уроков посвященных правам доступа.

Нажимаем Сохранить настройки и переходим к созданию следующего поля.

Следующее поле которое мы создадим будет поле Описание товара типа Длинный текст. Для этого заполним форму добавления поля как показано на картинке ниже:

Добавление поля типа длинный текст в Drupal 7

Нажимаем Сохранить и переходим к настройкам поля.

Настройки поля типа Длинный текст в Drupal 7

Как видно из картинки выше ни одной настройки для этого поля нет, а все потому что это поле в отличии от поля типа Текст не имеет ограничения по длине и может содержать любое количество символов. Просто нажимаем Сохранить настройки поля.

На следующей форме настройки текстового поля видно только одно новое поле - Строки. Это поле определяет сколько строк в высоту будет иметь текстовая область для ввода значения в поле.

настройки поля типа длинный текст в Drupal 7

Нажимаем кнопку Сохранить настройки и переходим к созданию последнего в этом уроке поля.

Для примера поля типа Полный текст с анонсом создадим поле Отзывы о товаре. Для этого заполняем форму как показано на картинке ниже и нажимаем кнопку Сохранить.

Добавление поля типа полный текст с анонсом

Также как и для предыдущего поля этот тип поля также не содержит специальных настроек.

Настройки поля типа полный текст с анонсом

Просто нажимаем Сохранить настройки поля.

Настройки поля типа полный текст с анонсом

На следующей форме в отличие от предыдущего типа присутствует дополнительный переключатель Ввод краткого содержания. Этот переключатель определяет будет ли добавлена специальная область ввода краткого содержания которое будет в последствии отображаться при отображении материала в виде анонса (то есть в списках).

Настройка Количество значений в Drupal 7

Также на этой странице в поле Количество значений выберем значение Не ограничено, так как отзывов у нас может быть несколько на один товар. Дальше нажимаем Сохранить настройки.

Теперь когда мы создали три новых поля заполним их для нашего созданного в прошлом уроке товара "Комнатные тапочки". Для этого нажмем на вкладку Редактировать на странице товара.

Вкладка редактирование товара

Рассмотрим картинку ниже на которой представлен пример заполнения текстовых полей:

  • Поле Доставка типа Текст отображается как простое поле ввода, длинна поля ввода 60 символов как было указано в настройках, но ввести в поле можно 255 символов.
  • Поле Описание товара типа Длинный текст отображается как текстовая область (textarea) что позволяет удобно вводить и редактировать большие объемы текста, снизу поля также содержится специальный ползунок с помощью которого можно менять размер текстовой области.
  • Поле Отзывы о товаре также представлено как текстовая область но кроме этого еще содержит дополнительную область ввода анонса которая раскрывается при нажатии на ссылку Редактировать анонс, это поле может содержать сразу несколько значений потому что настройку Количество значений мы установили в значение Не ограничено. Таким образом мы можем добавлять значения нажимая на кнопку Добавить еще внизу поля.

Форма редактирования товара

Теперь сохраним отредактированный товар и посмотрим как он отображается на сайте.

Отображение текстовых полей на сайте

Как видно из картинки особой разницы в отображении нет, за исключением того что каждое значение поля Отзывы о товаре отображается в новом абзаце. Это значит что тип текстового поля больше влияет на то как он будет хранится в базе данных и выглядеть на форме редактирования. Если содержимое будет небольшого размер и не будет содержать HTML разметки (примером такого поля может быть Заголовок, Телефон, Имя и т.д.) то стоит выбрать тип Текст, в других случаях стоит выбрать тип поля Длинный текст или Полный текст с анонсом.

На этом мы закончим этот урок. А в следующем уроке мы рассмотрим три типа поля для создания списков.

Поделись с друзьями:

Комментарии

Хорошо расписано, с иллюстрациями. Только вот как Drupal 7 снять ограничения текстового поля в символах? Ведь оно после создания не меняется, а когда уже есть материалы то его не удальшь (чтоб пересоздать) т.к. уже есть информация в этих полях

После создания текстового поля изменить его длинну через интерфейс пользователя нельзя, так что если заранее не известо какая будет максимальная длинна поля то лучше оставить максимально допустимое значение 255. В случае если все же возникла острая необходимость изменить длинну поля уже содержащего данные то можно это сделать изменив вручную соответствующую запись в базе данных в таблице field_config. Но тут надо быть осторожным, настройка max_length хранится в поле data как один из ключей сериализованного массива.
Пример: Если поле имеет машинное имя test то необходимо найти в таблице field_config запись поле field_name которого равно field_test (тоесть название поля с приставкой field_) и изименить поле data этой записи следующим образом: найти часть строки где задается настройка max_length и изменить ее "max_length";s:2:"20"; => "max_length";s:3:"255";  (в данном случае длинна была изменена с 20 на 255).
Таже нужно изменить длинну поля field_test_value на 255 для таблиц field_data_field_test и field_revision_field_test.
После чего не забудьте почистить кэш. (для отчистки кэша перейдите по адресу admin/config/development/performance и нажмите кнопку "Отчистить кэш")
 

Денис, еще раз здравствуйте.
Появилась необходимость в виджете для ввода номера телефона. Он нужен для ввода данных при оформлении заказа. Когда клиент вводит свой номер, то код оператора сразу берется в скобки, а далее каждая пара цифр разделяется тире. И если введено цифр меньше чем нужно, то поле не считается заполненным.
Какой модуль может в этом помочь?
Дело в том, что (как я понял) модули Phone, Phone namber не идут к версии 7х.-2х.
Заранее спасибо.

И еще (может быть не в этой теме), слышал есть такая возможность, сохраняя некую ноду (товар, статью) на сайте, автоматически создавать тему вКонтакте или Одноклассниках, но как это делается, пока не нашел. Попался вот такой виджет. Но не совсем то, что искал.

Для номера телефона используйте модуль Masked Input, он позволяет задавать любые маски для полей ввода.

На счет второго есть модуль для Вконтакте VK CrossPoster. Для Одноклассников не знаю попробуйте поискать на drupal.org.