Extensions
Extensions let you change any part of Magento, which is powerful but dangerous.
Guidelines
- Buy vs. build — If you can buy an extension or write a little code, then write the code (as an in-house extension). It’s cleaner and easier to maintain.
- More extensions, more problems — The extension marketplace is like candy. Too much makes you sick.
- Vetting — Invest a little time/money and be prepared to walk away.
- Always integrate — Extensions probably won’t gel out of the box. Always plan to integrate.
Vetting extensions
This is how GravDept evaluates Magento extensions:
Documentation
- Documentation is public (all of it) before buying.
- Documentation is encyclopedic and empathetic to all skill levels.
- Documentation that goes above and beyond is the highest indicator of quality.
Reputation
- The maker is not anonymous. The real people making the product are identifiable to the Magento community.
- The maker has no history of community abuse or piracy (this is real).
Negligible indicators
- Certification badges show competence, but not necessarily excellence.
- Partner badges show size and willingness to pay-to-play. Independent makers are no lesser.
- Refund guarantees cost nothing to offer. They’re worth as much.
- Testimonials are always full of rainbows and unicorns.
Dealbreakers
- Must pass code review (or you commit to refactoring).
- Must be maintained by maker (or you commit to maintainance).
Integrating extensions
Step 1 — Code review
Every extension should undergo a comprehensive code review evaluating the following areas:
- Code standards (industry + platform + internal)
- Performance (backend + frontend)
- Security
- Responsive design
- Content (SEO + localization)
- Accessibility
- Customization and extensibility
If you buy an extension and it fails code review, remember you can walk away. Finding a better fit can save money/time.
Step 2 — Enrollment
Extensions probably don’t align with your project’s standards, practices, and workflows. GravDept performs enrollment on every extension to make it fit the project better. Unfortunately, this usually means rewriting most of the frontend code.
Enrollment practices
- Refactor to code standards.
- Adapt CSS to Sass.
- Reduce CSS using the project’s design system.
- Modularize JS.
- Reduce JS using the project’s common libraries.
Benefits
- Learn the extension’s code deeply.
- Avoid short-term fault potential.
- Avoid long-term technical debt (code conforms to project).
- Faster customization.
Risks
- Slower initial implementation.
- More long-term technical debt (extension updates require effort).
It’s a double-edged sword, but enrollment is better for projects where most things are customized.
Step 3 — Customization
Customizations are easier to implement and maintain with a standardized codebase. Follow your normal development practices going forward.
GravDept extensions
Designed and developed by GravDept, so they’re excellent.
Acumen Theme
The best supported and most extensible Magento theme in the world — and a best seller too.
Trusted extensions
Extensions I’ve implemented and recommend.
Content
Aheadworks: Knowledge Base
Articles that are searchable with categories, tags, and ratings.
Ashley Schroder: Magento SMTP Pro
Full SMTP and Gmail/Google Apps email support for Magento.
ebizmarts: MageMonkey
Replace Magento’s newsletter with MailChimp integration.
Fontis: Campaign Monitor
Replace Magento’s newsletter with Campaign Monitor integration.
Kalen Jordan: MageMail
Triggered email for automated marketing.
Frontend
Meanbee: Magento SVG Helper
Inline SVG files in PHTML templates.
Payment
Paradox Labs: Authorize.net CIM with Recurring Payments
Store credit cards securely with Authorize.net.
Shipping
WebShopApps: MatrixRate
Apply shipping rates by destination (and other attributes).
Interesting extensions
Extensions I’ve evaluated, but not implemented yet.
Admin
Cyrill Schumacher: Magento Markdown
Write CMS content in Markdown in the Magento admin.
Johann Reinke: Magento Highlighter
Syntax highlighting for HTML in the Magento admin.
Frontend
Catalin Ciobanu: Improved Magento Layered Navigation
AJAX filters and multi-select filters from the same attribute.
Tom Robertshaw: Magento Footer JS
Move Magento’s inline JS to the footer.
Integration
FFM Engineering: Localise API
Integration with Loco for translation syncing.
Painful extensions
Extensions I’ve implemented, but were not ideal at the code level. I chose to use them over building from scratch, but they didn’t fit the project’s code standards well.
Fear is the path to the dark side. Fear leads to anger. Anger leads to hate. Hate leads to suffering. Yoda, wise swamp frog
Checkout
MageWorld: One Step Checkout Pro
Removes step-driven UI with BackboneJS to refresh sections.
- HTML: unreadable indentation.
- HTML: elements nested invalidly.
- CSS: disorganized selector order.
- CSS: errors from unclosed selectors.
- CSS: uses outdated hacks.
- JS: too many libraries (jQuery, jQuery UI, Backbone, Underscore, and more).
- Performance: JavaScript (750 KB) — refactored to 114 KB.
- Performance: CSS (77 KB) — refactored to 2 KB.
- Performance: HTTP requests (13) — refactored to 1.
- Cache: config cannot be cleared. You must manually delete this file:
/media/mw_onestepcheckout/{domain}-onestep-config-default.js
Content
Unicode Systems: Product Attachments
Add media files (PDF, image, video, etc) to product pages.
- HTML: hidden in PHP class.
- CSS: inlined in HTML.
Blacklisted extensions
Extensions you should avoid like the plague.
You are banished forthwith from the kingdom of Rohan, and all its domains, under pain of death. Gríma Wormtongue, Assistant to the Regional Manager of Rohan
I don’t use extensions often enough to get burned by the really bad ones. They don’t pass vetting usually, and never get to code reviews. If one does, I’ll update the blacklist.