BUILDING A FULL-FLAVORED EVENT SITE IN 5 MINUTES
Drupalcamp Leuven - 15/9/2013
1
vrijdag 20 september 13
CultuurNet Vlaanderen is looking for a...
DRUPAL FRONT END DEVELOPER- 1 jaar+ experience in Drupal Front End webdevelopment
- 2 jaar+ experience in algemeen Front End webdevelopment
More info http://www.cultuurnet.be/zoekt-fe-developer - [email protected] after this session
2
vrijdag 20 september 13
Sven HoutmeyersTeam Leader developers at CultuurNetTechnical lead for all our Drupal Project@[email protected]
Contents
1. Introduction2. Technical dive into the setup by Kristof3. More features & demo of our Drupal install profile
Whoami?
3
vrijdag 20 september 13
CultuurNet (CultureNet):“relationship agency” that mediates between events and participants
Mission: “(more) people (more) enthusiasm (more) culture”
Who are we?
4
vrijdag 20 september 13
through broad cultural communication and marketing
How we do this?
5
vrijdag 20 september 13
First of all we aggregate all cultural and other events
How we do this?
6
vrijdag 20 september 13
First of all we aggregate all cultural and other events
How we do this?
6
vrijdag 20 september 13
First of all we aggregate all cultural and other events
How we do this?
6
vrijdag 20 september 13
Products?
7
vrijdag 20 september 13
Products?
7
vrijdag 20 september 13
Products?
7
vrijdag 20 september 13
Products?
7
vrijdag 20 september 13
Products?
7
vrijdag 20 september 13
Products?
7
vrijdag 20 september 13
Products?
7
vrijdag 20 september 13
Previous situation
So how we do this?
8
API API
The events The participants
CnAPI (CultuurNet API)Module Suite
CultureFeedModule Suite
Drupal
vrijdag 20 september 13
Previous situation
So how we do this?
8
API API
The events The participants
CnAPI (CultuurNet API)Module Suite
CultureFeedModule Suite
Drupal
vrijdag 20 september 13
New situation
So how we do this?
9
APIEvents + participants
CultureFeedModule Suite
Drupal
vrijdag 20 september 13
New situation
So how we do this?
9
APIEvents + participants
CultureFeedModule Suite
Drupal
vrijdag 20 september 13
And who is doing this?
10
?8 developers, pm, solution architects, etc
vrijdag 20 september 13
And who is doing this?
10
?8 developers, pm, solution architects, etc
@stalski @zuuperman
vrijdag 20 september 13
And who is doing this?
10
?8 developers, pm, solution architects, etc
@stalski @zuuperman @kristofcoomans (cyberwolf)
vrijdag 20 september 13
freelancer since beginning of the year (2DotsTwice)
Whoami?
vrijdag 20 september 13
custom search solution, exposed over HTTP
did not allow for more complex, composite queries
example: give me all eventswith minimum age 3 in a range of 30 kilometers from Herent- OR -with the theme ‘music’ in a range of 60 kilometers from Herent
limited faceting support, needs a second HTTP request
back in time: search API v1
12
vrijdag 20 september 13
PHP client library: non-existing
logic stuck in a Drupal module (cnapi), hardly reusable outside of Drupal
back in time: search API v1
13
vrijdag 20 september 13
based on Apache Solr
•REST-like HTTP API•based on Apache Lucene•faceting•spellcheck
on top of that
•OAuth•custom business logic
search API v2
14
vrijdag 20 september 13
PHP client library: modern architecture and approach
use existing tools and libraries
•Composer•Guzzle•Symfony Event Dispatcher
search API v2
15
vrijdag 20 september 13
composer.json in project root
basic usage
16
vrijdag 20 september 13
run ‘composer install’
require composer autoloader in your project, for example in sites/.../settings.php
basic usage
17
vrijdag 20 september 13
basic usage
18
vrijdag 20 september 13
basic usage
19
vrijdag 20 september 13
basic usage
20
vrijdag 20 september 13
basic usage: filter query
21
vrijdag 20 september 13
basic usage: filter query
22
vrijdag 20 september 13
modular HTTP client library for PHP
used by Drupal 8, Amazon SDK, ...
many plugins: OAuth, logging
supports JAVA-style multivalued query string parameters:
PHP: http://example.com/index.php?param1[]=foo¶m1[]=bar
JAVA: http://example.com/index.php?param1=foo¶m1=bar
Guzzle
23
vrijdag 20 september 13
Guzzle: logging
24
vrijdag 20 september 13
Guzzle: logging
25
vrijdag 20 september 13
faceted search
26
vrijdag 20 september 13
faceted search
27
vrijdag 20 september 13
culturefeed_agendaculturefeed_develculturefeed_mailingculturefeed_messagesculturefeed_pagesculturefeed_searchculturefeed_search_uiculturefeed_search_viewsculturefeed_socialculturefeed_uiculturefeed_userpoints_uientry_api_ui
The modules...
28
vrijdag 20 september 13
culturefeed_search
culturefeed_search_ui
culturefeed_agenda
Functionality for events (new SOLR search API)
29
implements search library imports taxonomy (drush)autosuggests
search blocks, facets & results
detail pages of events and locations
vrijdag 20 september 13
Functionality for profiles (UiTiD - "outid" API)
30
culturefeed_ui all user / profile blocks and pages
vrijdag 20 september 13
Integration with social features
31
culturefeed_social all ‘social’ features: likes, comments, attends, notifications, etc
vrijdag 20 september 13
Views integration
32
culturefeed_search_views
select some fields and add filters and sorts
vrijdag 20 september 13
Other new modules
33
culturefeed_pages
culturefeed_messages
culturefeed_userpoints_ui
user can create a page (locations, performers, families, schools, ...)
send / receive messages
collect userpoints and claim promotions
vrijdag 20 september 13
SEO optimalisations
34
- NOINDEX-strategy
- URL-rewriting (slugs)- XML Sitemap- Breadcrumbs- Page title- Document outline- In progress
More info @lukdens
“Googlebot found an extremely high number of URLs on ...”
vrijdag 20 september 13
Devel module
35
Performance site = performance API (+/-)
Logs:- requests to SOLR- requests to UiTiD
Threshold > watchdog
vrijdag 20 september 13
Next steps: CRUD on events
36
Functions to do a CRUD on events are already in library, but we build a form to create, update and delete events in our UiTdatabank as well.
entry_api_ui (still some issues)
vrijdag 20 september 13
Next steps: integration of RFID loyalty program
37
UiTPAS, in development, release end of this year (for muntpunt.be - Brussels).
vrijdag 20 september 13
Other todo’s
38
- Remove all non-generic theming and create a subtheme for bootstrap
- Documentation...
vrijdag 20 september 13
CultuurNet Vlaanderen is looking for a...
DRUPAL FRONT END DEVELOPER- 1 jaar+ experience in Drupal Front End webdevelopment
- 2 jaar+ experience in algemeen Front End webdevelopment
More info http://www.cultuurnet.be/zoekt-fe-developer - [email protected]
39
vrijdag 20 september 13
DEMO
40
- shell script: - downloads dependencies (symfony, guzzle, libraries) - install core and some contrib modules - install culturefeed module suite - download taxonomy terms (drush) - create an install profile
https://github.com/cultuurnet/culturefeed-kickstart
vrijdag 20 september 13