diff --git a/docs/extensions/customization-strategies.md b/docs/extensions/customization-strategies.md new file mode 100644 index 0000000000000000000000000000000000000000..662310f3e8ae2f06049edfb2bfc199d4c48094d1 --- /dev/null +++ b/docs/extensions/customization-strategies.md @@ -0,0 +1,39 @@ +# Customization Strategies + +Building a CiviCRM extension is the *recommended* way to customize CiviCRM, but others strategies exist too. This page summarizes some of the advantages and disadvantages of each strategy. + +| Capability | CiviCRM Extension | CiviCRM Custom PHP/Tpl Dir | Drupal Content (Smarty) | Drupal Module | Joomla Plugin (Civi v3.3+) | WordPress Plugin (Civi v4.6+) | +| --- | --- | --- | --- | --- | --- | --- | +| **Pre-Install** | Configure path; (For devs: install civix) | Configure path | Configure new format | None | None | None | +| **Compatibility** | All CMSs | All CMSs | Drupal-only | Drupal-only | Joomla-only | WordPress-only | +| **Distributability** | Good | Yes (Extra Steps) | Yes (Extra Steps) | Good | Good | Good | +| **Packaging** | Yes | No | No | Yes | Yes | Yes | +| **CiviCRM API** | Yes | Yes | Yes | Yes | Yes | Yes | +| **CiviCRM Hooks** | Yes | No | No | Yes | Yes | Yes | +| **CMS Hooks** | No | No | No | Yes | Yes | Yes | +| **CodeGen** | Yes | Â No | Â No | Â No | Â No | Â No | +| **Reports** | Yes | Yes (Extra Steps) | No | Yes (Extra Steps) | Yes (Extra Steps) | Yes (Extra Steps) | +| **Payment Processors** | Yes | Yes (Extra Steps) | No | Yes (Extra Steps) | Yes (Extra Steps) | Yes (Extra Steps) | +| **Searches** | Yes | Yes (Extra Steps) | No | Yes (Extra Steps) | Yes (Extra Steps) | Yes (Extra Steps) | +| **SQL Tables** | Yes (Extra Steps) | No | No | Yes | ? | ? | +| **Web Page** | Yes | No | Yes | Yes | Â Yes | Yes | +| **Web Form** | Yes | No | No | Yes | Yes | Yes | +| **Extend API** | Yes | Yes | No | Yes (Extra Steps) | Yes (Extra Steps) | Yes (Extra Steps) | + +Key: + +* **Pre-Install** - Are there any major steps one should take before using this type of add-on? +* **Compatibility** - Are there major constraints on which CiviCRM installations can use this? +* **Distributability** - How easy is it to share, mix, and match add-ons among different sites? +* **Packaging** - Does this require extra packaging steps (eg write info file, build tarball)? +* **CiviCRM API** - Can one CRUD entities with the API? +* **CiviCRM Hooks** - Can one respond to processing events in Civi? +* **CMS Hooks** - Can one respond to processing events in the CMS? +* **CodeGen** - Can one use the civix code generator? +* **Reports** - Can one package a new report? +* **Payment Processors** - Can one package a new payment processor? +* **Searches** - Can one package custom search screens? +* **SQL Tables** - Can one add/drop/migrate custom SQL tables? +* **Web Page** - Can one define new URLs with basic pages? +* **Web Form** - Can one define new URLS with forms? +* **Extend API** - Can one add entities or actions to the CiviCRM API? diff --git a/mkdocs.yml b/mkdocs.yml index 01c41e2681979e4bef80ec4e5431d97fb4d215a4..fee72eeac3144fafc89234f72c5529b653234b5d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -32,6 +32,7 @@ pages: # Verifying a Bug Fix: /core/verifying.md - Extensions Development: - Basics: extensions/index.md + - Customization Strategies: extensions/customization-strategies.md - civix: extensions/civix.md - Extension Structure: extensions/structure.md - info.xml file: extensions/info-xml.md diff --git a/redirects/wiki-crmdoc.txt b/redirects/wiki-crmdoc.txt index 41a4d444668afe4847ff0147dcf169ff92800e68..fb7133ebb726a85d8b2e536aadf5c26f40909833 100644 --- a/redirects/wiki-crmdoc.txt +++ b/redirects/wiki-crmdoc.txt @@ -148,3 +148,4 @@ Settings+Reference framework/setting Region+Reference framework/region HTML+Header+Region framework/region#header Chaining api/chaining +Add-on+Formats extensions/customization-strategies