Как создать базовую функциональность органических групп с флагами и ссылками?


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

Модуль поставляется с массой дополнительных функций, которые мне не нужны, например, контроль доступа.

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

Ниже приведено мое решение для создания базовых функций OG с флаговыми и справочными модулями. Моими требованиями были:

  1. пользователи могут создавать группы
  2. пользователи могут присоединяться к группам (и покидать их) без разрешений или разрешений
  3. пользователи могут добавлять другие узлы для отображения в качестве содержимого группы
  4. используйте представления для отображения содержимого группы и членства в группе

Пожалуйста, оставьте свои комментарии или альтернативные решения.

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

Author: Community, 2012-04-21

2 answers

1. Пользователи могут создавать группы:

Для создания групп вы просто создаете новый тип контента "группы" и предоставляете пользователям разрешения на создание нового контента. Я также добавил поле изображения, чтобы разрешить загрузку логотипа группы.

2. Пользователи могут присоединяться к группам (и покидать их) без разрешений или разрешений

Модуль флагов оказался отличным способом разрешить пользователям присоединяться (и покидать) группы. Создайте новый флаг под названием "группы" и убедитесь, что "глобальный флаг" снят, а затем выберите "группы" в качестве "помечаемого содержимого". Вы также можете настроить ссылки на флаги, чтобы сказать "присоединиться к этой группе" и т. Д. Кстати, просто изменить текст ссылки по умолчанию сложно в OG.

3. Пользователи могут добавлять другие узлы для отображения в качестве содержимого группы

Для назначения других узлов типу контента "группы" я использовал ссылки на узлы из модуля ссылки. Я также посмотрел (и использовал ранее) ссылки на сущности и DA члены , похоже, предпочитают ссылки на сущности.

Ссылки на узлы, однако, имеют больше установок и поставляются с отличной функцией "Ссылки", которая позволила мне фильтровать "доступные группы" на странице добавления/редактирования узла только для тех групп, которые были помечены пользователем.

Чтобы разрешить присвоение моих узлов фотографий типу групп, я добавляю поле "group_content" к типу фотографий и выбираю "ссылка на узел" в качестве типа поля. Вы можете указать тип виджета (автозаполнение, флажок, выберите список), я выбрал флажок и 5 в качестве "количества значений". Для "контента, на который можно ссылаться", вы просто выбираете тип контента "группы".

С помощью этого параметра вы можете создать новый узел фотографий и назначить его ЛЮБОЙ из созданных до сих пор групп. Чтобы ограничить его группами пользователей, вы создаете представление "содержимое типа = группа", а затем добавляете связь "Флаги: Флаг узла" с установленным параметром "включать только помеченное содержимое". Выберите свой "флаг группы" и выберите "текущий пользователь".

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

Теперь снова отредактируйте тип содержимого фотографии и отредактируйте поле "group_content". Внизу у вас есть опция "Список узлов, на которые можно ссылаться, может быть предоставлен представлением", и вы должны увидеть свое новое представление в качестве опции. Выберите это и сохраните.

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

4. Используйте представления для отображения содержимого группы и членства в группе

Теперь все, что осталось, - это создать несколько представлений. Например, я хочу показать список пользователей и список содержимого группы на странице группы.

В OG эти представления являются сложными, см. Пример представления содержимого группы и пользователей группы.

С флагами и ссылками на узлы они очень просты:

Список группы с количеством пользователей в каждой группе":

  • тип контента = группа
  • добавить связь "флаги: счетчик узлов" с выбранными "группами" и не выбранным "включать помеченный контент"
  • добавить поле "Флаги: Счетчик флагов", которое показывает количество пользователей
  • отобразить в таблице и включить сортировку по умолчанию по названию или количеству пользователей. Готово

Список участников, принадлежащих к группе:

  • создать представление пользователей
  • добавить связь "Флаги: помеченный контент пользователя" с отметкой "включать только пользователей, у которых помечен контент" и "группировать" как "помеченный"
  • добавьте контекстный фильтр для "Флаги: идентификатор содержимого" и укажите значение по умолчанию "идентификатор содержимого из URL"
  • создайте представление блока, чтобы показать первых 5 пользователей с дополнительной ссылкой, чтобы показать всех пользователей на странице. Выберите этот блок, чтобы он отображался для вашего типа контента "группа"

Показать список узлов, назначенных группе:

  • создайте представление с помощью тип контента = фотография, например
  • добавить контекстный фильтр "Содержимое: Группы (field_group_content) - это поле ссылки на узел, которое мы создали выше. Выберите "контент с URL" в качестве значения по умолчанию, и теперь вы будете видеть только фотографии, назначенные текущей группе.
  • создайте блок, чтобы отобразить последние 5 с "дополнительной" ссылкой на страницу, на которой показаны все. Затем включите отображение блока для типа "группа".

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

 10
Author: uwe, 2017-04-13 12:47:01

В наши дни в городе появился новый ребенок (начиная с D7), который предлагает потенциальную альтернативу Органические группы модуль, т. е. Группа модуль (текущее его обслуживание происходит примерно там, где Drupal начал сохнуть...). Вот цитата со страницы его проекта:

Этот модуль разработан как альтернатива Органическим группам (OG).

Еще несколько подробностей об этом (также из его проекта страница):

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

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

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

Дополнительные подмодули

Дополнительные функции могут быть включены с помощью этих подмодули:

Интеграция с правилами

Модуль группы также хорошо интегрируется с модулем Правил, как объясняется в комментарии №2 к выпуску 2603136, в котором говорится следующее:

... вы уже можете использовать правила для:

  • Добавить новую группу
  • Создайте новое членство в группе и сохраните его (эквивалент $group->addmember())
  • Добавление или удаление группового элемента из Тип группы
  • Реагируйте на новое членство в группе или групповые объекты

Что еще не было сделано, так это действия или условия пользовательских правил. Учитывая, что 90%+ группы - это чистые CRUD-операции API сущностей, еще не было кода пользовательских правил, учитывая, сколько вы уже можете выполнить из коробки.

Полезными правилами, которые мы можем добавить, могут быть:

  • Отправить по электронной почте всем членам группы, необязательно отфильтрованным по GroupRole
  • Более простые для понимания ярлыки для приведенный выше список: "Участник присоединился к группе" звучит проще, чем "Создается объект GroupMembership"

...

Интеграция с другими модулями

Обратитесь к Интеграции с другими модулями и его "Связанным вопросам" о других модулях, для которых интеграции уже существуют или находятся в стадии разработки.

Пример использования модуля группы

См. Как реализовать возможность для пользователей ограничить доступ к узлам/комментариям для пользователей с ту же роль при публикации? для интересной иллюстрации того, как можно использовать этот модуль.

 0
Author: Pierre.Vriens, 2020-06-15 09:13:00