SlideShare une entreprise Scribd logo
1  sur  42
HELLO,  I  AM... ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
BEST PRACTICES FOR DRUPAL DEVELOPERS DrupalCamp India August 8/9/10, 2008 Dhirubhai Ambani Institute of Information & Communication Technology Gandhinagar, IN
We shall be covering -Best practices for - development environment - module development - theme development - some other stuff
Get the source Start out with the CVS checkout ALWAYS ” CVS chekout instruction  are available on  http://drupal.org/handbooks ”
Why use CVS version ,[object Object],[object Object],[object Object]
TO NEW DRUPAL VERSION ,[object Object],[object Object],[object Object]
revision control your project -Even if: - it is a small project - only you are working on it - Take a pick - svn, bzr, git, darcs ... - VSS(if you are crazy enough) - BUT NOT CVS('coz drupal uses it) the benifits are way too many!
The Editor Wars - Komodo Edit/IDE  my favourite - Scribes on GNOME  my other favourite   - PHPEclipse or Eclipse PDT - Qunta Plus on KDE - TextMate on Mac OS X - What? Windows? Are You Kidding? ;)
MODULE DEVELOPMENT UNDERSTAND ALL THE PREREQUISITES  THROUGHLY
Drupal DB Schema is the most important fundamental - Most importantly, understand: - how content/comments are stored - how taxonomy is stored - how users/ACL is stored
you can't escape  the hook Drupal has hooks for everything You can use hooks for: - CRUD operations - modifying anything(almost) at runtime - path/routes definitions - cron tasks, forms, schema definitions - and much much more...
and do I need to say - That you should know: - PHP - Bsic RDBMS concepts & SQL - Good Programming Style - Software Design Skills - learn that from Drupal ;)
so you want to code a new module Let's ask a few questions
Question #1 Is there are a contributed module that has the functionality I need? If Yes, use it. PERIOD.
Question #2 Is there any contributed module that does something similar to I need? If yes,  use it, switch off the other functions, if possible
Question #3 Can I adapt any contributed module to do what I need? If yes, adapt it.
code your modules when you need to DON'T  FORCE A DONKEY TO RUN A DERBY NEITHER  FORCE A STALLION TO PULL A CART
If you need a new content type CCK will save you lot of time
with CCK, use VIEWS a simplified Crystal Reports for Drupal.
when writing modules, you will be... - Creating Forms - Receiving input - Doing SQL stuff - Outputing strings - containing text, html and other content
Learn and understand Form API Form API has lot of benifits - Define forms in PHP syntax - Drupal will generate correct HTML - Makes form aterable at runtime - Makes programatic submission possible
filter out that evil input with check_plain($string) makes sure $string is plain text and filters out those clever scripts and malicious html
It's a full family ,[object Object],[object Object],[object Object],[object Object],[object Object]
Drupal has a very powerfull input filter system. LEARN IT – USE IT No Excuses
Learn to construct good SQL. PERIOD. Time to go back to basic RDBMS books
BAD  SQL in drupal ,[object Object],[object Object],[object Object],[object Object]
and good SQL ,[object Object],[object Object],[object Object],[object Object]
printf style converstion specifications ,[object Object],[object Object],[object Object],[object Object],[object Object]
avoid queries in loops asdasd  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
beware of QUERY HELL ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Reloading user again
modules and html REMEMBER Don't output HTML directly from modules BUT DON'T MAKE IT A RELIGION
Take a look at ,[object Object],[object Object],[object Object]
one more tip NEVER NEVER NEVER use print statemets from inside function AJAX callbacks are exceptions but don't forget to exit() after print
THEMES - Learn and be strong at - HTML/CSS - Javascript/jQuery - Basic graphic design - use GIMP, Inkscape -  understand difference between svn and png
always use PHPTemplate - Default theme engine since v4.7 - Simple to learn and easy to use - Made for Drupal, by Drupal [people] - Uses our own PHP for templating - No new language to learn (die smarty die)
use some base theme - well tested - basic stuff is ready - some even have a framework(zen) - you can use zen, framework, base, clean, igniter, etc etc,
do you have a separate designer? - Ask him to  - take a look at Drupal generated HTML - learn the id/classes generated  by Drupal - learn basics of PHP and Drupal FireBug can help here.  http://getfirebug.com
avoid complex logic in tpl.php - Templates are for html not for logic - Remeber: - no SQL in templates - no complex logic in templates - on basic branching and looping more than 2 levels of nesting is  ALARM ALARM SITUATION
Other useful stuff - Follow coding standards - coder module can help - its has other tons of features - use devel module - to profile queries - inspect redirects - generate test data/users/taxonomy - debug themes(drupal 6) - and more
drush – drupal swiss army knife  - drush = drupal shell - unix scripting interface to drupal - API to build command line tools - a package manager, SQL Tools and ToolBox - Build your own tools and utilities
there is a lot left to cover Let that be some other time
Thank You - any questions? ?

Contenu connexe

Tendances

Best Practices for Front-End Django Developers
Best Practices for Front-End Django DevelopersBest Practices for Front-End Django Developers
Best Practices for Front-End Django Developers
Christine Cheung
 

Tendances (11)

Introduction To Django
Introduction To DjangoIntroduction To Django
Introduction To Django
 
How Symfony Changed My Life
How Symfony Changed My LifeHow Symfony Changed My Life
How Symfony Changed My Life
 
JavaScript - Chapter 3 - Introduction
 JavaScript - Chapter 3 - Introduction JavaScript - Chapter 3 - Introduction
JavaScript - Chapter 3 - Introduction
 
No-script PowerShell v2
No-script PowerShell v2No-script PowerShell v2
No-script PowerShell v2
 
Best Practices for Front-End Django Developers
Best Practices for Front-End Django DevelopersBest Practices for Front-End Django Developers
Best Practices for Front-End Django Developers
 
Django best practices for logging and signals
Django best practices for logging and signals Django best practices for logging and signals
Django best practices for logging and signals
 
Php mysql ppt
Php mysql pptPhp mysql ppt
Php mysql ppt
 
Drupal 8 customized checkout system
Drupal 8 customized checkout systemDrupal 8 customized checkout system
Drupal 8 customized checkout system
 
Web programming
Web programmingWeb programming
Web programming
 
Low-Maintenance Perl
Low-Maintenance PerlLow-Maintenance Perl
Low-Maintenance Perl
 
Decoupled drupal
Decoupled drupal Decoupled drupal
Decoupled drupal
 

En vedette

Final report on line follower
Final report on line followerFinal report on line follower
Final report on line follower
Priya Hada
 
Line follower robot
Line follower robotLine follower robot
Line follower robot
Priya Hada
 
Roles and problems of agriculture
Roles and problems of agricultureRoles and problems of agriculture
Roles and problems of agriculture
Rebam Jilani
 
Motivation Movie P P T Version Sample
Motivation  Movie  P P T  Version  SampleMotivation  Movie  P P T  Version  Sample
Motivation Movie P P T Version Sample
Andrew Schwartz
 

En vedette (20)

How to make a Line Follower Robot
How to make a Line Follower RobotHow to make a Line Follower Robot
How to make a Line Follower Robot
 
DIY UNO Play Breadboard ATMEGA328P with FT232 Breakout Board
DIY UNO Play Breadboard ATMEGA328P with FT232 Breakout BoardDIY UNO Play Breadboard ATMEGA328P with FT232 Breakout Board
DIY UNO Play Breadboard ATMEGA328P with FT232 Breakout Board
 
L12 c-language-programming-of-atmega328 p
L12 c-language-programming-of-atmega328 pL12 c-language-programming-of-atmega328 p
L12 c-language-programming-of-atmega328 p
 
A REVIEW ON MULTI-SEED SOWING MACHINE
A REVIEW ON MULTI-SEED SOWING MACHINEA REVIEW ON MULTI-SEED SOWING MACHINE
A REVIEW ON MULTI-SEED SOWING MACHINE
 
Arduino camera interfacing OV7670
Arduino camera interfacing OV7670Arduino camera interfacing OV7670
Arduino camera interfacing OV7670
 
Aurdino presentation
Aurdino presentationAurdino presentation
Aurdino presentation
 
L11 assembly-language-programming-of-atmega328 p
L11 assembly-language-programming-of-atmega328 pL11 assembly-language-programming-of-atmega328 p
L11 assembly-language-programming-of-atmega328 p
 
L10 assembly-language-programming-of-atmega328 p
L10 assembly-language-programming-of-atmega328 pL10 assembly-language-programming-of-atmega328 p
L10 assembly-language-programming-of-atmega328 p
 
L15 timers-counters-in-atmega328 p
L15 timers-counters-in-atmega328 pL15 timers-counters-in-atmega328 p
L15 timers-counters-in-atmega328 p
 
Introduction to arduino!
Introduction to arduino!Introduction to arduino!
Introduction to arduino!
 
Final report on line follower
Final report on line followerFinal report on line follower
Final report on line follower
 
Line follower robot
Line follower robotLine follower robot
Line follower robot
 
Operation and management of primary and secondary tillage
Operation and management of primary and secondary tillageOperation and management of primary and secondary tillage
Operation and management of primary and secondary tillage
 
Sowing and planting machines
Sowing and planting machinesSowing and planting machines
Sowing and planting machines
 
Agriculture in indian economy- Vishnu pujari
Agriculture in indian economy- Vishnu pujariAgriculture in indian economy- Vishnu pujari
Agriculture in indian economy- Vishnu pujari
 
Roles and problems of agriculture
Roles and problems of agricultureRoles and problems of agriculture
Roles and problems of agriculture
 
Indian agriculture
Indian agricultureIndian agriculture
Indian agriculture
 
FITC 2014 Amsterdam - Adobe Apps for Web Designers in 2014
FITC 2014 Amsterdam - Adobe Apps for Web Designers in 2014FITC 2014 Amsterdam - Adobe Apps for Web Designers in 2014
FITC 2014 Amsterdam - Adobe Apps for Web Designers in 2014
 
Motivation Movie P P T Version Sample
Motivation  Movie  P P T  Version  SampleMotivation  Movie  P P T  Version  Sample
Motivation Movie P P T Version Sample
 
Olympic Games
Olympic GamesOlympic Games
Olympic Games
 

Similaire à Best Practices For Drupal Developers By Mir Nazim @ Drupal Camp India 2008

How to? Drupal developer toolkit. Dennis Povshedny.
How to? Drupal developer toolkit. Dennis Povshedny.How to? Drupal developer toolkit. Dennis Povshedny.
How to? Drupal developer toolkit. Dennis Povshedny.
DrupalCampDN
 
Drupal module development training delhi
Drupal module development training delhiDrupal module development training delhi
Drupal module development training delhi
unitedwebsoft
 

Similaire à Best Practices For Drupal Developers By Mir Nazim @ Drupal Camp India 2008 (20)

Drupal Best Practices
Drupal Best PracticesDrupal Best Practices
Drupal Best Practices
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
 
Drupal development
Drupal development Drupal development
Drupal development
 
How to? Drupal developer toolkit. Dennis Povshedny.
How to? Drupal developer toolkit. Dennis Povshedny.How to? Drupal developer toolkit. Dennis Povshedny.
How to? Drupal developer toolkit. Dennis Povshedny.
 
Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011
 
Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!Catalyst - refactor large apps with it and have fun!
Catalyst - refactor large apps with it and have fun!
 
Making The Drupal Pill Easier To Swallow
Making The Drupal Pill Easier To SwallowMaking The Drupal Pill Easier To Swallow
Making The Drupal Pill Easier To Swallow
 
Practical catalyst
Practical catalystPractical catalyst
Practical catalyst
 
Joomla! Day Chicago 2011 Presentation - Steven Pignataro
Joomla! Day Chicago 2011 Presentation - Steven PignataroJoomla! Day Chicago 2011 Presentation - Steven Pignataro
Joomla! Day Chicago 2011 Presentation - Steven Pignataro
 
Drupal Module Development - OSI Days 2010
Drupal Module Development - OSI Days 2010Drupal Module Development - OSI Days 2010
Drupal Module Development - OSI Days 2010
 
Drupal Module Development
Drupal Module DevelopmentDrupal Module Development
Drupal Module Development
 
Dn D Custom 1
Dn D Custom 1Dn D Custom 1
Dn D Custom 1
 
Dn D Custom 1
Dn D Custom 1Dn D Custom 1
Dn D Custom 1
 
Advanced Module development
Advanced Module developmentAdvanced Module development
Advanced Module development
 
Drupal
DrupalDrupal
Drupal
 
Taking your site from Drupal 6 to Drupal 7
Taking your site from Drupal 6 to Drupal 7Taking your site from Drupal 6 to Drupal 7
Taking your site from Drupal 6 to Drupal 7
 
Drupal module development training delhi
Drupal module development training delhiDrupal module development training delhi
Drupal module development training delhi
 
Drupal
DrupalDrupal
Drupal
 
DrupalCon LA 2015 Review
DrupalCon LA 2015 ReviewDrupalCon LA 2015 Review
DrupalCon LA 2015 Review
 
2014 11 20 Drupal 7 -> 8 test migratie
2014 11 20 Drupal 7 -> 8 test migratie2014 11 20 Drupal 7 -> 8 test migratie
2014 11 20 Drupal 7 -> 8 test migratie
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Dernier (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 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
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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
 

Best Practices For Drupal Developers By Mir Nazim @ Drupal Camp India 2008

  • 1.
  • 2. BEST PRACTICES FOR DRUPAL DEVELOPERS DrupalCamp India August 8/9/10, 2008 Dhirubhai Ambani Institute of Information & Communication Technology Gandhinagar, IN
  • 3. We shall be covering -Best practices for - development environment - module development - theme development - some other stuff
  • 4. Get the source Start out with the CVS checkout ALWAYS ” CVS chekout instruction are available on http://drupal.org/handbooks ”
  • 5.
  • 6.
  • 7. revision control your project -Even if: - it is a small project - only you are working on it - Take a pick - svn, bzr, git, darcs ... - VSS(if you are crazy enough) - BUT NOT CVS('coz drupal uses it) the benifits are way too many!
  • 8. The Editor Wars - Komodo Edit/IDE my favourite - Scribes on GNOME my other favourite - PHPEclipse or Eclipse PDT - Qunta Plus on KDE - TextMate on Mac OS X - What? Windows? Are You Kidding? ;)
  • 9. MODULE DEVELOPMENT UNDERSTAND ALL THE PREREQUISITES THROUGHLY
  • 10. Drupal DB Schema is the most important fundamental - Most importantly, understand: - how content/comments are stored - how taxonomy is stored - how users/ACL is stored
  • 11. you can't escape the hook Drupal has hooks for everything You can use hooks for: - CRUD operations - modifying anything(almost) at runtime - path/routes definitions - cron tasks, forms, schema definitions - and much much more...
  • 12. and do I need to say - That you should know: - PHP - Bsic RDBMS concepts & SQL - Good Programming Style - Software Design Skills - learn that from Drupal ;)
  • 13. so you want to code a new module Let's ask a few questions
  • 14. Question #1 Is there are a contributed module that has the functionality I need? If Yes, use it. PERIOD.
  • 15. Question #2 Is there any contributed module that does something similar to I need? If yes, use it, switch off the other functions, if possible
  • 16. Question #3 Can I adapt any contributed module to do what I need? If yes, adapt it.
  • 17. code your modules when you need to DON'T FORCE A DONKEY TO RUN A DERBY NEITHER FORCE A STALLION TO PULL A CART
  • 18. If you need a new content type CCK will save you lot of time
  • 19. with CCK, use VIEWS a simplified Crystal Reports for Drupal.
  • 20. when writing modules, you will be... - Creating Forms - Receiving input - Doing SQL stuff - Outputing strings - containing text, html and other content
  • 21. Learn and understand Form API Form API has lot of benifits - Define forms in PHP syntax - Drupal will generate correct HTML - Makes form aterable at runtime - Makes programatic submission possible
  • 22. filter out that evil input with check_plain($string) makes sure $string is plain text and filters out those clever scripts and malicious html
  • 23.
  • 24. Drupal has a very powerfull input filter system. LEARN IT – USE IT No Excuses
  • 25. Learn to construct good SQL. PERIOD. Time to go back to basic RDBMS books
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31. modules and html REMEMBER Don't output HTML directly from modules BUT DON'T MAKE IT A RELIGION
  • 32.
  • 33. one more tip NEVER NEVER NEVER use print statemets from inside function AJAX callbacks are exceptions but don't forget to exit() after print
  • 34. THEMES - Learn and be strong at - HTML/CSS - Javascript/jQuery - Basic graphic design - use GIMP, Inkscape - understand difference between svn and png
  • 35. always use PHPTemplate - Default theme engine since v4.7 - Simple to learn and easy to use - Made for Drupal, by Drupal [people] - Uses our own PHP for templating - No new language to learn (die smarty die)
  • 36. use some base theme - well tested - basic stuff is ready - some even have a framework(zen) - you can use zen, framework, base, clean, igniter, etc etc,
  • 37. do you have a separate designer? - Ask him to - take a look at Drupal generated HTML - learn the id/classes generated by Drupal - learn basics of PHP and Drupal FireBug can help here. http://getfirebug.com
  • 38. avoid complex logic in tpl.php - Templates are for html not for logic - Remeber: - no SQL in templates - no complex logic in templates - on basic branching and looping more than 2 levels of nesting is ALARM ALARM SITUATION
  • 39. Other useful stuff - Follow coding standards - coder module can help - its has other tons of features - use devel module - to profile queries - inspect redirects - generate test data/users/taxonomy - debug themes(drupal 6) - and more
  • 40. drush – drupal swiss army knife - drush = drupal shell - unix scripting interface to drupal - API to build command line tools - a package manager, SQL Tools and ToolBox - Build your own tools and utilities
  • 41. there is a lot left to cover Let that be some other time
  • 42. Thank You - any questions? ?