introduction to module development john fiala  and ezra barnett gildesgame

Post on 06-Jan-2016

19 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Introduction to Module Development John Fiala  and Ezra Barnett Gildesgame. What is a module?. Apollo Lunar Service and Excursion Modules. What is a module?. A piece of software that adds or extends functionality on a Drupal website. Adds functionality. - PowerPoint PPT Presentation

TRANSCRIPT

Introduction to Module Development

John Fiala and

Ezra Barnett Gildesgame 

What is a module?

 

Apollo Lunar Service and Excursion Modules

What is a module?

A piece of software that adds or extends functionality on a Drupal website

Adds functionality

o Ubercart - Provides a sophisticated online store

o Fivestar  - Provides a star rating widget for rating content

o Signup - Let's users sign up to attend events

Extends Functionality

• UC_Signup - Allows people to to pay for Ubercart Events• Token - Many modules rely on Token to provide

configurable messages including variable (like [user-name])

Often, adding a new feature entails extending or connecting existing

featuresYou usually don't have to start from scratch :)

• Fivestar stores data using the VotingAPI• UC_Signup connects Ubercart and Signup• Embedded Media Field provides a new field for use with the

Content Construction Kit

Core, Contrib & Custom

• Core - Part of the official Drupal package. Everyone using Drupal has it

• Contrib - Publicly available optional download, not specific to a particular website. (Though sometimes specific to a kind of feature)

• Custom - Specific to a particular website. Useful for that website, but not generally useful to the public.

Drupal Community

• Check out the issue queue• Find a related group on groups.drupal.org

Custom Modules

• Often avoidable

• Often necessary

• Usually cost more to maintaino API changes, version updateso Securityo Feature additionso Friends you lose when you duplicate their moduleo (We still <8 you)

You usually don't have to start from scratch!

Drupal Core and Contrib have nice systems thatyou can harness in your module

o Displaying and processing forms for user input

o Handling user accounts

o Handling Content (Core node, contrib CCK)

o Creating custom listings of content (Views)

And much, much more!

How do modules add or extend functionality?

 

How do modules add or extend functionality?

With hooksI'm performing a particular action.

Does anyone have anything to say about it?

• Person A: I'm getting up to get napkins. Does anybody want me to get anything else?

• Person B: Yes! Please get straws.

• Module A: I'm presenting a form to the user.• Module B: Please add a checkbox to the form!

A - The hook DefinitionB - The hook Implemenation

Examples of Hook Events

• Displaying a form to the user (hook_form_alter)o Add a custom checkbox

• A user signs up for an account (hook_user)o Display a friendly message

• Submitting a node (hook_nodeapi)o Store custom data in the database

• The website sends mail (o Connect to an SMTP sever

Writing a module

• Create a .info file - Tell Drupal your module exists• Create a .module file

o Implement one or more hooks• Create a .install file (optional)

Go to http://drupal.org/node/231036Your Basic Info File:  ; $Id$name = Example moduledescription = "Gives an example of a module."core = 6.x

Optional: package = Viewsdependencies[] = viewsdependencies[] = panelsphp = 5.1

How Do I Interact with a Form?

hook_form_alter(&$form, $form_state, $form_id)

The $form Array:(We'll get to this)

The Form Status$form_state['values'] is what was entered

Which Form Is This?Step 1: Use dpm($form_id);to find out!

http://api.drupal.org/api/function/hook_form_alter/6

Form Array?  What?Something like this:

$form['foo'] = array(  '#type' => 'textfield',   '#title' => t('bar'),  '#default_value' => $object['foo'],  '#size' => 60,  '#maxlength' => 64,   '#description' => t('baz'),);$form['submit'] = array(  '#type' => 'submit',  '#value' => t('Save'),);

QuickStart: http://api.drupal.org/api/file/developer/topics/forms_api.html/6

How do you Interact with nodes?hook_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL)

The node to change

What's happening to the node(There's a long list):delete/insert/update/view/validate

Extra data: if 'view', then $teaser, if 'validate', then $form.

Extra data: if 'view' then $page

http://api.drupal.org/api/function/hook_nodeapi/6

What about interacting with User accouts.

hook_user($op, &$edit, &$account, $category = NULL)

What the User is Doing(Again, a list, but...)delete/insert/load/login/logout/register/update /etc, etc, etc

Form Values submitted

The User's User Object(Why isn't it $user?)

$category - the category of User Info being changed

So, let's throw something together...

Modules That Help Build Modules

Token

 

Image Credits

• Tube Man•  http://www.flickr.com/photos/redherring1up• NASA Toys

http://www.silentthundermodels.com/nasa_space_models/apollo.html

 

• Updating Modules from 5.x to 6.xhttp://drupal.org/node/114774

• Form API Reference - http://api.drupal.org/api/file/developer/topics/forms_api_reference.html/6

• Form API Quickstart -http://api.drupal.org/api/file/developer/topics/forms_api.html• "Easy" d.o Newbie taghttp://drupal.org/project/issues/search?text=&projects=&assigned=&submitted=&participant=&status%5B%5D=Open&issue_tags=Newbie

top related