My first Drupal module!
Why not?
About @ Gajendra Sharma

• Started as PHP developer with
custom CMS
•“You need Linux” they said
•I know Drupal since versi...
Drupal
•  Available from drupal.org.
•  Runs on every machine with
PHP, supported database
and web server.
•  Very customi...
A whole bunch of modules
Which one to use?
Missing a module?
Three kinds of modules (3 Cs)
•  Core
–  Shipped with Drupal
–  Approved by core developers and community

•  Contributed
...
Where to?

Drupal
Core Modules Core Themes
Contributed
Modules

Contributed Themes

Custom Module

Custom Theme

/sites/[a...
Module name
•  Should be a UNIQUE “short name”
•  Used in all file and function names
•  Must start with a letter
•  Only ...
Create a folder + module file
•  Module name “dc_stats”.
•  Create empty folder:
–  /sites/*/modules/custom/dc_stats/

•  ...
*.info
•  Required for every module!
•  Standard .ini file format – key/value pairs
name = Drupal statistic!
description =...
Checkpoint
•  Navigate to Modules section on your site

•  You should see your module
•  Enable it!
Coding standards
•  Use an indent of 2 spaces, no tabs!

• 
• 
• 
• 

UNIX line ending (n)
Omit closing “?>” PHP tag
Const...
Half way there
Hook(s)
hook – [hoo k], noun Ÿ a
curved or angular piece of
metal or other hard
substance for catching,
pul...
How does it work?

Call dispatch

Foreach (enabled_module):!
module_name_menu();!
end foreach;!

Call for hook:
hook_menu(...
Hooks line up!
•  hook_help() – Provides
available documentation.
•  hook_menu() – For paths registration
in order to defi...
API.drupal.org
•  Drupal developer’s documentation.
•  Doc for Drupal 4.6+.
•  Describes function calls, their
parameters ...
Let’s code
•  Define callback function dc_stats_page()
as follows:
funcFon dc_stats_page(){
return "Hello world! You’re aw...
Hey Drupal! Come in!
•  Register path with hook_menu().
•  We will use basic return array structure.
funcFon dc_stats_menu...
Get some real data
funcFon dc_stats_page(){
drupal_set_Ftle("Drupal staFsFcs");
$node_count = $db_node_count;
$user_count ...
Happy ending
•  Refresh your page and see your work.

•  You can do much more – I’m certain!
•  Use your PHP + any other k...
Links to consider
•  http://api.drupal.org
http://drupalcontrib.org/
•  http://buildamodule.com/
•  http://drupal.org/proj...
Books
•  Drupal 7 Development by Example

•  Beginning Drupal 7
•  Drupal 7 Module Development
•  …
•  …
Q&A
Upcoming SlideShare
Loading in …5
×

Gajendra sharma Drupal Module development

577 views

Published on

Drupal Module development and Supports

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
577
On SlideShare
0
From Embeds
0
Number of Embeds
48
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Gajendra sharma Drupal Module development

  1. 1. My first Drupal module! Why not?
  2. 2. About @ Gajendra Sharma • Started as PHP developer with custom CMS •“You need Linux” they said •I know Drupal since version 5.x Email: gajen.ksharma@gmail Skype: gajendrakumarsharma1688 LinkedIn: www.linkedin.com/in/gajendrasharma
  3. 3. Drupal •  Available from drupal.org. •  Runs on every machine with PHP, supported database and web server. •  Very customizable (themes, modules). •  Good documented. •  No limits.
  4. 4. A whole bunch of modules
  5. 5. Which one to use?
  6. 6. Missing a module?
  7. 7. Three kinds of modules (3 Cs) •  Core –  Shipped with Drupal –  Approved by core developers and community •  Contributed –  Written by community –  Shared under the same GNU Public License •  Custom –  Created by website developer
  8. 8. Where to? Drupal Core Modules Core Themes Contributed Modules Contributed Themes Custom Module Custom Theme /sites/[all|mysite.com]/custom
  9. 9. Module name •  Should be a UNIQUE “short name” •  Used in all file and function names •  Must start with a letter •  Only lower-case letters and underscores •  We will use name: “dc_stat” –  For display current node/user stats
  10. 10. Create a folder + module file •  Module name “dc_stats”. •  Create empty folder: –  /sites/*/modules/custom/dc_stats/ •  Create new file “dc_stats.module” with opening PHP tag and NO closing tag!! •  Create new file “dc_stats.info” for meta information.
  11. 11. *.info •  Required for every module! •  Standard .ini file format – key/value pairs name = Drupal statistic! description = Provides some statistic data.! core = 7.x! package = Damjan Cvetan! Other optional keys: stylesheets, scripts, files, dependencies, …
  12. 12. Checkpoint •  Navigate to Modules section on your site •  You should see your module •  Enable it!
  13. 13. Coding standards •  Use an indent of 2 spaces, no tabs! •  •  •  •  UNIX line ending (n) Omit closing “?>” PHP tag Constants should be all-uppercase Comments are your friends!
  14. 14. Half way there Hook(s) hook – [hoo k], noun Ÿ a curved or angular piece of metal or other hard substance for catching, pulling, holding, or suspending something. •  Fundamental to Drupal
  15. 15. How does it work? Call dispatch Foreach (enabled_module):! module_name_menu();! end foreach;! Call for hook: hook_menu() Drupal runFme locale_menu()! user_menu()! contact_menu()! help_menu()! …! …! dc_stats_menu()! …! …! trigger_menu()! path_menu()! Drupal runFme
  16. 16. Hooks line up! •  hook_help() – Provides available documentation. •  hook_menu() – For paths registration in order to define how URL request are handled. •  hook_init() – Run at the beginning of page request. •  hook_cron() – Called whenever a cron run happens. •  More at http://api.drupal.org/
  17. 17. API.drupal.org •  Drupal developer’s documentation. •  Doc for Drupal 4.6+. •  Describes function calls, their parameters and return values. •  You can see the code and “who” is calling this code within Drupal. •  http://api.drupal.org
  18. 18. Let’s code •  Define callback function dc_stats_page() as follows: funcFon dc_stats_page(){ return "Hello world! You’re awesome!”; } •  This will return defined string on call. •  Put this code in dc_stats.module file.
  19. 19. Hey Drupal! Come in! •  Register path with hook_menu(). •  We will use basic return array structure. funcFon dc_stats_menu(){ $items['dc/stats-page'] = array( 'Ftle' => 'Stats info page', 'page callback' => 'dc_stats_page', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; } Visit URL: /dc/stats-page to see if it works. (You might need to clear cache first.)
  20. 20. Get some real data funcFon dc_stats_page(){ drupal_set_Ftle("Drupal staFsFcs"); $node_count = $db_node_count; $user_count = $db_users_count; $header = array("InformaFon", "Value"); $rows[] = array('Number of nodes:', $node_count); $rows[] = array('Number of users:', $user_count); return theme_table(array( 'header' => $header, 'rows' => $rows, … … )); // return }
  21. 21. Happy ending •  Refresh your page and see your work. •  You can do much more – I’m certain! •  Use your PHP + any other knowledge with existing Drupal functions, hooks and variables!
  22. 22. Links to consider •  http://api.drupal.org http://drupalcontrib.org/ •  http://buildamodule.com/ •  http://drupal.org/project/devel –  A suit of modules containing fun for module developers and themers.
  23. 23. Books •  Drupal 7 Development by Example •  Beginning Drupal 7 •  Drupal 7 Module Development •  … •  …
  24. 24. Q&A

×