etechflow / module-account-links-manager
etechflow/module-account-links-manager
Hide unwanted links from the customer My Account sidebar without editing any templates or layout XML. Multi-select admin config, Hyvä + Magento Open Source + Adobe Commerce compatible.
ETechFlow_AccountLinksManager
Hide unwanted links from the customer My Account sidebar in Magento without editing templates or layout XML. Pure admin config, zero frontend assets, Hyvä-safe by design.
Commercial eTechFlow module. Per-domain HMAC license or eTechFlow bundle key activates the module on your production host. Dev / staging / *.magento.cloud / localhost etc. auto-detect and bypass licensing.
What it does
Two modes:
| Mode | Behaviour |
|---|---|
| Hide selected links | Every link picked is hidden from the customer sidebar; the rest stays visible. |
| Show only selected links | Only the picked links remain; everything else is hidden. |
Standard Magento + Adobe Commerce link names are in the multi-select. For third-party extension links, use the Extra block names textarea — list any layout block name and the module manages it.
Features
| Hide individual customer dashboard links | ✓ |
| Inverse mode (show only the picked ones) | ✓ |
| Configure entirely from admin — zero coding | ✓ |
| Works on Magento Open Source + Adobe Commerce + Hyvä | ✓ |
| Per-store-view configuration | ✓ |
| Custom-extension links via the textarea | ✓ |
| Per-domain HMAC licensing + bundle key support | ✓ |
Tideways span instrumentation (ETechFlow_ALM_FilterNav) |
✓ |
Verify CLI (etechflow:alm:verify) |
✓ |
| No DB tables, no frontend JS, no CSS | ✓ |
Compatibility
| Platform | Status |
|---|---|
| Magento Open Source 2.4.4 – 2.4.8 | ✓ |
| Adobe Commerce 2.4.4 – 2.4.8 | ✓ (includes Reward Points, Gift Card, RMA, Store Credit, Recurring Payments, Invitations) |
| Hyvä-themed storefronts | ✓ (Hyvä keeps the same Html\Links block class) |
| PHP 8.1 / 8.2 / 8.3 / 8.4 | ✓ |
Installation
# Option A — Composer
composer require etechflow/module-account-links-manager:^1.0
bin/magento module:enable ETechFlow_AccountLinksManager
bin/magento setup:upgrade
bin/magento setup:di:compile # production mode only
bin/magento cache:flush
# Option B — Manual drop-in
cp -r ETechFlow/AccountLinksManager app/code/ETechFlow/AccountLinksManager
bin/magento module:enable ETechFlow_AccountLinksManager
bin/magento setup:upgrade
bin/magento setup:di:compile # production mode only
bin/magento cache:flush
No database tables are created — settings live in core_config_data.
Configuration
Admin → Stores → Configuration → eTechFlow → Customer Dashboard Links Manager
| Field | Description |
|---|---|
| License → Production Environment | Yes for live sites, No for dev/staging on non-standard domains. |
| License → License Key | Paste your per-domain key (or bundle key under any eTechFlow module). |
| General → Enable Module | Master switch — turns the filtering on/off without uninstalling. |
| General → Action | Hide selected / Show only selected. |
| General → Links | Multi-select of standard Magento + Adobe Commerce links. |
| General → Extra block names | Newline-separated block names for third-party extension links. |
Per-store-view configuration is supported.
Smoke test
bin/magento etechflow:alm:verify
Should print ✅ ALL CHECKS PASSED. v1.0.0 verified.
How it works
The module registers a plugin on Magento\Framework\View\Element\Html\Links::beforeToHtml() (frontend-scoped DI). When the customer-account navigation block is about to render:
- Check the module is enabled + licensed.
- Read the configured action mode + managed block-name list.
- For each child link block, decide if it should be removed (based on mode).
- Remove via
Layout::unsetChild()— the same mechanism<referenceBlock remove="true"/>uses in layout XML.
Result: the link never renders. No HTML rewriting, no CSS hiding.
Why Hyvä-safe
Hyvä replaces storefront templates and JS but keeps the PHP block classes. The customer-account navigation is still rendered by a class extending Magento\Framework\View\Element\Html\Links. Our plugin hooks the parent class and guards by getNameInLayout() === 'customer_account_navigation' — works on every theme, doesn't touch footer or other Links blocks.
The module ships zero frontend assets: no JS, no CSS, no .phtml overrides. Nothing for Hyvä to clash with.
Uninstall
bin/magento module:disable ETechFlow_AccountLinksManager
bin/magento cache:flush
# Composer:
composer remove etechflow/module-account-links-manager
# Manual:
rm -rf app/code/ETechFlow/AccountLinksManager
bin/magento setup:upgrade
bin/magento cache:flush
Optional cleanup of leftover config entries:
DELETE FROM core_config_data WHERE path LIKE 'etechflow_accountlinks/%';
License
Proprietary — see LICENSE.txt. Commercial licenses available at https://etechflow.com.
Changelog — ETechFlow Account Links Manager
All notable changes to this module. Adheres to Semantic Versioning.
[1.1.0] — 2026-05-29
Security & Licensing
- Fixed critical bypass bug:
isLocallyIssuedKey()previously recreated the 48-hour grace cache on everycache:flush, allowing the local fast-path to bypass IP validation indefinitely. The grace period is now tracked via anissued_atconfig timestamp written once byCallback.phpat purchase time — no longer resettable by a cache flush. - Added
isExplicitlyRevoked(): Arevoked = 1config flag (set byRevoke.php) now short-circuits all other checks including dev-mode bypass, ensuring suspended licenses are immediately deactivated. - Added
BlockSaveWithoutLicenseplugin: HooksMagento\\Config\\Model\\Config::save()to block savingetechflow_accountlinksconfig without a valid license, preventing settings from being applied without activation.
Admin UX
- License Gate page: Full dark-navy admin UI at
Stores → Settings → Account Links Managershowing plan cards, subscription status, and in-Magento Stripe Checkout flow (no external portal redirect required). - In-Magento Stripe payment:
CreateSessioncontroller builds a Stripe Checkout session server-side;Callback(frontend) receives the session and activates the SP-XXXX key. - Success page: Post-purchase success screen shows the activated key with copy button.
- Fixed form_key injection: Admin AJAX for Stripe session now uses server-side rendered form key instead of
window.FORM_KEYfallback.
Navigation Enforcement
- NavigationPlugin license check:
beforeToHtmlnow returns early ifLicenseValidator::isValid()is false — the module is fully dormant when unlicensed.
[1.0.0] — 2026-05-19
Initial commercial release
Hide unwanted links from the customer My Account sidebar without editing templates or layout XML. Two modes:
- Hide selected links — every link picked is hidden.
- Show only selected links — only the picked links remain.
Added
- Admin config:
Stores → Configuration → eTechFlow → Customer Dashboard Links Manager. Enable toggle, mode dropdown, multi-select of standard + Adobe Commerce link names, plus an "Extra block names" textarea for third-party extension links. - Per-installation HMAC license with bundle-key support. Same pattern as every other eTechFlow module.
- Profiler instrumentation — wraps the navigation filter in an
ETechFlow_ALM_FilterNavTideways span. - Verify CLI —
bin/magento etechflow:alm:verify. - Hyvä-safe — hooks the parent
Magento\Framework\View\Element\Html\Linksclass so Hyvä's re-skinned navigation works without changes. - Frontend-only DI registration —
etc/frontend/di.xmlso the plugin only runs where it matters.
Compatibility
- Magento Open Source 2.4.4 – 2.4.8
- Adobe Commerce 2.4.4 – 2.4.8 (includes link names for Reward Points, Gift Card, Gift Registries, RMA, Store Credit, Recurring Payments, Invitations)
- PHP 8.1 / 8.2 / 8.3 / 8.4
- All Hyvä child themes
Requires 6
| Package | Constraint |
|---|---|
| magento/framework | ^103.0||^104.0 |
| magento/module-backend | ^102.0||^103.0 |
| magento/module-config | ^101.2||^102.0 |
| magento/module-customer | ^103.0||^104.0 |
| magento/module-store | ^101.1||^102.0 |
| php | ~8.1.0||~8.2.0||~8.3.0||~8.4.0 |
Suggests 1
| Package | Reason |
|---|---|
| etechflow/module-next-day-eligibility | Part of the eTechFlow module bundle — one bundle key activates every eTechFlow module. |
No QA results yet
QA pipelines haven't run for this version. Compatibility and quality results appear here once the vendor publishes a tagged release that gets ingested.
More from etechflow
View vendorDynamic 'View Other Options/Finishes/Sizes' PDP buttons driven by per-product link attributes; replaces hardcoded in-description buttons and strips the old ones at render time.
Theme-agnostic mega menu for Magento 2. Renders on Hyvä, Luma, Adobe Commerce default and custom themes via automatic runtime detection. Provides a JSON endpoint for lazy-loaded subcategory + featured-product data.
EtechFlow Store Locator — admin-managed store/branch finder for Magento 2 with a Leaflet + OpenStreetMap map and postcode proximity search (postcodes.io). Hyva and Luma compatible. No paid map API key required.
Universal Product Fitment Finder for Magento 2 — Make/Model/Year/Part filtering on any fitment domain (automotive, motorcycle, marine, RV, phone cases, watches, appliance parts, anywhere a customer asks "will this fit my X?"). Admin-configurable labels + URL prefix so the same module rebrands to any merchant domain. Includes PDP fitment badge, SEO URLs, customer garage with cross-device sync, OEM/part-number search, and admin tooltips throughout. Theme-agnostic — Hyvä, Luma, custom themes. Renamed from "module-vehicle-compat" in v2.0.0.
Turn an existing module into recurring revenue.
If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.