Типы контента Drupal. Добавление полей

Для чего нужны типы контента.

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

Благодаря разделению контента на типы мы можем:

  1. Для каждого типа контента определить внешний вид, стили оформления.  Возьмём для примера сайт с блогами и галереями. Мы можем сделать картинку в блоге выровненную по центру, а для галереи несколько картинок в ряд.
  2. Добавить или удалить поля. В статье про таксономию мы создали два словаря. Подключаются они к типу материала через добавление полей. К разным типам можно подключить разные словари.
  3. Вернёмся к нашему примерному сайту где пользователи могут писать в блог и создавать галереи. Благодаря разделению контента на типы мы можем сделать отдельные ссылки на блог пользователя и на его галереи.

Изначально у нас есть два типа материал Article(статья) и Page(страница). Откуда взялись блог и галерея? Тип материала блог появляется после подключения модуля blog. Это модуль ядра, скачивать его не надо. Подключать этот модуль имеет смысл если кроме вас на сайте есть другие пользователи создающие контент. Тип материала галерея мы можем создать сами.

Добавление и удаление полей.

Переходим в меню Structure → Content Type → Article → Manage fields

добавление полей к типу материала Article

На этой странице мы можем добавлять/удалять поля. На данный момент у меня уже существует 4 поля. Именно эти поля нужно будет заполнять при добавлении статьи. Title - заголовок, Body - текст статьи, Image - закачивание картинок, URL path setting - поля для ввода URL. Добавим ещё пару полей для терминов таксономии, созданных в предыдущей статье. Для этого у нас есть раздел Add new fields. В поле Lable вписываем название нашего поля. Далее в поле Type of data to store нужно выбрать тип данных. В нашем случае это Term reference. Последний шаг это выбрать widget. Для разных типов данных набор виджетов будет отличаться. Нам предлагают выбрать один из трёх. Данное поле я создаю для словаря основного меню. На мой взгляд лучше всего для этого поля подходит Select list. После нажатия Save попадаем на страницу настроек. Вся настройка заключается в выборе словаря.

настройки поля

Выбрав нужный словарь жмём Save field settings и... нет это ещё не всё. Теперь мы на странице настроек которые будут применяться к созданному нами полю site_section в типе материалов Article. Дело в том, что однажды созданное поле можно подключать к различным типам материалов. Если вы сейчас перейдёте Structure → Content Type → Basic page → Manage то увидите новый раздел Add existing field. В выпадающем списке можно выбрать уже существующее поле и подключить его не создавая заново. При этом основные настройки (в нашем случае словарь терминов) останутся прежними. Вернёмся к странице настроек поля для Article.

настройки поля для определённого типа контента

Обратите внимание на checkbox  под полем label. Если он отмечен, то статья не будет сохраняться пока вы не выберете один из терминов словаря. Я бы вам рекомендовал отметить эту опцию. Может случиться так, что вы просто забудете выбрать раздел сайта к которому относиться ваша статья, в итоге она не будет отображаться ни в одном разделе. Как вариант вы можете выбрать значение по умолчанию Default value.

В настройках поля в выпадающем списке выбираем количество возможных значений. Для основного меню оставляем 1.

Теперь создадим поле второго словаря с тегами. Словарь с тегами не имеет терминов. Термины будут добавляться при создании статьи, поэтому некоторые моменты создания поля тегов будут отличаться.

При создании поля tags в списке Widget выбираем autocomplit term widget. В итоге получим поле куда можно вводить теги. если вы вводите тег который уже существует вам предложат его выбрать.

поле tags с автодополнением

В настройках поля tags в выпадающем списке Number of values я поставил Unlimited. Тегов может быть несколько поэтому ограничивать не нужно.

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

Посмотрим что у нас получилось. Переходим Content → Add content → Article

новые поля для Article

Два наших поля теперь доступны на странице создания статьи. Посмотрим как они будут выглядеть в уже опубликованной статье.новые поля в опубликованном материале

Вроде бы всё работает. Но работает не так как мне хотелось. Первое что меня не устраивает - присутствие поля Site_section. По сути это поле дублирует основное меню создавая лишнюю, никому не нужную ссылку. Далее идёт поле Tag. По моему, выглядит лучше, когда название поля и ссылки-теги расположены в одной строке. Последнее что я хочу изменить - отображение словарей в <a>тизере</a>.

Приступаем к устранению недостатков. Переходим Structure → Content Types → Article → Manage display. Здесь мы видим таблицу. В столбце Field перечислены поля, которые присутствуют в нашем типе материала. Столбец Label отвечает за вывод названия поля. Столбец формат определяет внешний вид самого поля.

страница управления отображением полей

Поле site_section удалить мы не можем. Не для того мы его создавали. Мы можем его скрыть. Для этого в столбце format выбираем hidden или перетаскиваем поле site_section в раздел Hidden.

Поле tag. Чтобы название поля находилось на одной строке с содержимым, в столбце Label, вместо Above выбираем Inline. Если хотите убрать название поля выбирайте Hidden.

Теперь я собираюсь убрать поле Tag  из тизера. Под таблицей с полями есть раздел Custom display settings. Здесь выбираем режим отображения для которого мы хотим изменить стандартные настройки, в нашем случае это teaser. Отмечаем нужные нам режимы и жмём Save. У нас должны появиться две ссылки в верхнем правом углу. Жмём на Teaser. Для поля Tag в столбце формат выбираем Hidden. Теперь теги-ссылки будут отображаться в полной версии, а в тизере нет.

настройка отображения полей для тизера

Начинающему сайтоделу вся эта канитель с полями и типами материалов может показаться сложной и не нужной. На самом деле всё проще чем кажется. Главное понять как это работает. Всё что вам нужно это тренировка. Создайте свой тип материала, добавляйте и удаляйте поля, смотрите что получается в итоге. Типы материалов освобождают нас от стандартов. Благодаря им мы, не имея навыков программирования, можем менять внешний вид сайта.

Удачных экспериментов.