Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Drupal Development Tips - php|tek13

Drupal Development Tips - php|tek13

Overview of various Drupal development tips for Drupal developers.

ctankersley

May 16, 2013
Tweet

More Decks by ctankersley

Other Decks in Programming

Transcript

  1. May  16th,  2013   php|tek  2013   1   E-­‐mail:

     [email protected]   Twitter:  @dragonmantank   App.net:  @ctankersley   https://joind.in/8153  
  2. ¡  Chris  Tankersley   ¡  Doing  PHP  for  9  Years

      ¡  Lots  of  projects  no  one  uses,  and  a  few  that   some  do   §  TL;DR  https://github.com/dragonmantank   ¡  Heavy  Drupal  Development  for  2  years   May  16th,  2013   php|tek  2013   2  
  3. ¡  Pre-­‐built  *AMP  Stack   ¡  Available  for  Drupal  6

     or  7   ¡  Install  and  Ready  to  Go   May  16th,  2013   php|tek  2013   6   Advantages   Disadvantages   ¡  Not  built  for  multiple  installs   ¡  Can’t  use  for  existing  sites   ¡  Only  for  Windows  and  Mac  
  4. ¡  Best  to  use  for  module  or  theme   development

      ¡  I  don’t  like  it  for  full  site  development   May  16th,  2013   php|tek  2013   7  
  5. ¡  Make  use  of  the  “Sites”  option  to  help  

    separate  work   ¡  On  Mac,  only  the  /sites/all/  folder  is  writable   §  Even  Sites  you  create  are  not  writable   ¡  Don’t  put  the  entire  stack  in  VC,  just  your   work   May  16th,  2013   php|tek  2013   8  
  6. May  16th,  2013   php|tek  2013   9   ¡ 

    Full  server  to  run  code   ¡  Self  contained  and  can  be  replicated   ¡  Most  modern  machines  can  do  VM   Advantages   Disadvantages   ¡  Uses  more  resources   ¡  Easier  to  break  
  7. ¡  Best  to  use  for  full  site  development   ¡ 

    Or  use  it  all  the  time,  it’s  nice  to  have  an   environment  you  control   May  16th,  2013   php|tek  2013   10  
  8. ¡  Try  and  pick  a  distro  that  is  close  to

     your  production   setup.  If  you  are  running  Redhat  in  production,  set  up   an  CentOS  box   ¡  Set  up  the  document  root  for  your  web  server  to  be   the  /vagrant  folder  (or  sub  folder,  depending  on  your   site  layout).  This  way  your  site  will  run  automatically.   ¡  If  you  are  running  CentOS  and  Apache,  disable   SELinux  so  that  Apache  will  use  the  /vagrant  folder   ¡  Don't  use  PHP  5.4  with  Drupal  7  or  lower   ¡  Make  sure  APC,  or  some  opcode  cache,  is  installed   ¡  Provide  lots  of  RAM,  at  least  1GB   May  16th,  2013   php|tek  2013   11  
  9. ¡  Run  everything  off  of  your  local  machine!   ¡ 

    Great  if  you  can  do  it,  I  like  vagrant  better   May  16th,  2013   php|tek  2013   12  
  10. ¡  Write  your  tests  before  you  code   ¡  Watch

     it  fail   ¡  Write  code  to  make  your  tests  pass   ¡  Feel  better   May  16th,  2013   php|tek  2013   15  
  11. ¡  Drupal  ships  with  SimpleTest  baked  in   ¡  Supports

     unit  testing  and  functional  testing   ¡  Unit  tests  are  done  by  extending   DrupalUnitTestCase   ¡  Functional  tests  are  done  by  extending   DrupalWebTestCase   May  16th,  2013   php|tek  2013   16  
  12. ¡  Unit  tests  do  not  bootstrap  Drupal,  so  are  

    very  quick   ¡  Functional  Tests  bootstrap  Drupal,  so  are  very   slow   May  16th,  2013   php|tek  2013   18  
  13. ¡  The  test  runner  is  AJAX,  so  it  can  break

     very   easily   ¡  Debugging  can  be  hard  since  extra  output   breaks  the  test  runner,  and  since  the  DB  is   destroyed  watchdog()  is  useless   §  You  can  use  $this-­‐>verbose(‘message’)  or   debug(‘message’)  though   May  16th,  2013   php|tek  2013   19  
  14. Dump  your  database  to  an  SQL  file   $  drush

     sql-­‐dump  -­‐-­‐result-­‐file=/PATH/TO/dump.sql     Back  up  the  entire  site  to  a  tarball   $  drush  archive-­‐dump  default     View  watchdog  entries   $  drush  watchdog-­‐list     Update  Drupal  and  modules   $  drush  pm-­‐update     Download  module   $  drush  pm-­‐download  [module_name]   May  16th,  2013   php|tek  2013   21  
  15. I  couldn’t  think  of  a  good  tagline  that  should  go

     here   May  16th,  2013   php|tek  2013   22  
  16. ¡  Allows  you  to  quickly  back  up  the  DB  and

      move  it   ¡  No  need  to  use  a  DB  GUI   ¡  Can  do  automatic  local  or  remote  backups   ¡  Useful  for  moving  databases  from  one  server   to  another   May  16th,  2013   php|tek  2013   23  
  17. ¡  Exposes  a  lot  of  the  structure  of  Drupal  

    §  Things  like  nodes  can  be  clicked  through  to  see   their  object  structure   ¡  Can  auto-­‐generate  dummy  content   ¡  Better  debugging  output   §  dpm()  and  dvm()  for  pretty  output   §  dpr(),  kpr(),  and  dvr()  will  dump  to  the  page   header   May  16th,  2013   php|tek  2013   24  
  18. ¡  Package  system  for  Drupal   ¡  Takes  a  lot

     of  stuff  in  the  DB  and  makes  it   exportable  and  portable  via  code   ¡  Lot  of  stuff  works  out  of  the  box,  extra   modules  like  UUID,  boxes,  and  features_extra   pick  up  the  slack   ¡  ftools  makes  updating  features  easy   May  16th,  2013   php|tek  2013   25  
  19. ¡  Page  caching  for  full  output  caching   ¡  Block

     caching  so  that  dynamic  content  can   still  update  if  it  needs  to   ¡  You  can  configure  how  long  to  cache  things   for   May  16th,  2013   php|tek  2013   27  
  20. ¡  In  Full  Page  Caching,  most  of  the  PHP  isn’t

      run   §  Effectively  turns  your  site  into  a  static  site  (kind   of)   ¡  With  block  caching,  not  all  blocks  will  cache.   What  and  when  to  cache  is  up  to  the  block   May  16th,  2013   php|tek  2013   28  
  21. It’s  kind  of  like  nuclear  fusion,  but  without  all  the

     explosions   May  16th,  2013   php|tek  2013   29  
  22. ¡  Will  group  needed  JS  and  CSS  files  together,  

    reducing  the  number  of  HTTP  requests   ¡  Will  minify  CSS,  reducing  some  of  the   transmission  size   YOU  have  to  make  your  modules  take   advantage  of  it,  though   May  16th,  2013   php|tek  2013   30  
  23. ¡  Let  Drupal  know  about  your  files   §  drupal_add_js()

      §  drupal_add_css()   §  Add  the  files  to  your  .info  file   ¡  Don’t  just  add  JS  and  CSS  files  via  <script>   and  <style>  tags  in  your  theme   May  16th,  2013   php|tek  2013   31  
  24. ¡  Acquia  Dev  Desktop   ¡  vagrant   ¡  Drupal

     SimpleTest   ¡  drush   ¡  Backup  and  Migrate   ¡  Devel   ¡  Features   May  16th,  2013   php|tek  2013   33  
  25. May  16th,  2013   php|tek  2013   34   E-­‐mail:

     [email protected]   Twitter:  @dragonmantank   App.net:  @ctankersley     https://joind.in/8153