Drupal Module Development - OSI Days 2010
Upcoming SlideShare
Loading in...5

Drupal Module Development - OSI Days 2010



Giving a overview of Drupal API and building a drupal module from scratch. Also

Giving a overview of Drupal API and building a drupal module from scratch. Also



Total Views
Views on SlideShare
Embed Views



3 Embeds 25

http://drupalhyderabad.com 20
http://www.linkedin.com 4
https://www.linkedin.com 1



Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Drupal Module Development - OSI Days 2010 Drupal Module Development - OSI Days 2010 Presentation Transcript

  • Module Development Ipsita Mishra Siva Kumar Epari http://melity.com
  • About Us ●Ipsita Mishra ✔4 years of Drupal experience ✔Tech lead ✔Webadmin & Core member of Drupal Hyderabad ●Siva Kumar Epari ✔2 years of Drupal experience ✔Drupal Developer ✔Webadmin & Core member of Drupal Hyderabad
  • Types of Modules Core Modules Contrib Modules Custom Module
  • Core Modules These are the modules that ships with a Standard Drupal Release. There are Core Optional and Core Required modules. For example: Node User Block System Filter
  • Contrib Modules Over 5800 (as of July 20, 2010) free community- contributed modules, known as contrib modules, are available to alter and extend Drupal's core capabilities and add new features or customize Drupal's behavior and appearance.
  • Popular Contrib Modules These statistics are incomplete; only Drupal websites using the Update Status module are included in the data.
  • Custom Module A Custom module is one which is local to your Drupal Project. It's not yet contributed to the contrib repository.
  • Custom Module(When to write) You need to answer few questions before writing a Custom Module 1. What do you want to achieve by this custom module? 2. Did you search the Contrib Repository to see if a module is already available for that feature? 3. Have you enabled all possible Configurations of the Core & Contrib module to check if they offer you the feature you require? If your answer is, “Yes, I have done enough research and am sure I have to write the code now”, then go ahead ....
  • Custom Module(Why to write) I have 2 reasons to write a Custom module 1. I need a new feature which is not yet available in Drupal, and probably can be contributed as a Contrib Module. 2. I don't want to keep adding additional modules to my site for small tweaks, which I can manage in only one custom module for my website. Don't be too much dependent on Contribs.
  • A simple module directory structure modulename.info modulename modulename.module
  • new.info ; $Id$ name = Module name description = “Module description” modulename.info core = Drupal version (e.g.: 5.x, 6.x) package = Package name ; $Id$ name = Text Captcha description = “Text Captcha” new.info core = 6.x package = Osidays
  • new.module <?php // $Id$ function new_form_alter(&$form, &$form_state, $formid){ if(substr($formid, -9) == 'node_form'){ $form['captcha'] = array( '#type' => 'textfield', '#title' => 'Captcha Question : What is 5 + 3?', ); $form['#validate'][] = '_new_validate'; $form['#submit'][] = '_new_submit'; new.module } } function _new_validate($form, &$form_state){ if($form_state['values']['captcha'] != '8'){ form_set_error('captcha', 'Your Captcha answer is wrong! So you are not a human or you don't know counting :D'); } } function _new_submit($form, &$form_state){ drupal_set_message('You are a human!'); }
  • Download examples module from http://drupal.org/project/examples
  • http://drupal.org/project/examples
  • node_example module
  • hook_node_info()
  • hook_access()
  • hook_perm()
  • hook_perm() Output http://localhost/drupal-6.19/admin/user/permissions
  • hook_form()
  • hook_form() Contd...
  • hook_validate()
  • hook_insert()
  • hook_schema()
  • hook_install() hook_uninstall()
  • hook_update() Preventing SQL injection is easy; db_query provides a way to use parametrized queries. Drupal's database functions replace the sprintf-like placeholders with the properly escaped arguments in order of appearance: %d - integers %f - floats %s - strings, enclose in single quotes %b - binary data, do not enclose in single quotes
  • hook_nodeapi()
  • hook_delete()
  • hook_load()
  • hook_view()
  • hook_theme()
  • Theme function
  • Menu System
  • hook_menu()
  • Menu Item Types "type": A bitmask of flags describing properties of the menu item. Many shortcut bitmasks are provided as constants in menu.inc: * MENU_NORMAL_ITEM: Normal menu items show up in the menu tree and can be moved/hidden by the administrator. * MENU_CALLBACK: Callbacks simply register a path so that the correct function is fired when the URL is accessed. * MENU_SUGGESTED_ITEM: Modules may "suggest" menu items that the administrator may enable. * MENU_LOCAL_TASK: Local tasks are rendered as tabs by default. * MENU_DEFAULT_LOCAL_TASK: Every set of local tasks should provide one "default" task, that links to the same path as its parent when clicked. If the "type" key is omitted, MENU_NORMAL_ITEM is assumed.
  • hook_menu_alter()
  • Drupal Blocks
  • hook_block() A Block represents some auxiliary content along with the primary content of the page.
  • The output is themed comment.module
  • Parameters hook_block($op = 'list', $delta = 0, $edit = array())
  • Operation: list
  • Operation: configure
  • Operation: save
  • Operation: view
  • Developer's Tools ● Drush ● Devel and Devel Themer ● Coder ● Admin Menu
  • DRUpal SHell ● drush dl modulename/themename ● drush en modulename/themename ● drush dis modulename/themename ● drush pm-uninstall modulename/themename ● drush cc Resource: http://drupal.org/files/drush-cheat-sheet.pdf
  • Devel ● Devel: Helper functions for Drupal developers. ● Generate content: Accelerate development of your site or module by quickly generating nodes, comments, terms, users, and more. ● Node Access Summary: View the node access entries for the node(s) that are shown on a page.
  • Devel Themer
  • Coder This module helps in Code Review
  • A Sample Analysis by Coder
  • Resources http://api.drupal.org IRC Channel #drupal #drupal-support #drupal-hyderabad
  • Thank You @IpsitaMishra @siva_epari