Skip to content
Snippets Groups Projects
Commit 525300f5 authored by Sean Madsen's avatar Sean Madsen
Browse files
parent 806c3a7a
No related branches found
No related tags found
No related merge requests found
# 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?
......@@ -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
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment