AEM - Adobe Experience Manager
Master Adobe Experience Manager with practical guides on implementation patterns, real-world problem solving, and best practices.
Inherited Page Properties and Site-Wide Feature Toggles
How Sling's HierarchyNodeInheritanceValueMap lets a page property cascade down from a site root unless a descendant page overrides it, why "not set" and "set to false" produce the same visible result, and why that makes changing a toggle's default a much bigger change than it looks.
Policy-Driven Field Visibility and Node-Level Dialog Subtree Reuse
Two dialog-authoring techniques beyond dropdown show/hide: tying a field's visibility to a component's design/policy properties with Granite Expression Language, and reusing a specific tab or field from an unrelated component's dialog via a node-level sling:resourceSuperType or a foundation/include — with full, working examples of each.
Sitemap Generation Edge Cases: Multi-Value Properties, Vanity URLs, and Template-Aware Alternates
Three real edge cases that break a custom Sling sitemap generator in ways code review rarely catches — an untyped multi-value property read that silently defeats a noindex check, alternate-language links that point at vanity paths instead of real content paths, and hreflang links added between pages that don't actually share a template family.
Experience Fragment Property Propagation: When a ResourceChangeListener Copies Instead of Inherits
A ResourceChangeListener that stamps theme and config properties onto a newly created Experience Fragment by copying them from the nearest matching site page — a write-once-at-creation pattern that looks like inheritance but is actually a snapshot, and silently diverges from its source the moment that source page changes.
Real-World Scenario — When a Content Fragment Beats a Page (and When It's Overkill)
Where Content Fragments are genuinely the right content model in real AEM projects, the recurring model-migration and publication-dependency problems that show up once fragments are in production, and honest criteria for when a plain page or component dialog is simpler.
Real-World Scenarios: Dead Hidden Fields After a Multifield Migration
A field an author fills in that visibly does nothing — tracing a dialog's hidden, dead flat fields back to a multifield migration that never cleaned up after itself, and a template-contract test that would have caught it.