Adding context to your site using Drupal Organic Groups

Post on 24-May-2015

329 views 0 download

Tags:

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.

Transcript of Adding context to your site using Drupal Organic Groups

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

Info@nascom.be

Thanks!