Organic Groups в Drupal 7

контент для сайта

Organic groups (OG) для Drupal 6 являются мощным и широко используемым модулем для создания сайтов, которые включают в себя группы, которые являются мини-сайтами в большем Drupal-сайте. Версия OG для Drupal 7 полностью переписана, заключают в себе преимущества Drupal 7 в API для сущностей и полей.

Одной из главных различий между Drupal 6 и Drupal 7 версий является развитие концепта того, что является «группой». В D6 группой являлась нода и другие ноды могли быть подписаны к ней, как контент группы. В D7 любой тип сущности может быть группой и любой тип сущности может принадлежать группе.

В этой статье мы рассмотрим всю архитектуру OG и пройдём весь путь для построения начальной группы в D7

Что такое группа?

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

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

Фактически, в текущей архитектуре есть две различных типов сущности «группа. Одна это тип контента, который вы обозначили «группа», и второй это особая сущность OG которую вы, вероятно, не будете тут реализовывать. В сущности OG содержится, как сама группа, так и идентификатор группы (GID). Это одна из самых сбивающих с толку вещей в архитектуре OG в D7. Имейте в виду, что GID и NID это два различных понятия. Это в дальнейшем может измениться, поэтому ознакомьтесь со ссылками в конце статьи.

Сущность группа

Для начала работы с OG мы должны решить, какой тип сущности будет «родителем». В D6 это всегда был тип материала, но в D7 это может быть любой тип сущности. Это всё равно будет контент нескольких типов, но так лучше не делать. Один из примеров другого пути это сайт energy.gov, где группы построены на терминах таксономии.

Для примера мы будем строить тип материала под названием «группа», который будет являться контейнером, подобный тому, что происходило в OG версии D6.

Контент OG

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

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

Пользователи это другие, специальные типы контента сущности группы. Они присоединяются к группе и также являются контентом «членство в группе», но кроме того они имеют ряд свойств и пользователи могут обладать ролями и разрешениями для взаимодействия с группой.

Любой тип сущности может принадлежать группе. По факту сама группа может принадлежать другой группе. Это позволяет объединять группы, создавая подруппы.

Скачивание и активация модулей

Построив в уме схему того, как сущности будут взаимодействовать с собой, мы можем приступить к постройке этого на сайте, путём скачивания и активации модуля OG. OG зависят от модуля Entity API, поэтому в нём мы тоже нуждаемся. (прим. от переводчика: «чистая установка» требует модулей: CTools, entityrefference, views bulk operations и views)

Версия D6 OG была монолитным модулем и практически давала «из коробки» всё, для создания группы. В D7-версии мы пошли другим путём. На каждую задачу выделен свой модуль со своими узкоспециализированными задачами. Часть задач вынесена в отдельные проекты.

Вот часть проектов, вынесенных в отдельные модули:

OG Content Links – создаёт ссылку «добавить контент» позволяющая добавить контент в группу
OG Views – предоставляет поле «Group View», которое вы можете добавить на дисплей группы. Заметим, что этот модуль не требует интеграции view, но ситуация планируется измениться в будущем. Если вы хотите встроить контент из view на страницу группы без использования Panels вы можете использовать это поле.
OG Theme – создаёт поле «Group theme», которое позволяет пользователям выбрать тему для группы.
OG Language – позволяет полю «Group language» давать пользователям выбрать язык для своей группы.


Внутри ядра OG также произошли изменения. Например, модуль, который шёл с OG названный OG Context.

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

Строительство наших групп

В версии для D7 при помощи полей в ядре мы используем специальные поля для соединения всех этих сущностей вместе. Если вы использовали Node Refference поля до этого, вы можете узнать знакомый шаблон – каждая сущность имеет поле или поля, которые показывают, как сущности соединены между собой. Для проделывания этой работы мы можем добавить OG поля к сущности или же если будет удобнее добавить поле Node Refference.

Итак, мы начнём с создания нового типа контента, назвав его «Группа». Прокрутите страницу вниз и увидите вкладку «Группы» в которой мы можем указать, является этот контент группой или контентом группы. Нам надо отметить, что это группа.

Далее, нам надо отредактировать существующий тип контента или создать новый. Используя туже вкладку «Группы» мы указываем, что этот тип является контентом группы и будет связан с группой.

После отметки типа контента как контента группы мы должны перейти на экран «управление полями» для каждого типа контента для добавления полей OG к ним. Когда мы это сделаем, то увидим, что у нас есть возможность выбрать посредством полей, какой контент какой группе будет принадлежать. Но вы не увидите тут никаких других специальных полей. Это ещё один из запутанных аспектов в версии D7. Вы не можете полностью контролировать поля из экрана «Менеджер полей».

Для добавления специальных полей в OG нам нужно перейти в административную часть OG. Взгляните на административный экран, скриншот которого представлен ниже, опции помечены номерами. Это то, что нам нужно для настройки полей OG.


Источник: http://habrahabr.ru

Добавить комментарий:
Имя:
E-mail:
2022 © Обсуждение Joomla и других CMS-систем управления сайтами  Правила | О проекте | Обратная связь