Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Module Development John Fiala and Ezra Barnett Gildesgame.

Similar presentations


Presentation on theme: "Introduction to Module Development John Fiala and Ezra Barnett Gildesgame."— Presentation transcript:

1 Introduction to Module Development John Fiala and Ezra Barnett Gildesgame

2 What is a module? Apollo Lunar Service and Excursion Modules

3 What is a module? A piece of software that adds or extends functionality on a Drupal website

4 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

5 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])

6 Often, adding a new feature entails extending or connecting existing features You 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

7 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.

8 Drupal Community Check out the issue queue Find a related group on groups.drupal.org

9 Custom Modules Often avoidable Often necessary Usually cost more to maintain o API changes, version updates o Security o Feature additions o Friends you lose when you duplicate their module o (We still <8 you)

10 You usually don't have to start from scratch! Drupal Core and Contrib have nice systems that you 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)

11 And much, much more!

12 How do modules add or extend functionality?

13

14 With hooks I'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 Definition B - The hook Implemenation

15 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

16 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)

17 Go to http://drupal.org/node/231036 Your Basic Info File: ; $Id$ name = Example module description = "Gives an example of a module." core = 6.x Optional: package = Views dependencies[] = views dependencies[] = panels php = 5.1

18 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

19 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

20 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

21 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/l ogout/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

22 So, let's throw something together...

23 Modules That Help Build Modules

24 Token

25 Image Credits Tube Man http://www.flickr.com/photos/redherring1up NASA Toys http://www.silentthundermodels.com/nasa_space_models/a pollo.html

26 Updating Modules from 5.x to 6.x http://drupal.org/node/114774 Form API Reference - http://api.drupal.org/api/file/developer/topics/fo rms_api_reference.html/6 Form API Quickstart - http://api.drupal.org/api/file/developer/topics/form s_api.html "Easy" d.o Newbie tag http://drupal.org/project/issues/search?text=&proj ects=&assigned=&submitted=&participant=&status %5B%5D=Open&issue_tags=Newbie


Download ppt "Introduction to Module Development John Fiala and Ezra Barnett Gildesgame."

Similar presentations


Ads by Google