CiviCRM Developer Training in NYC

I attended a CiviCRM Developers Training on the 9th and 10th of September in New York City along with about 20 others including four members of the CiviCRM core team (Donald Lobo, Kurand Jalmi, David Greenberg and Yashodha Chaku).  The sessions were a mix of existing site presentations, new CiviCRM v3.0 feature demonstrations, and hands on configuration and coding.

CiviCRM 3.0 - released October 1st - was at center stage with usability being the star of the show.  Configurable drop-down menus at the top of the screen - that play nice with the Drupal (contributed) admin_menu - now provide access to CiviCRM features without taking valuable screen real estate.  Reporting - introduced in v2.2.7 - has been enhanced and streamlined.  Contact edit screens now show how many records exist under each tab and context-sensitive menus provide access to useful actions from search results.  And event templates make the creation of similar event types much easier.

There was a presentation of CiviCase which could be used by groups that have clear and well-defined case management workflow.  This feature may not be widely applicable, but in some situations it could potentially provide powerful support.

There were several developer sessions and I picked up a few useful tricks for customizing CiviCRM, some highlights of which I share below.

To customize a template, first view the source and search for ".tpl".  Copy that file to e.g., themes/civicrm_custom/CRM/... where the "..." is the same path and name of the template, e.g.:

cp ~/workspace/civicrm/v3.0/templates/CRM/Contact/Page/View/UserDashBoard.tpl \
themes/civicrm_custom/CRM/Contact/Page/View/UserDashBoard.tpl

This file overrides the existing file; variables are passed in with $this->assign('showGroup', true) from ~/workspace/civicrm/3.0/CRM/Contact/Page/View/UserDashBoard.php.

If you want to update a template for a single group, you can use the group id as a sub-directory, e.g., to update the template for http://example.com/civicrm/profile/create?reset=1&gid=1, first create the directory themes/civicrm_custom/CRM/Profile/Form/1 and then copy the relevant files there, e.g.:

cp ~/workspace/civicrm/v3.0/templates/CRM/Profile/Form/Edit.tpl \
  themes/civicrm_custom/CRM/Profile/Form/1
cp ~/workspace/civicrm/v3.0/templates/CRM/Profile/Form/Dynamic.tpl \
themes/civicrm_custom/CRM/Profile/Form/1

To customize PHP code, you could use the same method as for templates, but it's better to use the available  CiviCRM hooks in a Drupal module.  And while on the subject of Drupal integration, be sure to check out the enhanced views2 integration.

For debugging templates and more, turn on CiviCRM debugging and add &smartyDebug=1 to any URL.  There's a useful bookmarlet available at http://www.rayogram.com/smartyDebug (note: Rayogram was also our NYC workshop host).  Just be sure to never turn CiviCRM debugging on a production site as it exposes the database connection strings and more.

Overall, the training provided a great overview of many new and existing CiviCRM features.  Perhaps the best part was getting to meet and interact with some of the core team.  CiviCRM is an excellent tool and is only gettng better with time.  I look forward to creating my first CiviCRM v3.0 site.