1 / 26

Introduction to Module Development John Fiala  and Ezra Barnett Gildesgame

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.

dwight
Download Presentation

Introduction to Module Development John Fiala  and Ezra Barnett Gildesgame

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Module DevelopmentJohn Fiala andEzra 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 • Ubercart - Provides a sophisticated online store • Fivestar  - Provides a star rating widget for rating content • 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 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

  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 • API changes, version updates • Security • Feature additions • Friends you lose when you duplicate their module • (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 • Displaying and processing forms for user input • Handling user accounts • Handling Content (Core node, contrib CCK) • Creating custom listings of content (Views)

  11. And much, much more!

  12. How do modules add or extend functionality?

  13. How do modules add or extend functionality?

  14. 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 Definition B - The hook Implemenation

  15. Examples of Hook Events • Displaying a form to the user (hook_form_alter) • Add a custom checkbox • A user signs up for an account (hook_user) • Display a friendly message • Submitting a node (hook_nodeapi) • Store custom data in the database • The website sends mail ( • Connect to an SMTP sever

  16. Writing a module • Create a .info file - Tell Drupal your module exists • Create a .module file • 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 moduledescription = "Gives an example of a module."core = 6.x Optional: package = Viewsdependencies[] = viewsdependencies[] = 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? $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'),); Something like this: QuickStart:  http://api.drupal.org/api/file/developer/topics/forms_api.html/6

  20. How do you Interact with nodes? The node to change hook_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) 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/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

  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/apollo.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/forms_api_reference.html/6 • Form API Quickstart - http://api.drupal.org/api/file/developer/topics/forms_api.html • "Easy" d.o Newbie tag http://drupal.org/project/issues/search?text=&projects=&assigned=&submitted=&participant=&status%5B%5D=Open&issue_tags=Newbie

More Related