Upload
nascom
View
331
Download
0
Tags:
Embed Size (px)
DESCRIPTION
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.
Citation preview
PRESENTS
Context toevoegen aan uw Drupal site met Organic GroupsDrupal User Group
drupal.be
Me
Stijn De Meyere
Drupal Developer
@stijndm
Organic Groups
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.
Agenda● Cases
● Basis concepten van Organic Groups
● Welke API is er voor handen
● Integratie en uitbreiding
● Uitlichten cases
● Nababbelen
Inspireren
Cases
3 cases
● Corporate site met brandsites
● Boekenplatform met e-commerce integratie
● Ledenmanagementplatform
Deme Brandsites
Deme Brandsites - http://deme-group.com
Deme Brandsites - http://deme-group.com
Deme Brandsites - http://deme-group.com
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
Boeda boekenplatform
Boeda boekenplatform
Boeda boekenplatform
Uitdagingen
● Verschillende type gebruikers
○ Uitgevers
○ Vertegenwoordigers/verkopers
○ Boekhandels
● Elke entiteit kan meerdere beheerders hebben
● Bepaalde gebruikers moeten overkoepelend kunnen werken
● E-commerce
KSJ Leden management
KSJ Leden management platform
KSJ Leden management platform
● Verschillende type leden
● Verschillende rechten afhankelijk van uw groep en rol binnen
uw groep
● Groep-overkoepelende rollen
● Bijhouden van ledengeschiedenis
● Groepen hiërarchie
Uitdagingen
De basics
Organic groups basics
● Group and Group Audience
● OG membership
● OG permissions
● OG roles
● OG context
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.
OG Membership
Entity dat een lidmaatschap aanduidt.
bv: gebruiker X is lid van groep 1
Er kunnen verschillende types gedefinieerd worden.
Vergelijkbaar met type krantenabonnement: 6 maanden vs 12 maanden.
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
OG context
Een conditioneel systeem die toelaat een groep te activeren op basis van bepaalde kenmerken
Net als de core language negotiation
OG API
Dé beste resource voor wat OG doet en kan:
● og.module● og.api.php
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.
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)
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)
Rechten beheren
hook_og_permission()
og_user_access($group_type, $gid, $string, $account, ...)
hook_og_user_access_alter()
og_role_grant($group_type, $gid, $uid, $rid)
og_role_revoke($group_type, $gid, $uid, $rid)
og_roles()
og_get_user_roles()
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()
When funny things happen
og_flush_caches()
typical databse caches
og_invalidate_cache()
includes static caches
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()
Rules
Let rules do all the leg work.
Integregeren en uitbreiden
Code, cases, demos
Te bekijken
● OG Context
● Autopopulate
● PURL
● Variable & variable realms
● Views integrations
● Dynamic nodequeues
Limieten & lessen
Revisions zijn lastigIn het algemeen geschiedenis bijhouden van leden en status
Globale adminsUser 1 rechten dupliceren
Multiple memberships & types
OG Membership is nogal single minded
OG Permissions vs Site Permissions
Dat loopt soms door mekaar en kan onverwachte resultaten geven. Goed over nadenken.
Heb ik iets gemist?
C-MINE 1 BUS 13Evence Coppéelaan 91
3600 GenkBelgium
Phone +32 89 20 15 00Fax +32 89 20 15 01
Thanks!