drupal module development

Post on 01-Nov-2014

6.197 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

This workshop was taken by Ipsita and Siva at OSI Days 2010 conference on 21st September.

TRANSCRIPT

Module Development

Ipsita MishraSiva 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:NodeUserBlockSystemFilter

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

modulename.info

modulename.module

new.info

; $Id$

name = Module namedescription = “Module description”core = Drupal version (e.g.: 5.x, 6.x)package = Package name

; $Id$

name = Text Captchadescription = “Text Captcha”core = 6.xpackage = Osidays

modulename.info

new.info

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'; } }

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!');}

new.module

Download examples module fromhttp://drupal.org/project/examples

http://drupal.org/project/examples

node_example module

hook_node_info()

hook_access()

hook_perm()

http://localhost/drupal-6.19/admin/user/permissions

hook_perm() Output

hook_form()

hook_form() Contd...

hook_validate()

hook_insert()

hook_schema()

hook_install() hook_uninstall()

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_update()

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

IRC Channel#drupal#drupal-support#drupal-hyderabad

http://api.drupal.org

Thank You

@IpsitaMishra@siva_epari

top related