0
Developing for Drupal:first steps, tips & tricks    Drupal Camp Portugal 2012             Luís Carneiro    http://drupal.o...
Resources• The example sandbox module  – http://tinyurl.com/portocamp-module
Agenda•   First steps•   Some basics of the Drupal API•   Presentation of coding examples•   Questions and Discussion
Set your Developing Environment•   Netbeans•   Eclipse      Look for:                 • Debugger integration•   Aptana    ...
Debugger is your friend            See how the information flows            Track bugs and understand code
Follow the coding standards• drupal.org/coding-standards• http://tinyurl.com/configuring-netbeans• Use the coder module to...
What is assumed  You know the basic components of DrupalContent                Blocks       Taxonomies       Users Types  ...
Drupal Stack              Drupal ThemeContributed Modules    Custom Modules          Drupal Core
Drupal API familyModule      Theme                       Form APISystem      System                       SchemaField API ...
Hook concept• “Event listeners”• Possibility to act in certain points of a page  execution  – To add our custom functional...
Hooks   hook_init       hook_menu                                    Drupal Core hashook_form_alter    hook_theme         ...
It all resumes to…     module_invoke_all(‘hook_name’)                  ormodule_invoke(‘module_name’,’hook_name’)
What you need for a moduleFiles created in:sites/all/modules/custom/yourmodule       yourmodule.info            yourmodule...
.info Filename = Your module namedescription = Line description about module purposepackage = Group of modules it should b...
Module Purpose•   Create blocks•   Create pages and forms•   Create a new field type•   Extend/customize Drupal core•   Ex...
Form API• drupal_get_form($form_id)   – $form_id usually is <module_name>_<description>_form   – Builds a form structure• ...
Cache in Drupal• Internal cache  – Menu, Form, Path, Filter, Field…  – Cache Page (specific for anonymous users)     • The...
Database Access    Static                      Dynamic   Queries                      queries• Usually simple queries     ...
Theme SystemTemplate File            or     Template Function                Preprocessing                  Functions     ...
Theme Simple Example                                               function theme_custom_output($variables) {function your...
Theming tips• Use devel themer module to find the theming  elements on your page• Clear theme registry cache when setting ...
I see a lot of arrays!$page = array(  #show_messages => TRUE,  #theme => page,                In many cases, the data used...
Use Drupal’s utility functions• Function l(): Formats an internal or external URL link  as an HTML anchor tag.• Function t...
Simplify with Drush• Command line tool to do common Drupal  actions    – Possibility to create your own drush      command...
Version Control Everything• Code + Configurations (in database)  – Code, easy to version control  – Configurations… there ...
Learning Resources• Web   – http://api.drupal.org   – http://drupal.org/project/examples   – http://drupal.org/developing/...
Upcoming SlideShare
Loading in...5
×

Drupal Camp Porto - Developing with Drupal: First Steps

2,379

Published on

The goal of this presentation is to give Drupal new comers some insights about key aspects of developing with Drupal.
The idea is to give the audience some guidelines about good practices of Drupal development along with some tips and, by a simple example application, present the most common and important structures/characteristics of the Drupal API.

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

No Downloads
Views
Total Views
2,379
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
27
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • Referirquemais a diantevãoserapresentadosexemplos da utilidade do Debugger.
  • Apresentarmodule_invoke_all(&apos;init&apos;); no ficheiro “common.inc”
  • Mostrar a form de administraçãocontruída.Mostrar a página da form apiAproveitarparafalar do “hook_menu” e “hook_permission”
  • Aproveitarestetópicoparafalar no módulo “examples”.
  • Apresentar a página de sandbox com uma query muito simples feita.Aproveitarparafalar do restante código.
  • Exemplos: page, item_list, table, select list, etcEach theme can take control over most of Drupal&apos;s output, and has complete control over the CSS.Utilizar Debugger parafazer debug nafunção: “portocamp_theme_registry_alter” e mostrarosdiversoselementos de theme definidos.
  • Mostrarexemplo do hook_themecriado.
  • Show command line with drush and execute simple commands.
  • Transcript of "Drupal Camp Porto - Developing with Drupal: First Steps"

    1. 1. Developing for Drupal:first steps, tips & tricks Drupal Camp Portugal 2012 Luís Carneiro http://drupal.org/user/780690 eltugis@gmail.com
    2. 2. Resources• The example sandbox module – http://tinyurl.com/portocamp-module
    3. 3. Agenda• First steps• Some basics of the Drupal API• Presentation of coding examples• Questions and Discussion
    4. 4. Set your Developing Environment• Netbeans• Eclipse Look for: • Debugger integration• Aptana • Function list view• Komodo IDE • Jump to function • Source control integration• Coda • Ability to search across files • Ability to configure syntax style• Vim (follow coding standards)• …
    5. 5. Debugger is your friend See how the information flows Track bugs and understand code
    6. 6. Follow the coding standards• drupal.org/coding-standards• http://tinyurl.com/configuring-netbeans• Use the coder module to validate your code
    7. 7. What is assumed You know the basic components of DrupalContent Blocks Taxonomies Users Types Modules Themes Fields
    8. 8. Drupal Stack Drupal ThemeContributed Modules Custom Modules Drupal Core
    9. 9. Drupal API familyModule Theme Form APISystem System SchemaField API DB Layer API Menu Search …System API
    10. 10. Hook concept• “Event listeners”• Possibility to act in certain points of a page execution – To add our custom functionalities – To alter other’s functionalities • Drupal Moto: Don’t hack Core or others code!
    11. 11. Hooks hook_init hook_menu Drupal Core hashook_form_alter hook_theme about 250 hooks! See the full list: http://tinyurl.com/drupal-hooks hook_mail hook_field_info hook_schema …
    12. 12. It all resumes to… module_invoke_all(‘hook_name’) ormodule_invoke(‘module_name’,’hook_name’)
    13. 13. What you need for a moduleFiles created in:sites/all/modules/custom/yourmodule yourmodule.info yourmodule.module yourmodule.install README.txt (optional) (good practice)
    14. 14. .info Filename = Your module namedescription = Line description about module purposepackage = Group of modules it should belongcore = 7.x (or other version of Drupal)files[] = yourmodule.module (and all other files whichcode should run of every page)
    15. 15. Module Purpose• Create blocks• Create pages and forms• Create a new field type• Extend/customize Drupal core• Extend/customize Contributed modules• …
    16. 16. Form API• drupal_get_form($form_id) – $form_id usually is <module_name>_<description>_form – Builds a form structure• Many form elements – textfield, select, checkbox, radio, password… – The full reference list http://tinyurl.com/drupal-form-api• validate and submit handlers – <form_id>_validate(&$form, &$form_state) – <form_id>_submit(&form, &$form_state)
    17. 17. Cache in Drupal• Internal cache – Menu, Form, Path, Filter, Field… – Cache Page (specific for anonymous users) • The one you activate in “Performance” settings• Custom cache – Two simple functions: • cache_set($cid, $data, $bin, $expire) • cache_get($cid, $bin)
    18. 18. Database Access Static Dynamic Queries queries• Usually simple queries • OOP query object• Only Select queries may • Database agnostic be static • Possibility to alter query elementsdb_query($sql_query) Full database API documentation http://drupal.org/developing/api/database
    19. 19. Theme SystemTemplate File or Template Function Preprocessing Functions • Set the variables for the templates • Define the logic
    20. 20. Theme Simple Example function theme_custom_output($variables) {function yourmodule_theme() { … return array( return $output; custom_output => array( } variables => array(node => NULL), ), ); Function template_custom_output($variables) {} … return $output; }…print theme(custom_output, array(node => function yourtheme_custom_output($variables) { …$node)); return $output;… } All valid theme definitions!
    21. 21. Theming tips• Use devel themer module to find the theming elements on your page• Clear theme registry cache when setting new templates Useful Resources: http://tinyurl.com/drupal-theme-implementations http://tinyurl.com/render-arrays
    22. 22. I see a lot of arrays!$page = array( #show_messages => TRUE, #theme => page, In many cases, the data used to #type => page, content => array( build a page (and all parts of it) is system_main => array(...), kept as structured arrays until the another_block => array(...), #sorted => TRUE, rendering stage ), sidebar_first => array( ... Enormous flexibility in changing ), footer => array( the layout or content of a page ... and its components! ), ...);
    23. 23. Use Drupal’s utility functions• Function l(): Formats an internal or external URL link as an HTML anchor tag.• Function t(): wrap text to be translated.• Function drupal_set_message(): status message for user performed operations• Function watchdog(): logs system messages to drupal log.
    24. 24. Simplify with Drush• Command line tool to do common Drupal actions – Possibility to create your own drush commands…writing hooks!Clear caches $ drushDownload/Enable modules $ drush help <command>Synchronize dev and production databasesCheck the log messages…
    25. 25. Version Control Everything• Code + Configurations (in database) – Code, easy to version control – Configurations… there comes Features + Strongarm module! • Database configurations exported to code • Tip: Keep your features small
    26. 26. Learning Resources• Web – http://api.drupal.org – http://drupal.org/project/examples – http://drupal.org/developing/api• Training – http://drupalize.me – http://buildamodule.com/• Books – Drupal 7 Module Development – Pro Drupal 7 Development – Using Drupal 7
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×