Using Drupal Organic Groups to build communities is cool. But why not look a bit further? We started experimenting and found new ways to use the flexible built-in API. It is perfect for setting up very complex structures within a single Drupal environment. It lets you create small or larger sections that can start leading a life of their own.
5. Enable users to create and manage their own
'groups'. Each group can have subscribers, and
maintains a group home page where subscribers
communicate amongst themselves.
6. Agenda
● Cases
● Basis concepten van Organic Groups
● Welke API is er voor handen
● Integratie en uitbreiding
● Uitlichten cases
● Nababbelen
14. Uitdagingen
● Gedeelde content over corporate site en brandsites
● Delegeren van content over de verschillende brandsites
● Verschillende content beheerders, met eigen rollen en
rechten
● Content workflows
● Zelf aanmaken en beheren van brandsites
● Brandsite beheerders
● (Beperkte) meertaligheid
18. Uitdagingen
● Verschillende type gebruikers
○ Uitgevers
○ Vertegenwoordigers/verkopers
○ Boekhandels
● Elke entiteit kan meerdere beheerders hebben
● Bepaalde gebruikers moeten overkoepelend kunnen werken
● E-commerce
22. ● Verschillende type leden
● Verschillende rechten afhankelijk van uw groep en rol binnen
uw groep
● Groep-overkoepelende rollen
● Bijhouden van ledengeschiedenis
● Groepen hiërarchie
Uitdagingen
24. Organic groups basics
● Group and Group Audience
● OG membership
● OG permissions
● OG roles
● OG context
25. Group and
Group
Audience
Group
Field dat een entity als
group aanduidt.
Niet zichtbaar in UI.
Group Audience
Entity reference field
met specifiek group
gedrag.
Koppelt een entity aan
een groep.
27. OG roles &
permissions
Een interne rollen
systeem dat toelaat
om op groepniveau
rechten toe te kennen.
bv: een rol die toelaat
nieuwsberichten te
publiceren in een
groep
31. Wat je moet
weten
(1) Entity reference wordt
onderschept en opgeslaan als
og_membership.
EntityFieldQuery kan wel nog gebruikt
worden. Zie:
og_entity_query_alter()
og_query_og_membership_alter()
(2) Alles kan van alles lid zijn.
Elke entity kan als groep dienen,
elke entity kan als lid fungeren.
32. Groep of groep content
og_is_group($entity_type, $type)
og_is_group_type($entity_type, $bundle_name)
og_is_group_content_type($entity_type, $bundle_name)
33. Iets of iemand lid maken
og_group($group_type, $gid, $values, $save_created)
og_ungroup($group_type, $gid, $entity_type, $etid)
og_get_entity_groups($entity_type, $entity, $states)
35. Lidmaatschap opvragen
og_is_member($group_type, $gid, $entity_type, $entity)
og_get_groups_by_user($account, $group_type)
og_get_entity_groups($entity_type, $entity, $states)
Membership laden op basis van groep en entity
og_get_membership()
36. When funny things happen
og_flush_caches()
typical databse caches
og_invalidate_cache()
includes static caches
37. Context
Ook wel, welke groep is er nu eigenlijk actief
og_context($group_type)
Of als je een specifieke groep wil activeren
og_context($group_type, $group)
hook_og_context_negotiation_info()