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

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

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

    1. HELLO, I AM...
      • Mir Nazim
      • Chief Architect @ iKraft Sofrware Pvt Ltd
      • Working on PHP/Drupal & Python/Django
      • since past few years
      • email me - [email_address]
      • More at www.ikraftsoft.com
    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. Why use CVS version
      • Single most important reason
      • EASY UPDATES
        • $ cvs update -dP
    6. TO NEW DRUPAL VERSION
        • $ cvs update -r DRUPAL-6-3 -dP
        • Be sure that contibuted modules have been ported to the
        • new version
    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. It's a full family
        • filter_xss()
        • check_markup()
        • check_url
        • valid_url()
        • valid_email()
    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. BAD SQL in drupal
        • $result = db_query(”SELECT *
        • FROM {node}
        • WHERE
        • uid = $uid”);
    27. and good SQL
        • $result = db_query(”SELECT *
        • FROM {node}
        • WHERE
        • uid = %d”, $uid);
    28. printf style converstion specifications
        • %d = integer
        • $f = float
        • '%s' = sting note the quotes
        • %b = binary data
        • %% = percent sign
    29. avoid queries in loops asdasd
        • <?php
        • while (some condition) {
        • $res = db_query(”SELECT * FROM
        • {table} WHERE
        • something = something”);
        • }
        • ?>
        • sometimes can cost just too much!
        • Tip: See if you can use map() function
    30. beware of QUERY HELL
      • In some.module
      • <?php
      • $someone = user_load(array('uid' => $uid));
      • call_some_function($uid = $someone->uid);
      • ?>
      • and then
      • <?php
      • function call_some_function($uid){
        • $someone = user_load(array('uid'=>$uid));
        • }
      • ?>
      Reloading user again
    31. modules and html REMEMBER Don't output HTML directly from modules BUT DON'T MAKE IT A RELIGION
    32. Take a look at
        • blog_user_page()
      • Gerenrates HTML directly
      • LEARN FROM IT
    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? ?

    + Mir NazimMir Nazim, 2 years ago

    custom

    1884 views, 1 favs, 0 embeds more stats

    I talked about Best Practices for Drupal Developers more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1884
      • 1884 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 85
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories