Работа с типами контента и полями в Drupal 7

Все мы знаем и представляем что такое контент. Мы потребляем его каждый день тоннами. Любой сайт по своей сути это более или менее структурированная куча контента. Сегодня предлагаю вам взглянуть на понятие контент с точки зрения счастливого обладателя сайта на Drupal. Далее будет вольный перевод офф доков с сайта drupal.org с моими комментариями.

В Друпале контент делиться на типы. Каждый тип контента содержит определённый набор полей. Можно создать свой тип контента или пользоваться уже существующим. Используя модуль Views мы можем указать кому и где показывать определённый тип контента, а также определять какие поля и в каком порядке будут выводиться.

Примером к выше сказанному может служить список контактов как в телефоне сделанный на Друпале. Первое что нам нужно сделать это создать новый тип контента. Назовём его контакты. Теперь определимся какую информацию будем хранить о каждом контакте и создадим соответствующие поля(имя, фамилия, номер и т.д.) для этого типа материала. Для того чтобы контакты выводились в виде списка используем модуль Views.

Модуль Field UI представляет нам пользовательский интерфейс для управления полями. Поля мы можем определять для контента, комментариев, терминов таксономии и учётных записей пользователей. Поля могут быть добавлены другими модулями (например Meta Tag) и будут содержать необходимые для работы этих модулей данные. Типы полей (текст, изображение и т.д.) определяются модулями и доступны для выбора в Field UI.

интерфейс управления полями

Планирование полей.

Есть несколько моментов прежде чем вы начнёте определять поля.

  • Как будет называться поле.
    Поле имеет метку(отображается в пользовательском интерфейсе) и машинное имя (название для внутреннего пользования). Метка может быть изменена после создания поля, Машинное имя нет.
  • Какой тип данных будет хранить поле.
    Каждое поле может хранить один тип данных(текст, число, файл и т.д.). При определении выбирайте тип поля соответствующий данным которые собираетесь в нём хранить. Тип поля не может быть изменён после создания поля.
  • Как будут вводиться и отображаться данные.
    Каждый тип поля имеет один или более виджетов связанных с ним. Каждый виджет представляет механизм для ввода данных при редактировании(текстовое поле, список, чекбоксы, загрузка файлов и т.д.). Каждый тип поля также имеет один или несколько параметров отображения, определяющие как поля видят посетители сайта. Виджеты и параметры отображения можно изменять после создания поля.
  • Сколько значений будет храниться в поле.
    Можно хранить одно значение, установить определённый максимум значений или неограниченное количество. Возвращаясь к примеру со списком контактов. Поле фамилия может содержать одно значение, а поле номер телефона несколько. Эта настройка может быть изменена после создания поля, но если вы уменьшите максимальное количество значений после ввода данных вы можете потерять часть данных.

Повторное использование полей.

После того как вы определили поле вы можете использовать его повторно. Например вы определили поле с изображением для одного типа контента и хотите установить такое же поле с теми же параметрами для другого типа контента. На странице добавления полей есть возможность выбрать уже существующие поля. Повторное использование полей также доступно для терминов таксономии, учётных записей, комментариев и т.д.

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

Есть две причины повторного использования полей. Во-первых это экономит время на создании новых полей. Во-вторых повторное использование полей позволяет, отображать, фильтровать, группировать и сортировать контент используя поля а не типы контента. Например мы создаём список контента используя Views. Если в нескольких типах контента содержится одно и тоже поле, то мы можем сделать вывод контента содержащий все эти типы отсортированные/отфильтрованные по общему полю.

  • Поля в элементах содержимого.
    Поля добавляются на вкладке Manage fields на странице редактирования типа контента. Некоторые поля , такие как title и body определены по умолчанию и используются как каркас для нового типа контента.
  • Поля в терминах таксономии.
    В таксономии поля определяются на вкладке Manage Fields на странице редактирования словаря. Когда вы определяете поле для словаря, к каждому термину этого словаря добавляется это поле. Например можно определить файл словаря для хранения иконки каждого термина.
  • Поля в профиле пользователя.
    Поля для профиля пользователя определяются на вкладке Manage fields на странице настроек аккаунта. Когда мы определяем поле для учётных записей, поле будет добавлено к каждой учётной записи. Например можно добавить большое текстовое поле чтобы пользователь написал о себе.
  • Поля в комментариях.
    Поля в комментариях определяются на вкладке Comment fields на странице редактирования типа контента. Поле добавляется для всех комментариев для данного типа контента.

Удаление полей.

Если нужно полностью удалить поле удалите его из всех типов содержимого где оно существует.

Некоторые модули создают поля автоматически и должны быть удалены чтобы удалить их поля.

Лучший способ запустить эти две функции:

Если вы в ручную найдёте удаление полей из БДчто-то может пойти не так. Например hook_field_delete не будет вызываться и один из модулей может сломаться.