98
Drupal as a Programmer-Friendly CMS Suzanne Kennedy Co-founder @evolvingweb

Drupal as a Programmer-Friendly CMS at ConFoo

Embed Size (px)

DESCRIPTION

Drupal is a content management system and a web development platform. With a small set of core modules and a large ecosystem of community contributed modules, it can be used fro a variety of use cases including corporate intranets, social web applications, online publishing, and education or government websites. In this talk, we’ll cover the benefits of using Drupal for developers, and how to use and extend Drupal as a web development framework.Besides being open source and having an active development-driven community, Drupal has many architectural advantages. We’ll discuss these benefits including the hook system, separation of theme and module layers, the emphasis on flexible content architecture, the database integration layer, and Drupal’s coding standards. We’ll also introduce some tools to get you started on the right track, improve the performance of your Drupal projects, and avoid mistakes.

Citation preview

Page 1: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal as a Programmer-Friendly

CMSSuzanne Kennedy

Co-founder @evolvingweb

Page 2: Drupal as a Programmer-Friendly CMS at ConFoo

About Me• Drupal consulting,

development, and training

• Help organizations build awesome Drupal sites + apps

• Specialize in multilingual Drupal and Apache Solr

Page 3: Drupal as a Programmer-Friendly CMS at ConFoo

What Can You Build with Drupal?

Page 4: Drupal as a Programmer-Friendly CMS at ConFoo

Build an Engagement Platform

Page 5: Drupal as a Programmer-Friendly CMS at ConFoo

Publish Lots of Content

Page 6: Drupal as a Programmer-Friendly CMS at ConFoo

Multilingual Content

Page 7: Drupal as a Programmer-Friendly CMS at ConFoo

Flexible Content Architecture

Page 8: Drupal as a Programmer-Friendly CMS at ConFoo

Flexible Theme Layer

Page 9: Drupal as a Programmer-Friendly CMS at ConFoo

Fancy Search UI

Page 10: Drupal as a Programmer-Friendly CMS at ConFoo

Intranets

Page 11: Drupal as a Programmer-Friendly CMS at ConFoo

Web Applications

Page 12: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal as a CMS

Page 13: Drupal as a Programmer-Friendly CMS at ConFoo

NodesNodes are basic content building blocks

Page 14: Drupal as a Programmer-Friendly CMS at ConFoo

Content TypesNodes can have different fields + settings

Event Blog Post• Date• Location• Description• Signup List

• Author + Date Published

• Body Text• Comments

Page 15: Drupal as a Programmer-Friendly CMS at ConFoo

Node Settings

Page 16: Drupal as a Programmer-Friendly CMS at ConFoo

Fields

Page 17: Drupal as a Programmer-Friendly CMS at ConFoo

Revisions

Page 18: Drupal as a Programmer-Friendly CMS at ConFoo

Taxonomy

Page 19: Drupal as a Programmer-Friendly CMS at ConFoo

Taxonomy

Vocabulary

Terms

Child Terms

Page 20: Drupal as a Programmer-Friendly CMS at ConFoo
Page 21: Drupal as a Programmer-Friendly CMS at ConFoo
Page 22: Drupal as a Programmer-Friendly CMS at ConFoo

Taxonomy + Fields

Page 23: Drupal as a Programmer-Friendly CMS at ConFoo

Menus

Page 24: Drupal as a Programmer-Friendly CMS at ConFoo

Roles

Page 25: Drupal as a Programmer-Friendly CMS at ConFoo

Permissions

Page 26: Drupal as a Programmer-Friendly CMS at ConFoo

Blocks

Page 27: Drupal as a Programmer-Friendly CMS at ConFoo
Page 28: Drupal as a Programmer-Friendly CMS at ConFoo

Themes

Page 29: Drupal as a Programmer-Friendly CMS at ConFoo
Page 30: Drupal as a Programmer-Friendly CMS at ConFoo

Modules

Page 31: Drupal as a Programmer-Friendly CMS at ConFoo

Specific Modules

Page 32: Drupal as a Programmer-Friendly CMS at ConFoo

API-Style Modules

Voting API Rules

Page 33: Drupal as a Programmer-Friendly CMS at ConFoo

API-Style Modules

Flag API

Page 34: Drupal as a Programmer-Friendly CMS at ConFoo

Custom Modules

Page 35: Drupal as a Programmer-Friendly CMS at ConFoo

Custom > Contrib

Page 36: Drupal as a Programmer-Friendly CMS at ConFoo

Administrative UI

Page 37: Drupal as a Programmer-Friendly CMS at ConFoo

Multilingual

Content Translation UI Translation

Page 38: Drupal as a Programmer-Friendly CMS at ConFoo

Multilingual

Page 39: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal as a Framework

Page 40: Drupal as a Programmer-Friendly CMS at ConFoo

Content Architecture

Page 41: Drupal as a Programmer-Friendly CMS at ConFoo

Entity Type

Bundles

Entities

Page 42: Drupal as a Programmer-Friendly CMS at ConFoo

Entity Types

Taxonomy

city break

CommentsUsers

D. SchruteGermany

J. HalpertSpain

adventure

city break

sailing

shopping

dwight8 Sept

Wow, can't wait to get started.

joe8 Sept

Me too!

Content

Content title

Entity types are classes that define content

Page 43: Drupal as a Programmer-Friendly CMS at ConFoo

Custom Entity Types

You can define custom entity types

Page 44: Drupal as a Programmer-Friendly CMS at ConFoo

Entity API

Page 45: Drupal as a Programmer-Friendly CMS at ConFoo

CRUD for Entities

Editing a NodeEditing a Department Entity

Page 46: Drupal as a Programmer-Friendly CMS at ConFoo

Custom Fields

Page 47: Drupal as a Programmer-Friendly CMS at ConFoo

Custom Form Widgets

Page 48: Drupal as a Programmer-Friendly CMS at ConFoo

Custom Formatters

Page 49: Drupal as a Programmer-Friendly CMS at ConFoo

Views

Page 50: Drupal as a Programmer-Friendly CMS at ConFoo

Lists of Content

Page 51: Drupal as a Programmer-Friendly CMS at ConFoo

Defining Lists

Page 52: Drupal as a Programmer-Friendly CMS at ConFoo

Contextual Filters

Page 53: Drupal as a Programmer-Friendly CMS at ConFoo

External Data Sources

Page 54: Drupal as a Programmer-Friendly CMS at ConFoo

Custom Table Query

Activity Stream ViewCustom Activity Table

Page 55: Drupal as a Programmer-Friendly CMS at ConFoo

Features

Page 56: Drupal as a Programmer-Friendly CMS at ConFoo

Configuration = Messy

Text

Illustration: drupal.org/node/580026

Page 57: Drupal as a Programmer-Friendly CMS at ConFoo

Bundles of Config

Features

Contrib

Core

Page 58: Drupal as a Programmer-Friendly CMS at ConFoo

Features

Page 59: Drupal as a Programmer-Friendly CMS at ConFoo

Components

Page 60: Drupal as a Programmer-Friendly CMS at ConFoo

Exportables• Content Types• Fields• Menus• Taxonomy• Views• Image Styles

• WYSIWYG Profiles• Configuration• Rules• Flags Logic• Roles• Permissions

Page 61: Drupal as a Programmer-Friendly CMS at ConFoo

Configuration > Code

Views ConfigurationViews in Code

Page 62: Drupal as a Programmer-Friendly CMS at ConFoo

Benefits of Features

• Stability of the site• Version control• Better development workflow• Distribute to other sites

Page 63: Drupal as a Programmer-Friendly CMS at ConFoo

OpenPublish

Commons

Conference (COD)

Distributions

Page 64: Drupal as a Programmer-Friendly CMS at ConFoo

How Does Drupal Work?

Page 65: Drupal as a Programmer-Friendly CMS at ConFoo

Serving a Request

Page 66: Drupal as a Programmer-Friendly CMS at ConFoo

The steps that Drupal bootstrap carries out when a page request is called.

Drupal Bootstrap

Page 67: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal Menu SystemHow does Drupal know what to render?

Page 68: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal Hook System

Page 69: Drupal as a Programmer-Friendly CMS at ConFoo

How hooks are implemented

Any module can implement a hook as follows:

function <module_name>_<hook_name>(args) { //possibly alter an argument //possibly return something}

Page 71: Drupal as a Programmer-Friendly CMS at ConFoo

Alter Hooks • Modify data generated in other

modules before it gets rendered• Examples:

• hook_form_alter()• hook_mail_alter()• hook_menu_alter()• hook_menu_link_alter()

Page 72: Drupal as a Programmer-Friendly CMS at ConFoo

Form API - benefits• No more HTML generation! • Data validation• Security checks, caching• Code reuse (custom elements, form

altering)• AJAX

Page 73: Drupal as a Programmer-Friendly CMS at ConFoo

Without it...

Page 74: Drupal as a Programmer-Friendly CMS at ConFoo

• Structured arrays define all settings and attributes

• All standard HTML input elements available

Defining form structure

Page 75: Drupal as a Programmer-Friendly CMS at ConFoo

• Array keys starting with '#' are specific form api attributes

• All others are child form elements

Defining form structure

Page 76: Drupal as a Programmer-Friendly CMS at ConFoo

Required Select Box

Page 77: Drupal as a Programmer-Friendly CMS at ConFoo

Multiselect with default

Page 78: Drupal as a Programmer-Friendly CMS at ConFoo

Submission• Simple '#type' =>

'submit' element

• Submit buttons can have their own submit function, allowing different buttons to do different things in a simple way.

Page 79: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal Theme System

1. Load the Theme 2. Preprocess the HTML 3. Display Templates

Page 80: Drupal as a Programmer-Friendly CMS at ConFoo

Things Developers Like

Page 81: Drupal as a Programmer-Friendly CMS at ConFoo

Drush

Page 82: Drupal as a Programmer-Friendly CMS at ConFoo

Coding Standardshttp://drupal.org/coding-standards

Page 83: Drupal as a Programmer-Friendly CMS at ConFoo

Devel

Page 84: Drupal as a Programmer-Friendly CMS at ConFoo

Services Module

Other Drupal Sites

iPad, iPhone Apps Desktop Applications

Hello!

Hello!

Android Apps

Hello!

Page 85: Drupal as a Programmer-Friendly CMS at ConFoo

Other Things Developers Like

• Database Abstraction• Caching• Unit Testing (Simple Test)• Renderable Arrays• Multisite

Page 86: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal.org for Developers

Page 87: Drupal as a Programmer-Friendly CMS at ConFoo

Projects on Drupal.org

Page 88: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal.org Issue Queue

Page 89: Drupal as a Programmer-Friendly CMS at ConFoo

Git Integration

Page 90: Drupal as a Programmer-Friendly CMS at ConFoo

Security Team

Page 91: Drupal as a Programmer-Friendly CMS at ConFoo

Documentation

Page 92: Drupal as a Programmer-Friendly CMS at ConFoo

More Reasons to Use Drupal

Page 93: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal is in Demand!

Page 94: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal is Open Source!

Page 95: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal Community

Page 96: Drupal as a Programmer-Friendly CMS at ConFoo

We’re HiringDevelopersSysadminsProject Managers

evolvingweb.ca/careers

Page 97: Drupal as a Programmer-Friendly CMS at ConFoo

Drupal TrainingDrupal for DevelopersMarch 30th

Drupal Layout & ThemingMay 24-25th

evolvingweb.ca/training

Page 98: Drupal as a Programmer-Friendly CMS at ConFoo

Thank You!Suzanne Kennedy

@evolvingweb