SlideShare une entreprise Scribd logo
1  sur  24
Télécharger pour lire hors ligne
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 version 5.x
Email: gajen.ksharma@gmail
Skype: gajendrakumarsharma1688
LinkedIn: www.linkedin.com/in/gajendrasharma
Drupal
•  Available from drupal.org.
•  Runs on every machine with
PHP, supported database
and web server.
•  Very customizable
(themes, modules).
•  Good documented.
•  No limits.
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
–  Written by community
–  Shared under the same GNU Public License

•  Custom
–  Created by website developer
Where to?

Drupal
Core Modules Core Themes
Contributed
Modules

Contributed Themes

Custom Module

Custom Theme

/sites/[all|mysite.com]/custom
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
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.
*.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, …
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
Constants should be all-uppercase
Comments are your friends!
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
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
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/
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
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.
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.)
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
}
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!
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.
Books
•  Drupal 7 Development by Example

•  Beginning Drupal 7
•  Drupal 7 Module Development
•  …
•  …
Q&A

Contenu connexe

Tendances

Flying with Griffon @ CONFESS
Flying with Griffon @ CONFESSFlying with Griffon @ CONFESS
Flying with Griffon @ CONFESS
Andres Almiray
 
Putting "Phings" together - how to automate your life
Putting "Phings" together - how to automate your lifePutting "Phings" together - how to automate your life
Putting "Phings" together - how to automate your life
Boyan Borisov
 
Make JavaScript Lean, Mean, and Clean
Make JavaScript Lean, Mean, and CleanMake JavaScript Lean, Mean, and Clean
Make JavaScript Lean, Mean, and Clean
Blue Raster
 

Tendances (18)

Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.Great Tools Heavily Used In Japan, You Don't Know.
Great Tools Heavily Used In Japan, You Don't Know.
 
Flying with Griffon @ CONFESS
Flying with Griffon @ CONFESSFlying with Griffon @ CONFESS
Flying with Griffon @ CONFESS
 
Day 1 - Intro to Ruby
Day 1 - Intro to RubyDay 1 - Intro to Ruby
Day 1 - Intro to Ruby
 
<?php + WordPress
<?php + WordPress<?php + WordPress
<?php + WordPress
 
HTTP cache: keeping it fresh
HTTP cache: keeping it freshHTTP cache: keeping it fresh
HTTP cache: keeping it fresh
 
Week6 office-hours
Week6 office-hoursWeek6 office-hours
Week6 office-hours
 
Unleashing Creative Freedom with MODX (2015-09-08 at PHPAmersfoort)
Unleashing Creative Freedom with MODX (2015-09-08 at PHPAmersfoort)Unleashing Creative Freedom with MODX (2015-09-08 at PHPAmersfoort)
Unleashing Creative Freedom with MODX (2015-09-08 at PHPAmersfoort)
 
Introducing MongoPress
Introducing MongoPressIntroducing MongoPress
Introducing MongoPress
 
Day 9 - PostgreSQL Application Architecture
Day 9 - PostgreSQL Application ArchitectureDay 9 - PostgreSQL Application Architecture
Day 9 - PostgreSQL Application Architecture
 
Front End Development Automation with Grunt
Front End Development Automation with GruntFront End Development Automation with Grunt
Front End Development Automation with Grunt
 
Putting "Phings" together - how to automate your life
Putting "Phings" together - how to automate your lifePutting "Phings" together - how to automate your life
Putting "Phings" together - how to automate your life
 
Build website using Open Source Technology
Build website using Open Source TechnologyBuild website using Open Source Technology
Build website using Open Source Technology
 
Joomla plugin & module develpment - Presented at Sydney JUG 09/04/2013
Joomla plugin & module develpment - Presented at Sydney JUG 09/04/2013Joomla plugin & module develpment - Presented at Sydney JUG 09/04/2013
Joomla plugin & module develpment - Presented at Sydney JUG 09/04/2013
 
php (Hypertext Preprocessor)
php (Hypertext Preprocessor)php (Hypertext Preprocessor)
php (Hypertext Preprocessor)
 
Tweaking your Template: Joomla Day Boston 2014 Barb Ackemann
Tweaking your Template: Joomla Day Boston 2014 Barb AckemannTweaking your Template: Joomla Day Boston 2014 Barb Ackemann
Tweaking your Template: Joomla Day Boston 2014 Barb Ackemann
 
Best Practices for WordPress in Enterprise
Best Practices for WordPress in EnterpriseBest Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise
 
Make JavaScript Lean, Mean, and Clean
Make JavaScript Lean, Mean, and CleanMake JavaScript Lean, Mean, and Clean
Make JavaScript Lean, Mean, and Clean
 
Three Other Web Frameworks. All .NET. All OSS. One Hour. Go
Three Other Web Frameworks. All .NET. All OSS. One Hour. GoThree Other Web Frameworks. All .NET. All OSS. One Hour. Go
Three Other Web Frameworks. All .NET. All OSS. One Hour. Go
 

Similaire à Gajendra sharma Drupal Module development

Ts drupal6 module development v0.2
Ts   drupal6 module development v0.2Ts   drupal6 module development v0.2
Ts drupal6 module development v0.2
Confiz
 
Doing Drupal security right from Drupalcon London
Doing Drupal security right from Drupalcon LondonDoing Drupal security right from Drupalcon London
Doing Drupal security right from Drupalcon London
Gábor Hojtsy
 
Introduction To Drupal
Introduction To DrupalIntroduction To Drupal
Introduction To Drupal
Lauren Roth
 
Drupal module development
Drupal module developmentDrupal module development
Drupal module development
Rachit Gupta
 
Drush and drupal. администрирование волчек михаил
Drush and drupal. администрирование  волчек михаилDrush and drupal. администрирование  волчек михаил
Drush and drupal. администрирование волчек михаил
drupalconf
 
Introduction to Drupal Content Management System
Introduction to Drupal Content Management SystemIntroduction to Drupal Content Management System
Introduction to Drupal Content Management System
Mario Hernandez
 

Similaire à Gajendra sharma Drupal Module development (20)

Ts drupal6 module development v0.2
Ts   drupal6 module development v0.2Ts   drupal6 module development v0.2
Ts drupal6 module development v0.2
 
Drupal module development
Drupal module developmentDrupal module development
Drupal module development
 
Doing Drupal security right
Doing Drupal security rightDoing Drupal security right
Doing Drupal security right
 
Pure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talkPure Speed Drupal 4 Gov talk
Pure Speed Drupal 4 Gov talk
 
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
Unleashing Creative Freedom with MODX (2015-09-03 at GroningenPHP)
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
 
Doing Drupal security right from Drupalcon London
Doing Drupal security right from Drupalcon LondonDoing Drupal security right from Drupalcon London
Doing Drupal security right from Drupalcon London
 
Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)
Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)
Unleashing Creative Freedom with MODX (2015-07-21 @ PHP FRL)
 
Introduction To Drupal
Introduction To DrupalIntroduction To Drupal
Introduction To Drupal
 
Grok Drupal (7) Theming (presented at DrupalCon San Francisco)
Grok Drupal (7) Theming (presented at DrupalCon San Francisco)Grok Drupal (7) Theming (presented at DrupalCon San Francisco)
Grok Drupal (7) Theming (presented at DrupalCon San Francisco)
 
Drupal security
Drupal securityDrupal security
Drupal security
 
Drupal module development
Drupal module developmentDrupal module development
Drupal module development
 
Rapid site production with Drupal
Rapid site production with DrupalRapid site production with Drupal
Rapid site production with Drupal
 
Drupal Camp Porto - Developing with Drupal: First Steps
Drupal Camp Porto - Developing with Drupal: First StepsDrupal Camp Porto - Developing with Drupal: First Steps
Drupal Camp Porto - Developing with Drupal: First Steps
 
Drupal Training Topics
Drupal Training TopicsDrupal Training Topics
Drupal Training Topics
 
Drush and drupal. администрирование волчек михаил
Drush and drupal. администрирование  волчек михаилDrush and drupal. администрирование  волчек михаил
Drush and drupal. администрирование волчек михаил
 
Your first d8 module
Your first d8 moduleYour first d8 module
Your first d8 module
 
Drupal Skils Lab 302Labs
Drupal Skils Lab 302Labs Drupal Skils Lab 302Labs
Drupal Skils Lab 302Labs
 
72d5drupal
72d5drupal72d5drupal
72d5drupal
 
Introduction to Drupal Content Management System
Introduction to Drupal Content Management SystemIntroduction to Drupal Content Management System
Introduction to Drupal Content Management System
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Gajendra sharma Drupal Module development

  • 1. My first Drupal module! Why not?
  • 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. 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. A whole bunch of modules
  • 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. Where to? Drupal Core Modules Core Themes Contributed Modules Contributed Themes Custom Module Custom Theme /sites/[all|mysite.com]/custom
  • 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. 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. *.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. Checkpoint •  Navigate to Modules section on your site •  You should see your module •  Enable it!
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Books •  Drupal 7 Development by Example •  Beginning Drupal 7 •  Drupal 7 Module Development •  … •  …
  • 24. Q&A