Drupal Architecture and functionality

annlam1238 594 views 43 slides Dec 14, 2014
Slide 1
Slide 1 of 43
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43

About This Presentation

DrupalCamp Hong Kong-Dec. 13th-by Edison Wong


Slide Content

Hong Kong Drupal User Group
(HKDUG)
Workshop & Sharing
2014 December 13th

Wong Hoi Sing, Edison
●CEO, Founder, PantaRei Design
–2009, PantaRei Design founded
–2010, HKFYG YBHK applicant
–2011, ITF SERAP applicant
–2011, HKSTP Incu-Tech applicant
●FOSS and Drupal Developer, Contributor and HKDUG Co-founder
–2000, Debian GNU/Linux 2.2 ('potato')
–2005, Drupal Developer
–2008, BarCamp HK Speaker
–2008, HKDUG Co-founder
–2011, Drupal 7.x Core Contributor
[email protected]
●https://www.drupal.org/u/hswong3i

PantaRei Design
●Hong Kong based FOSS service provider
–Content Management System (CMS) with Drupal
–Cloud Hosting Solution with Amazon Web Services
(AWS)
●Business Partner with industry leaders
–2012, AWS Consulting Partner
–2013, Acquia Partner
–2013, Atlassian Experts
–2014, Rackspace Hosting Partner

Outline
●What is Drupal?
●Evaluate Drupal Project Online
●Scalable & Modularized Architecture
●Export Settings with Features
●Revision Control with GIT

What is Drupal?
●Drupal is an open-source platform and content
management system (CMS) for building dynamic web
sites
●Distributed under the terms of the GNU General
Public License (or "GPL"), which means anyone is
free to download it and share it with others
●To easily organize, manage and publish your content,
with an endless variety of customization

Evaluate Drupal Project Online
●http://simplytest.me/
●On-demand sandbox environments
●No overhead for setup LAMP stack
●Simple, fast and for free!
●Let's try it now!
–http://simplytest.me/project/drupal/7.x
–http://simplytest.me/project/drupal/8.x
–http://simplytest.me/project/drustack/7.x-26.x

Evaluate Drupal Project Online
(cont.)
●Check “Status report” page
●Add new article
●Add new main menu link
●Add new block to region
●Add new user
●Change look & feel (theme)
●Change system settings

Scalable & Modularized
Architecture
●Why?
–Easy for implementation
–Reduce team development overhead
–Managable and redeployable
●How?
–Categorizing changes in different level
–Export data/settings with Features
–Manage revision with GIT

Scalable & Modularized
Architecture (cont.)
●Categorizing
–Global modules configuration (Module)
–Content types (CCK)
–Dummy data (UUID Features)
–Filtering logics (Views)
–Contextual conditions and reactions (Context)
–MISC
–Look & feel (Theme)

Module
●Review your project requirement
●Choose which modules/distribution would be suitable,
e.g.
–https://drupal.org/project/commerce_kickstart
–https://drupal.org/project/commons
–https://drupal.org/project/drustack
●Enable and configure
–admin/config
–admin/structure

Content Construction Kit (CCK)
●Content type is the main container for CMS
–admin/structure/types
●Group your content type by functionality
–i.e. share same fields structure
–Moreover, use Taxonomy to label different purpose
●Keep It Simple Stupid (KISS)
●Less is More
●CCK is in Drupal 7 core!

UUID Features
●Node/Term with UUID = Features exportable
●Taxonomy term related to filtering logic should
be export with UUID Features
–i.e. can remap with UUID in Views
●Usually, only basic pages should be export with
UUID Features
–Dynamic content migration should consider Migrate
●Patches required

Views
●Filter content with no custom code nor SQL
required
–admin/structure/views
●Manage with GUI
●Supported by most 3
rd
party modules
●Exportable with Features
–Good combo with Taxonomy + UUID Features!
●Views is in Drupal 8 Core!

Context
●Manage contextual conditions and reactions for
different portions
–admin/structure/context
●Very flexible and powerful (i.e. by rules)
–Drupal default with by blocks
●Reuse theme predefined regions
–Panels default custom layout and design
●Exportable with Features
–Good combo with Taxonomy + UUID Features!

MISC
●Custom blocks
–https://drupal.org/project/boxes
–https://drupal.org/project/bean
●Custom modules
●Additional functionality

Theme
●Site should work well even with Drupal default
theme
●Keep away from custom PHP logic
–Try to implement with previous level
–Reduce backend dependency
●Don't hack core
–Overriding with themable output

Export Settings with Features
●By default, modules settings store in database
–variable_get(), variable_set(), variable_del()
●Features can export these dynamic changes into a
new custom module (a.k.a. Features export)
–https://drupal.org/project/features
●After export, latest changes can compare with
archived version, and (partly) rollback or recreate

Export Settings with Features
(cont.)
●With Scalable & Modularized Architecture
–Export each layer, each group of configuration, individually
●Team development can be workout by sharing code,
and maintain own environment independently
–Shared testbed (i.e. single copy of code + database) no
longer required
●Redeployable
–i.e. Continous Integration (CI) possible

Export Settings with Features
(cont.)
●Knowledge management become possible
●Reduce development risk
●Reduce on going maintenance overhead

Revision Control with GIT (cont.)
●CSV
–Manage revision per file (rename not support)
–Remote repository server required (no local folder
offline management)
–Single commit management (other else contribute
by submit patches)
–TOOOOO OLD (well...)
●Used by Drupal during 7.x development cycle
●After Drupal 7 released, soon migrated to GIT

Revision Control with GIT (cont.)
●SVN
–Manage revision per folder
–Remote repository server required
–Single commit management
–A bit better than CSV, but branching model still
looks crazy
●At least, we now have GIT, why still using SVN?

Revision Control with GIT (cont.)
●GIT
–Manage revision per entire project
–Remote/local repository supported
●git init
●git add --all
●git commit -am 'Initial commit'
●git push
●git log
●git status
–Distributed workflows
–Used by https://drupal.org/ since Drupal 7
–You also know https://github.com/, isn't it?

Revision Control with GIT (cont.)
●Drupal configuration goes dynamic
●Features export make it as static files
●Static files revision control by GIT
●Team members can therefore share progress
by managed code with GIT
●Project manager (PM) can review individual pull
request submitted by team members, and fully
test before commit to main stream

Q&A

I Need More Help!
●Read documents from Drupal Community
–https://drupal.org/documentation
●Join Hong Kong Drupal User Group
–http://www.meetup.com/Hong-Kong-Drupal-User-Group/
–https://groups.drupal.org/hong-kong
●Contact us for one (1) month free-trial support
service
[email protected]

Thank You
●Please feel free to contact us:
–PantaRei Design Limited
–Unit 326, 3/F, Building 16W
No.16 Science Park West Avenue
Hong Kong Science Park, Shatin, N.T.
–Phone: +852 2576 3812
–Fax: +852 3753 3663
–Email: [email protected]
–Web: http://pantarei-design.com
Tags