Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Drupal7 Development

1,384 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Drupal7 Development

  1. 1. Drupal development Introductie hans.rossel@koba.be www.koba.be Twitter: @haro
  2. 2. Boeken
  3. 3. VideoLullabot videos (d6): http://store.lullabot.com/ Of  www.drupalize.meBuild a module: http://buildamodule.com www.archive.org: alle Drupalcon conferentie opnames
  4. 4. Drush
  5. 5. Drush: Drupal ShellDrush = Drupal shell = command line Drupalhttp://drupal.org/project/drush http://vimeo.com/5207683  Extra http://drupal.org/taxonomy/term/4654 http://www.archive.org/details/DrupalconSf2010Drush http://www.archive.org/details/DrupalconSf2010AdvancedDrush Installatie Drush: zie readme.txt file
  6. 6. Drush commando voorbeeldenDrupal installeren in htdocs of www mapje drush (help uitleg) drush dl (download drupal) drush dl cck views nl ckeditor acquia_marina backup_migrate (in drupal map) drush en cck views (modules aanleggen, omgekeerd: dis) drush cronDrupal updaten met drush drush bam backup of drush sql­dump > example10052010.sql tar ­czf drupal.tgz drupal drush variable­set site_offline TRUE drush up: update alle modules + backup code drush updb: run update.php drush variable­set site_offline FALSE
  7. 7. Drush makeDrush make: bundelen van de automatisatiesInstalleren: drush dl drush_makeMakefile opstellen: Drush generate makefile /opt/lampp/htdocs/makefiles/example.make Drush convert makefile example.make example.makedrush make example.make example (maakt een drupal  site op /example)
  8. 8. Drush make structuurcore = 6.xprojects[] = drupalprojects[] = cckprojects[] = viewsUitgebreid voorbeeld:  http://drupalcode.org/viewvc/drupal/contributions/profiles/openatrium/openatrium.make?revision=1.38&view=markup  
  9. 9. Werkomgeving
  10. 10. Versie controleBij het samenwerken van verschillende mensen aan dezelfde code:  bijhouden versies, mergen en oplossen van code conflicten, staging en  deploymentSystemen:  cvs, svn (centralised repository) Git, mercurial, bzr (distributed repository)Populariteit van github noodzaakte drupal.org over te schakelen van de  oude cvs naar git op 24 feb 2011Contributen aan Drupal: http://drupal.org/documentation/git 
  11. 11. IDEEclipse PDT with the plugin PHP debugger support for PDT. http://drupal.org/project/eclipse: hook_... templates http://xtnd.us/eclipse/install Drupal for EclipseNetbeansAptanaKomodoCodaSublime textCodekit
  12. 12. DebuggerXdebugStap voor stap bekijken wat er allemaal gebeurt na een  page requestBreakpointsBacktracehttps://addons.mozilla.org/en­US/firefox/addon/easy­xdeb  http://krimson.be/articles/drupal­coding­speed­tips­using­i  
  13. 13. api.drupal.orgDrupal (core) bevat erg veel comments waardoor de  handleiding eigenlijk in de code zitapi.drupal.org wordt automatisch opgebouwd met de  api module (http://drupal.org/project/api) op basis  van Drupal core.Om een volledige documentatie te hebben van alle  modules (dus incl contrib) op je site kun je zelf de  api module toepassen of bijvoorbeeld  http://api.lullabot.com gebruiken. 
  14. 14. Modules upgraden 6->7http://drupal.org/update/modules/6/7Coder module kan gedeeltelijk upgrades  automatiseren: http://drupal.org/project/coderCoder live site: http://upgrade.boombatower.com 
  15. 15. Drupal coding standardshttp://drupal.org/coding­standardsCoder module (http://drupal.org/project/coder) Voorziet een automatische scanning naar fouten tegen  coding standards
  16. 16. Devel moduleBestaat uit: Devel, devel generate, devel node_access  en devel performance loggingBlokken: development, execute php, switch userTheme developer voor themingExecute php: global $user; dsm($user)
  17. 17. BasiscomponentenNodes (entities + fields)Users: global $user, verschil met $accountBlokkenMenusViews
  18. 18. Drupal database systeemUser: nieuw paswoord via shell script wegens saltSystem: alle modules en hun gewichtenSessions, ...
  19. 19. Drupal bestandsysteem/modules: core modules/sites/all/modules: contrib modules/sites/default/modules: eigen modules (tenzij bij  multisite configuratie)
  20. 20. Module opbouw.info: definitie, dependencies, versie.module: gewoon php code .install: wordt geladen bij installatie/enabled, database  tabellen en variables.inc: opsplitsen van diverse delen, vb admin de.tpl.php: html output.css: css outputTranslations: .po bestandenTests php simpletest
  21. 21. VoorbeeldmodulesAlle modules van Drupal core Zijn heel grondig becommentarieerd en door vele  programmeurs verfijndhttp://drupal.org/project/examples Voorbeeldmodules van veelvoorkomende setups
  22. 22. Functies
  23. 23. Veelvoorkomende functiesL();node_load();node_view();Arg();T();variable_set(); variable_get(); variable_del();format_date()drupal_set_message();http://www.ventureweb.net/blog/great­drupal­functions
  24. 24. Secure codehttp://drupal.org/writing­secure­codeFilteren van data check_plain() check_markup() t() filter_xss(): voor admin paginasDatabase queries Gebruik van placeholders
  25. 25. Hooks
  26. 26. Drupal hooksDont hack core!http://api.drupal.org/api/drupal/includes­­ module.inc/group/hooksWijzigingen aanbrengen in Drupal core of andere  modules zonder die te modules te wijzigenSpelen in op bepaalde events die gebeuren tijdens de  opbouw van een pagina:  Een gebruiker logt in De node wordt getoond Het menu wordt opgebouwd Een formulier wordt verwerkt
  27. 27. hook_form_alterMogelijkheid om elk formulier op de site te wijzigen  via form apiForm api: http://api.drupal.org/api/drupal/developer­­topics­­forms_api_reference.html/7: definitie  van forms, validate en submit functiesStappen Bepaal de form_id Maak abc_form_FORM_ID_alter in je module dsm($form) of print_r($form) Doe de gewenste wijzingen
  28. 28. Andere hookshook_help();hook_menu();hook_permission(); => user_access();hook_mail();hook_user();hook_block_info();hook_node_...();
  29. 29. Definitie nodeZie node_example modulehook_entity_...: Nodes zijn een soort van fieldable  entitieshook_entity_info(): definitie van de entity die je  definieert
  30. 30. Definitie fieldsGebruik van Field apiZie ook field_example modulehook_field_info()hook_field_...()Structuur, schema, validatie, widget, widget_form,  formatter
  31. 31. Database layer DBTNG
  32. 32. Db abstraction layerAbstratie laag gebaseerd op php pdo: Schema apihttp://api.drupal.org/api/drupal Wordt gedefinieerd in hook_schema() in het .install  bestand van de moduleGebruik de Schema module voor definitie  www.drupal.org/project/schema Definieer lege abc_schema() in .install van je module Maak je database tabellen met phpmyadmin Schema module: Inspect tab geeft je de code
  33. 33. Database queriesGebruik db_query en placeholdershttp://api.drupal.org/api/drupal/includes­­database­­databaGebruik db_rewrite_sql ivm node_access modules<?php $result = db_query(db_rewrite_sql("SELECT n.nid,  n.title FROM {node} n")); ?>
  34. 34. ReferencesDrupal module development guide:http://drupal.org/developing/modulesApi: http://api.drupal.org  Working with the Drupal api:  http://drupal.org/node/326Field api en fieldable entities maken:  http://drupal.org/node/443536 

×