В Друпал 8 у нас есть замечательные модули Fields, Field UI, они позволяют нам прикреплять различные поля к объектам (нодам, комментариям, пользователям, терминам таксономии), которые в свою очередь создаются не менее замечательным модулем Entity. С помощью этой связки Entity + Fields, вы можете реализовывать любые связи между реально существующими объектами, на сайт. Например у вас есть фирма, в фирме есть различные отделы, в отделах работают сотрудники. Создаем словарь таксономии Отделы, прописываем там все отделы фирмы, создаем Тип материала Сотрудник и прикрепляем к нему поле Ссылка на термин на словарь Отделы.
Таким образом у нас получится уже не просто страницы отделов и сотрудников, а связанный каталог. В этом уроке мы сделаем такой каталог разделов и сотрудников, а пока важно понять, что друпал позволяет быстро настроить добавление различных объектов на сайт и настроить связи между этими объектами.
Перед началом урока проверьте, что у вас включены модули Entity, Field, Field UI, Taxonomy
Давайте создадим Словарь таксономии Отделы (Мы уже создавали словари таксономии в этом уроке):
Теперь давайте создадим тип материала Сотрудник (мы уже добавляли типы материалов в этом уроке), поле заголовка можно сразу переименовать в ФИО:
Теперь мы можем перейти к разбору трех вкладок Поля, Menage form display, Вывод.
Поля
На этой вкладке мы можем добавлять поля к нашем типам материла (а также другим сущностям: комментариям, пользователям и т.д.). Давайте добавим связь со словарем Отделы:
Также у каждого сотрудника есть должность, давайте добавим поле Должность. Тип поля выберем Текст, это обычное текстовое поле.
Также мы можем добавить поле День рождения к работнику (проверьте что у вас включен модуль datetime):
В тип даты лучше всего указать Date only (только дату):
Давайте еще переименуем поле Body в поле О себе:
Переименуем метку поля:
Ну вот мы и добавили немного полей каждому сотруднику (в следующем уроке мы еще добавим поле Фото, чтобы загрузить фотографии каждого сотрудника). Теперь на странице добавления каждого из сотрудников, у нас будут дополнительные поля.
Если вам необходимо поменять местами поля в форме редактирования ноды, то нужно перейти на вкладку manage form display.
Manage form display
На этой вкладке мы управляем формой добавления ноды, в каком порядке информация будет выводиться информация на странице будет зависеть от вкладке Вывод.
Вывод
Мы можем скрыть например вывод поля Отдела для анонса ноды, потому что в анонсах на странице отдела будут сотрудники только одного отдела и так будет понятно какой это будет отдел. Но в тоже время мы будем выводить поле отдела в полной ноде, чтобы можно было перейти обратно на страницу отдела.
Также нужно настроить формат даты Даты рождения, чтобы выводилось только число, без времени. Для этого нажмите на шестерню и выставите нужный формат даты:
Не забывайте сохранять после каждого изменения. Тоже самое нужно сделать и для отображению По умолчанию (если мы не сделаем отдельно отображение Содержимое полностью, то отображение По умолчанию будет применяться к полной ноде).
Теперь мы можем добавить сотрудников.
Дальше больше, у нас есть еще три вкладки для управления полями комментариев.
Тоже самое что мы проделывали с полями для сотрудников можно проделать и для комментариев. Причем для каждого типа материала поля для комментариев настраиваются отдельно. То есть если для сотрудников у комментариев будет дополнительные поля, то для комментариев статей их может и не быть.
И даже если вы зайдете на страницу редактирования словаря Отделы, то там вы тоже найдете вкладки для редактирования полей терминов таксономии отделов.
Таким образом вы можете добавить поля для каждого отдела (возможно количество сотрудников, логотип отдела).
Тоже самое вы можете проделать с пользователями сайта, на странице управления пользователя
/admin/config/people/accounts
Теперь когда вы знаете что всему и вся можно добавить поля, то можете выбрать для себя чем вам лучше пользоваться Таксономией, пользователями или нодами. Например можно вместо словаря таксономии использовать Тип материала Отдел, а связь настроить с Сотрудником с помощью модуля Entity reference (который дает создавать поля подобные Ссылка на термин, только называются они Ссылка на материал (entity). И даже больше, вы можете не создавать тип материала Сотрудник, а использовать обычных пользователей сайта, только добавить им роль Сотрудник и также задавать связи с помощью Entity rerefence.
Возможность добавления полей в друпал в связке с модулем Views дают огромные возможности в создание сайтов, так что можете переходить к следующему уроку даже если сейчас вам что-то не до конца понятно.
Комментарии
Добавить комментарий
Уважаемый Иван, доброго Вам
Уважаемый Иван, доброго Вам дня!
Посмотрел урок и прочитал материал на этой странице. Все понятно! Спасибо за изложенный материал. При его реализации на своем сайте уперся в следующую задачку...
Итак, дано:
есть словарь таксономии с перечнем нежилых помещений в Офисном центре. Каждый термин таксономии включает в себя:
1. Название термина (номер помещения);
2. Площадь помещения (кв.м.)
3. Фото помещения;
4. Описание помещения.
Также есть словарь таксономии с перечнем собственников помещений в офисном центре. Каждый термин включает в себя:
1. Название термина (ФИО собственника)
2. Телефон
3. e-mail
Также есть тип материала "Аренда помещения", в котором помимо обычных полей, есть два поля ссылки на термины таксономии обоих вышеуказанных словарей.
Задача: сделать так, чтобы при создании материала "Аренда помещения", при выборе соответствующего термина таксономии, автоматически подгружались в созданный материал данные из полей выбранного термина таксономии, такие как "площадь", фото, описание и т.д....
Иными словами, как сделать так, чтобы при создании материала автоматически подгружались данные из полей терминов таксономии.
Заранее благодарю за ответ!
А если у меня 1000
А если у меня 1000 сотрудников? Друпал будет генерить 1000 нод. А если еще нужен поиск нужного сотрудника и вывод только его инфо?
Да, если у вас 1000
Да, если у вас 1000 сотрудников, то будет 1000 нод. Выводить информацию частично и полями вы можете через модуль Views, так же через Views и его exposed filters можно сделать поиск по сотрудника: Имени, отделу, должности и прочее.