Как создать базовую функциональность органических групп с флагами и ссылками?
Я использовал Органические группы в течение последних 6 месяцев и обнаружил, что это сложно для моего простого варианта использования. Создание даже базовых представлений для отображения пользователей группы или содержимого группы быстро превращается в "ракету с тех пор".
Модуль поставляется с массой дополнительных функций, которые мне не нужны, например, контроль доступа.
Кроме того, я не мог перенести содержимое своей группы и членство в группе, и когда я вручную вставлял их в таблицы, это не работало надежно.
Ниже приведено мое решение для создания базовых функций OG с флаговыми и справочными модулями. Моими требованиями были:
- пользователи могут создавать группы
- пользователи могут присоединяться к группам (и покидать их) без разрешений или разрешений
- пользователи могут добавлять другие узлы для отображения в качестве содержимого группы
- используйте представления для отображения содержимого группы и членства в группе
Пожалуйста, оставьте свои комментарии или альтернативные решения.
Кстати, Клайв подбодрил меня мета, чтобы опубликовать это руководство. Спасибо, Клайв!
2 answers
1. Пользователи могут создавать группы:
Для создания групп вы просто создаете новый тип контента "группы" и предоставляете пользователям разрешения на создание нового контента. Я также добавил поле изображения, чтобы разрешить загрузку логотипа группы.
2. Пользователи могут присоединяться к группам (и покидать их) без разрешений или разрешений
Модуль флагов оказался отличным способом разрешить пользователям присоединяться (и покидать) группы. Создайте новый флаг под названием "группы" и убедитесь, что "глобальный флаг" снят, а затем выберите "группы" в качестве "помечаемого содержимого". Вы также можете настроить ссылки на флаги, чтобы сказать "присоединиться к этой группе" и т. Д. Кстати, просто изменить текст ссылки по умолчанию сложно в OG.
3. Пользователи могут добавлять другие узлы для отображения в качестве содержимого группы
Для назначения других узлов типу контента "группы" я использовал ссылки на узлы из модуля ссылки. Я также посмотрел (и использовал ранее) ссылки на сущности и DA члены , похоже, предпочитают ссылки на сущности.
Ссылки на узлы, однако, имеют больше установок и поставляются с отличной функцией "Ссылки", которая позволила мне фильтровать "доступные группы" на странице добавления/редактирования узла только для тех групп, которые были помечены пользователем.
Чтобы разрешить присвоение моих узлов фотографий типу групп, я добавляю поле "group_content" к типу фотографий и выбираю "ссылка на узел" в качестве типа поля. Вы можете указать тип виджета (автозаполнение, флажок, выберите список), я выбрал флажок и 5 в качестве "количества значений". Для "контента, на который можно ссылаться", вы просто выбираете тип контента "группы".
С помощью этого параметра вы можете создать новый узел фотографий и назначить его ЛЮБОЙ из созданных до сих пор групп. Чтобы ограничить его группами пользователей, вы создаете представление "содержимое типа = группа", а затем добавляете связь "Флаги: Флаг узла" с установленным параметром "включать только помеченное содержимое". Выберите свой "флаг группы" и выберите "текущий пользователь".
Теперь в вашем представлении отображаются только группы, помеченные текущим пользователем. Нажмите "Добавить" под "Дисплеями" и выберите "Ссылки", затем сохраните.
Теперь снова отредактируйте тип содержимого фотографии и отредактируйте поле "group_content". Внизу у вас есть опция "Список узлов, на которые можно ссылаться, может быть предоставлен представлением", и вы должны увидеть свое новое представление в качестве опции. Выберите это и сохраните.
Вы можете создавать аналогичные ссылки из других узлов с помощью "добавить существующее поле" в разделе "управление полями" типа контента.
4. Используйте представления для отображения содержимого группы и членства в группе
Теперь все, что осталось, - это создать несколько представлений. Например, я хочу показать список пользователей и список содержимого группы на странице группы.
В OG эти представления являются сложными, см. Пример представления содержимого группы и пользователей группы.
С флагами и ссылками на узлы они очень просты:
Список группы с количеством пользователей в каждой группе":
- тип контента = группа
- добавить связь "флаги: счетчик узлов" с выбранными "группами" и не выбранным "включать помеченный контент"
- добавить поле "Флаги: Счетчик флагов", которое показывает количество пользователей
- отобразить в таблице и включить сортировку по умолчанию по названию или количеству пользователей. Готово
Список участников, принадлежащих к группе:
- создать представление пользователей
- добавить связь "Флаги: помеченный контент пользователя" с отметкой "включать только пользователей, у которых помечен контент" и "группировать" как "помеченный"
- добавьте контекстный фильтр для "Флаги: идентификатор содержимого" и укажите значение по умолчанию "идентификатор содержимого из URL"
- создайте представление блока, чтобы показать первых 5 пользователей с дополнительной ссылкой, чтобы показать всех пользователей на странице. Выберите этот блок, чтобы он отображался для вашего типа контента "группа"
Показать список узлов, назначенных группе:
- создайте представление с помощью тип контента = фотография, например
- добавить контекстный фильтр "Содержимое: Группы (field_group_content) - это поле ссылки на узел, которое мы создали выше. Выберите "контент с URL" в качестве значения по умолчанию, и теперь вы будете видеть только фотографии, назначенные текущей группе.
- создайте блок, чтобы отобразить последние 5 с "дополнительной" ссылкой на страницу, на которой показаны все. Затем включите отображение блока для типа "группа".
Вот и все. В качестве дополнительного преимущества я мог бы импортировать свою устаревшую группу членство и содержимое группы с помощью нескольких базовых инструкций SQL INSERT.
В наши дни в городе появился новый ребенок (начиная с D7), который предлагает потенциальную альтернативу Органические группы модуль, т. е. Группа модуль (текущее его обслуживание происходит примерно там, где Drupal начал сохнуть...). Вот цитата со страницы его проекта:
Этот модуль разработан как альтернатива Органическим группам (OG).
Еще несколько подробностей об этом (также из его проекта страница):
Органические группы позволяют самому контенту быть группами, что не всегда то, чего хотят люди. Он использует поле ссылки на сущность для отслеживания связей между группой (узлом, термином,...) и ее содержимым (узлом, термином, пользователем,...).
Группы вместо этого создают группы как сущности, делая их полностью полевыми, расширяемыми и экспортируемыми. К каждой группе могут быть прикреплены пользователи, роли и разрешения. Группы также могут выступать в качестве родителей любого типа сущность. Поскольку сама группа также является сущностью, создавать подгруппы очень легко.
Несмотря на то, что пока у него есть только бета-версия для D7, его Статистика использования, похоже, указывает на то, что он похож на "восходящую звезду". И я слышал, что недавно он упоминался в различных случаях в качестве действительной альтернативы модулю "тяжелые"Органические группы.
Дополнительные подмодули
Дополнительные функции могут быть включены с помощью этих подмодули:
- Добавить группу: Добавление участников в группу без их согласия.
- Подгруппа: Сделайте группу принадлежащей к другой группе.
- Групповое Приглашение: Разрешите членам группы приглашать людей в свою группу.
- Узел Группы: Включает групповую функциональность для модуля узла.
- Профили участников группы: Создание нескольких доступных для заполнения участников профили, которые могут быть прикреплены к участнику.
Интеграция с правилами
Модуль группы также хорошо интегрируется с модулем Правил, как объясняется в комментарии №2 к выпуску 2603136, в котором говорится следующее:
... вы уже можете использовать правила для:
- Добавить новую группу
- Создайте новое членство в группе и сохраните его (эквивалент $group->addmember())
- Добавление или удаление группового элемента из Тип группы
- Реагируйте на новое членство в группе или групповые объекты
- …
Что еще не было сделано, так это действия или условия пользовательских правил. Учитывая, что 90%+ группы - это чистые CRUD-операции API сущностей, еще не было кода пользовательских правил, учитывая, сколько вы уже можете выполнить из коробки.
Полезными правилами, которые мы можем добавить, могут быть:
- Отправить по электронной почте всем членам группы, необязательно отфильтрованным по GroupRole
- Более простые для понимания ярлыки для приведенный выше список: "Участник присоединился к группе" звучит проще, чем "Создается объект GroupMembership"
...
Интеграция с другими модулями
Обратитесь к Интеграции с другими модулями и его "Связанным вопросам" о других модулях, для которых интеграции уже существуют или находятся в стадии разработки.
Пример использования модуля группы
См. Как реализовать возможность для пользователей ограничить доступ к узлам/комментариям для пользователей с ту же роль при публикации? для интересной иллюстрации того, как можно использовать этот модуль.