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.

Avatar for ctankersley

ctankersley

May 16, 2013
Tweet

More Decks by ctankersley

Other Decks in Programming

Transcript

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

     chris@ctankersley.com   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:

     chris@ctankersley.com   Twitter:  @dragonmantank   App.net:  @ctankersley     https://joind.in/8153