Customizing ¡CiviCRM ¡ Lisa ¡Rau/Ashma ¡Shrestha ¡ Stuart ¡Gaston ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 1 ¡
Outline ¡ • Who ¡Are ¡WE? ¡ • Why ¡CiviCRM? ¡ • Why ¡does ¡it ¡need ¡CustomizaJon? ¡ • Tools ¡and ¡Techniques ¡ • Pros ¡and ¡Cons ¡ ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 2 ¡
Who ¡are ¡we? ¡ • Lisa ¡Rau ¡ – CEO ¡and ¡Co-‑Founder ¡of ¡Confluence ¡focusing ¡on ¡Non-‑ Profit ¡since ¡2001 ¡ – 425 ¡Non-‑Profit ¡clients ¡and ¡counJng ¡ – Specialize ¡in ¡open ¡source ¡– ¡Civi, ¡Joomla ¡and ¡Drupal ¡ • Ashma ¡Shrestha ¡ – Senior ¡Web ¡Developer ¡ – Specialized ¡in ¡Joomla/Wordpress/ ¡Drupal ¡ – Has ¡been ¡working ¡with ¡CiviCRM ¡since ¡2011 ¡ • Stuart ¡Gaston ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 3 ¡
Why ¡CiviCRM? ¡ • Tools ¡for ¡Non-‑Profits ¡ – ConsJtuent ¡management ¡ – Membership ¡Management ¡ – DonaJons ¡ ¡ – Advocacy ¡ – Events ¡Management ¡ • AcJve ¡community ¡with ¡20,340+ ¡Members ¡(and ¡ growing) ¡ • Excellent ¡integraJon ¡with ¡Drupal ¡and ¡Joomla ¡ • Low ¡total ¡Cost ¡of ¡Ownership ¡ ¡ – While ¡free; ¡sJll ¡requires ¡implementaJon ¡ ¡ ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 4 ¡
Why ¡Does ¡it ¡Need ¡CustomizaJon? ¡ • Every ¡OrganizaJon ¡works ¡differently: ¡ ¡ ¡ ¡ ¡ ¡ – CiviCRM ¡covers ¡the ¡basic ¡needs ¡of ¡non-‑profits, ¡every ¡ organizaJon ¡has ¡it ¡own ¡unique ¡set ¡of ¡requirements ¡ • CiviCRM ¡provides ¡tools ¡for ¡tailoring ¡the ¡needs ¡of ¡ organizaJons ¡using ¡a ¡variety ¡of ¡methods ¡ • We ¡will ¡be ¡focusing ¡on: ¡ – Custom ¡Data ¡and ¡Profile ¡ – Templates ¡and ¡PHP ¡files ¡override ¡ – Custom ¡modules ¡or ¡hooks ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 5 ¡
Three ¡Methods ¡ • Custom ¡data ¡ • Overriding ¡templates ¡and ¡PHP ¡files ¡ • CreaJng ¡custom ¡modules ¡ ¡ – Using ¡hooks ¡ ¡ – CreaJng ¡custom ¡CiviCRM ¡modules ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 6 ¡
Problems ¡ • Each ¡technique ¡has ¡pros ¡and ¡cons ¡ ¡ • Choice ¡of ¡technique ¡depends ¡on ¡the ¡parJcular ¡ requirements ¡ • Keep ¡in ¡mind ¡ – When ¡requirements ¡change ¡ ¡ – Appropriateness ¡of ¡technique ¡used ¡changes ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 7 ¡
Method ¡1: ¡Custom ¡Data ¡ • Easiest ¡and ¡simplest ¡way ¡of ¡extending ¡CiviCRM ¡ • Standard ¡set ¡of ¡fields ¡for ¡storing, ¡searching ¡and ¡ extending ¡CiviCRM ¡elements. ¡Example: ¡ – Event ¡RegistraJon ¡InformaJon ¡ ¡ • ParJcipant ¡Custom ¡Data ¡type ¡ • Profiles ¡to ¡add ¡it ¡to ¡the ¡form ¡ – Credit ¡Union ¡InformaJon ¡ • Asset ¡Size ¡ • Credit ¡Union ¡Charter ¡number ¡ • Can ¡the ¡issue ¡be ¡resolved ¡by ¡Custom ¡Data? ¡ ¡ ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 8 ¡
Custom ¡Data ¡Example ¡– ¡RegistraJon ¡ Data ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 9 ¡
Custom ¡Data ¡– ¡ParJcipants ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 10 ¡
Custom ¡Data ¡– ¡Credit ¡Union ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 11 ¡
Custom ¡Data ¡-‑ ¡Pros ¡ • Build ¡in ¡Core ¡ • Provides ¡flexibility ¡extend: ¡ – Contact, ¡Events, ¡acJviJes, ¡ContribuJon, ¡ Membership, ¡RelaJonship, ¡ParJcipants ¡ • Advanced ¡Search ¡ • Can ¡be ¡accessed ¡via ¡Profiles, ¡Webform, ¡Views ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 12 ¡
Custom ¡Data ¡-‑ ¡Cons ¡ • Custom ¡Data ¡variable ¡needs ¡to ¡be ¡manually ¡ entered ¡into ¡Drupal ¡“semngs.php” ¡file ¡ • Not ¡all ¡the ¡custom ¡data ¡are ¡accessible ¡via ¡ Views ¡and ¡Webforms ¡ • Adds ¡tables ¡in ¡the ¡database ¡for ¡each ¡custom ¡ data ¡group ¡and ¡columns ¡for ¡the ¡field ¡ – Overhead ¡-‑ ¡DeleJng ¡Custom ¡data ¡will ¡not ¡ delete ¡the ¡tables ¡ ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 13 ¡
Method ¡2 ¡-‑ ¡Template ¡override ¡ • Overriding ¡smarty ¡templates ¡to ¡change ¡layout ¡ and ¡modify ¡presentaJon ¡ • TPL ¡files ¡ • Overridden ¡templates ¡are ¡stored ¡in ¡separate ¡ folder ¡ • Changing ¡layouts ¡of ¡Pages ¡and ¡Forms ¡ • Leveraging ¡API ¡to ¡add ¡more ¡features ¡and ¡data ¡ • Leveraging ¡jQuery ¡for ¡enhancement ¡ • Example ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 14 ¡ • Restrict ¡registrants ¡to ¡register ¡associated ¡individuals ¡to ¡the ¡
Template ¡Override ¡-‑ ¡RegistraJon ¡ { PATH_TO_CIVICRM_CUSTOM_TPL}/CRM/Event/Form/SelectEmployee.tpl ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 15 ¡
Template ¡Override-‑ ¡ConJnued ¡ {PATH_TO_CIVICRM_CUSTOM_TPL}/CRM/Event/Page/EventInfo.tpl ¡ ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 16 ¡
Template ¡Override ¡-‑ ¡Pros ¡ • Profile ¡ID ¡specific ¡form ¡edit ¡ – Example: ¡ ¡Edits ¡to ¡the ¡form ¡with ¡profile ¡id ¡52 ¡can ¡ be ¡done ¡by ¡creaJng ¡a ¡subfolder ¡with ¡ID ¡/ custom_template/CRM/Profile/Form/52/Edit.tpl ¡ • Quick ¡way ¡of ¡adding ¡funcJonality ¡and ¡design ¡ changes ¡to ¡the ¡forms ¡and ¡pages ¡ • Leverage ¡API ¡for ¡extending ¡funcJonality ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 17 ¡
Template ¡Override ¡-‑ ¡Cons ¡ • The ¡core ¡templates ¡might ¡get ¡modified ¡during ¡ the ¡upgrades ¡ – Might ¡break ¡the ¡overridden ¡template ¡ • Causes ¡problems ¡during ¡upgrade ¡if ¡proper ¡ procedures ¡are ¡not ¡followed ¡ • Use ¡hooks ¡for ¡complex ¡modificaJons ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 18 ¡
Method ¡3 ¡-‑ ¡Custom ¡modules ¡ (Hooks) ¡ • Hooks ¡ – Technique ¡used ¡in ¡ programming ¡for ¡altering/ enhancing ¡behavior ¡ ¡ – Extends ¡CiviCRM ¡funcJonality ¡ – 39 ¡hooks ¡available ¡ ¡ – Example: ¡ • Build ¡Price ¡hook: ¡Modify ¡the ¡ price ¡set ¡for ¡Events ¡depending ¡ on ¡the ¡OrganizaJon ¡Asset ¡size ¡ • Token ¡hook ¡-‑ ¡Add ¡extra ¡Custom ¡ mail ¡merge ¡token ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 19 ¡
Hook: ¡Asset ¡Size ¡Discount ¡ • Custom ¡Data ¡ – Event ¡Custom ¡Data ¡– ¡Asset ¡Size ¡Discount ¡ (custom_170) ¡ – OrganizaJon ¡Custom ¡Data ¡-‑ ¡Credit ¡Union ¡Asset ¡ Size ¡ ¡(custom_62) ¡ • API ¡Used ¡ – UFMatch ¡– ¡Get ¡Employer ¡InformaJon ¡ – Event ¡– ¡Check ¡if ¡Asset ¡Size ¡Discount ¡is ¡applicable ¡ – Contact ¡– ¡Get ¡OrganizaJon ¡Asset ¡InformaJon ¡ • civicrm_asset_discount_civicrm_buildAmount( ¡$pag eType, ¡&$form, ¡&$amount ¡) ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 20 ¡
Hook-‑ ¡Asset ¡Size ¡Discount ¡ • CiviCRM_Asset_Discount ¡Module ¡ 3/25/12 ¡ www.ConfluenceCorp.com ¡ ¡| ¡ ¡@ConfluenceCorp ¡ 21 ¡
Recommend
More recommend