31
Justin Klein Keane <jukeane@s as.upenn.edu> Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Embed Size (px)

Citation preview

Page 1: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Drupal Training

Session 1Introduction to Drupal

Page 2: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Overview

● What is Drupal?● Building blocks of Drupal● Drupal terminology● How Drupal works

Page 3: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

What is Drupal

● Open source content management system● What is a CMS?● Drupal is actually much more than a CMS

– Web application framework

Page 4: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

PHP

● Drupal is written in PHP● Web application scripting language● Open source language sponsored by Zend● PHP is actually written in C● Easy to learn● Great for rapid application development● One of the more popular languages for web

applications

Page 5: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

How PHP Works

● PHP is run by the web server● PHP code embedded in web pages is compiled

and interpreted when the page is requested● Uncompiled code means portability and rapid

refactoring● PHP is truly dynamic

– Even variable names can be dynamic● Code can include other scripts or libraries

Page 6: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Data Persistence

● Like most web applications Drupal needs to store data

● Data is in a database (MySQL)– Database means content changes happen in

the database rather than in code or on files– Makes for easy portability and backup– Access via code, or directly at command line– SQL is a standard, popular, well understood

language

Page 7: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Drupal Hierarchy

● Drupal uses dynamic includes to load code● What happens when there are conflicts?

– Last loaded code is the one that runs● Drupal uses this to allow developers and users

to “extend” Drupal

Page 8: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Composition of Drupal

● Drupal includes a common set of files used to “bootstrap” Drupal

– Set up database connections, provide authentication, present output, etc.

● Drupal has additional modules– These are dynamically included depending on

configuration– 33 modules are included in the Drupal core

Page 9: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Running Drupal

● Every Drupal request goes to index.php, even if the URL looks like a different location

● Index.php does bootstrapping:– checks database for enabled modules– loads modules that are appropriate– checks permissions– queries database for content– applies theme– renders the page

Page 10: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

When things go bad

● When Drupal encounters a PHP fatal error:– White screen of death

● What has happened:– PHP hit an error that forced a stop to

compilation– PHP logs the error in the web server logs– Potentially Drupal logs the error in the Drupal

watchdog table– Execution dies silently without output

Page 11: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Drupal filesystem structure

/includes - Drupal core PHP files

/misc - Various image and js files

/modules - Core modules

/profiles - Profile settings (own tree)

/scripts - Maintenance non-web scripts

/sites - Site definitions

/themes - Core themes

Page 12: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Top Level Files

● Several critical php files:

cron.php - web interface for scheduled tasks

index.php - everything flows through index.php

install.php - installation file (remove)

update.php - update install (for new modules)

xmlrpc.php - provide remote procedures (opt.)

● Various other text files

Page 13: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

How to install Drupal

● You need a database and a web server with PHP already running

● Create a database for the Drupal site● Download the Drupal code from Drupal.org● Point web browser and Drupal root and the rest

is automated

Page 14: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Drupal terminology

● Drupal uses a lot of words that have very specific meaning:

– Module– Theme– Block– Node– Menu

Page 15: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Modules

● Modules can be installed in a number of locations

– /modules– /sites/all/modules– /sites/default/modules– /profiles/profileName/modules

● Modules should be installed in:– /sites/all/modules

Page 16: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

What is a “module”

● Modular piece of code that extends Drupal● Uses the Drupal API

– Just a set of functions defined in the Drupal core (or other modules)

● Provide drop in functionality● Can be enabled/disabled (in the database)● Provide additional functionality without altering

the Drupal core

Page 17: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Built in Modules

● Aggregator

● Block

● Blog

● Blogapi

● Book

● Color

● Comment

● Contact

● Dblog

● Filter

● Forum

● Help

● Locale

● menu

● Node

● Openid

● Path

● Php

● Ping

● Poll

● Profile

● Search

● Statistics

● Syslog

● System

● Taxonomy

● Throttle

● Tracker, translation, trigger, update, upload and user

Page 18: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Look and Feel

● Drupal takes a similar approach to display● Display is a separate area of Drupal● Many components of Drupal are defined in the

“theme”● Themes are comprised of HTML, CSS, PHP

and imagery● Themes utilize the same hierarchy as modules● Theme files are called “templates”

Page 19: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Advantage of Themes

● Themes follow a convention (standardization)● Can easily be swapped out to quickly change or

upgrade the look of a site● Useful because theme developers need not

necessarily be Drupal developers (or PHP programmers)

● Can provide powerful filters to screen output in Drupal

Page 20: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Blocks

● Blocks are pieces of content placed in regions of Drupal pages

● Blocks are arbitrary pieces of content● Usually the stuff that appears in sidebar, header

and footer content● Blocks can be content, forms, special lists,

polls, or arbitrary HTML● Themes define regions for blocks

Page 21: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Nodes

● Drupal organizes most content around the concept of a “node”

● Nodes are just pieces of content● Only a few things aren't nodes – users, groups,

modules, and themes being the main ones● Other stuff, from calendar events, to RSS feed

items, to page content is a node

Page 22: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

How Nodes Work

● Nodes support versioning● As a result node content is stored in the

node_revisions table● The Drupal “node” table only stores metadata

about nodes● Nodes can have various modules applied to

them to adjust input and output handling

Page 23: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Organizing Nodes

● There are all sorts of nodes, how do we keep them organized?

● Drupal supports a categorization of nodes that allows for various node “definitions”

● Content types allow Drupal users to define various fields for different types of nodes

● For instance, one node might include a URL, another a title

● Using “fields” specific to node types allows sorting and display (rather than having the data stuck in a node “body”)

Page 24: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Content Types

● “Page” and “Story” are two default content types

● The titles are arbitrary● Content types define input fields and how the

content is displayed● New content types can easily be created● Content type creation should follow careful

consideration of site architecture and purpose

Page 25: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Taxonomy

● Taxonomy is another way to organize content● Taxonomy are “tags” that are applied to content● “Vocabularies” set up as taxonomies● Vocabularies then contain terms● Taxonomies can be extended and used for

various rules in the Drupal back end● Taxonomy can also be used for display

purposes

Page 26: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Menus

● Drupal menu system is also fairly arbitrary● Display and positioning is controlled by themes● Three default menus:

– Navigation– Primary links– Secondary links

Page 27: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Users and Groups

● Drupal allows users to create accounts● Users are assigned to groups● By default two groups are defined in Drupal

– Authenticated User– Anonymous User

Page 28: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Permissions

● Drupal utilizes a Role Based Access Control (RBAC) system

● Users are assigned to roles, roles receive permissions

● Permissions are set through the Drupal administrative interface

● Uid 1 user (created during install) has all permissions

● When in doubt: it's a permissions issue

Page 29: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Default Drupal is Pretty Useless

Page 30: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

Got Drupal, now what?

● Drupal out of the box doesn't look like much● Drupal is extremely flexible but requires a lot of

configuration● Changing Drupal after deployment is a pain, so

you must plan carefully● Drupal is a framework that doesn't make

assumptions about use cases● Drupal requires lots of tweaks to enable

functionality the way you want it

Page 31: Justin Klein Keane Drupal Training Session 1 Introduction to Drupal

Justin Klein Keane <[email protected]>

For next time:

● A walk through of Drupal installation● Installing and enabling modules● A walk through of module cod