Unlock Your Horizon Theme's Potential: Create a Dynamic Tabbed Menu with Email Signup
Hey everyone! As a Shopify expert who spends a lot of time digging into what real store owners are talking about, I often see common challenges and brilliant solutions bubbling up in the community. Recently, a thread started by EddieJune caught my eye – they were wrestling with the Horizon theme’s menu, wanting to transform its static hamburger drawer into something much more dynamic, akin to the Aime Leon Dore (ALD) style: think "Shop" and "Explore" tabs, an email signup, and neatly organized footer links, all without the drawer constantly closing.
This isn't just a cosmetic tweak; it's about enhancing user experience and making your navigation truly work for your brand. And the good news? The community rallied with some fantastic, actionable advice! Moeed, Priyasha, gotinker, and Ploqo really zeroed in on the core challenge, cutting through some of the less helpful suggestions (like generic AI answers or app pitches).
The consensus? Yes, it's absolutely doable, but it steps into custom code territory. Don't worry, it's not as scary as it sounds, especially with the clear guidance shared. The key insight, as many pointed out, is that you want the panels inside the drawer to switch visibility, not the entire drawer to close and reopen. This keeps the experience smooth and seamless for your customers.
Here's what that dynamic, tabbed menu looks like, with the 'Shop' tab open in the drawer:
And here's the 'Explore' tab, switching seamlessly without closing the drawer:
Let's break down how you can achieve this polished, tabbed menu for your Horizon theme, drawing directly from the community's best practices.
Before You Begin: The Golden Rule
Before you even think about touching a single line of code, always, always, duplicate your theme! This is non-negotiable. Go to your Shopify Admin -> Online Store -> Themes. Find your Horizon theme, click the "..." button, and select "Duplicate." Work on this unpublished copy. This way, if anything goes awry, your live store remains unaffected. Seriously, this step will save you headaches!The Community-Approved Approach: Custom Liquid Section
While some discussions delved into specific file paths likesections/header.liquid or snippets/header-drawer.liquid (thanks, gotinker, for that deep dive!), the most straightforward and robust solution shared by Ploqo involves adding a single "Custom Liquid" section. This method is great because it keeps your custom code somewhat isolated, making it easier to manage and less likely to be overwritten by theme updates (though still, always test on a duplicate!).
Here’s how to do it, step-by-step:
Step 1: Create Your Navigation Menus
First, you'll need to set up the structure for your new menu tabs in your Shopify admin.- Go to your Shopify Admin.
- Navigate to Online Store > Navigation.
- Create two new menus: one for your "Shop" tab (e.g., "Shop Menu") and one for your "Explore" tab (e.g., "Explore Menu"). Add all the links you want to appear under each of these tabs.
- While you're there, confirm or create a menu for your footer links (e.g., "Footer Menu") if you don't have one already. This will house links like Privacy Policy, Terms, Accessibility, etc.
This is super important because it means you can manage all your menu links directly from your admin, without touching any code again later. A huge win for ongoing store management!
Step 2: Add the Custom Liquid Section to Your Theme
Now for the code injection! This is where Ploqo's detailed steps really shine.- From your Shopify Admin, go to Online Store > Themes.
- On your duplicated theme, click Customize.
- In the theme editor, scroll down the left panel to the Footer group.
- Click Add section, then choose Custom Liquid. Adding it here ensures the code loads on every page, making your drawer functional across your entire site.
- Paste the provided code into the Custom Liquid section.
Before saving, make sure to adjust the shop_handle, explore_handle, and footer_handle variables at the top of the code to match the actual handles of the menus you created in Step 1. For example, if you named your menu "Shop Menu," its handle would be shop-menu.
{%- assign shop_handle = 'shop-menu' -%}
{%- assign explore_handle = 'explore-menu' -%}
{%- assign footer_handle = 'footer' -%}
{%- assign shop_label = 'Shop' -%}
{%- assign explore_label = 'Explore' -%}
{%- assign signup_title = 'Sign up for our newsletter' -%}
{%- assign signup_button = 'Join' -%}
{%- assign shop_list = linklists[shop_handle] -%}
{%- assign explore_list = linklists[explore_handle] -%}
{%- assign footer_list = linklists[footer_handle] -%}
{%- for link in shop_list.links -%}- {{ link.title | escape }}
{%- endfor -%}
{%- for link in explore_list.links -%}- {{ link.title | escape }}
{%- endfor -%}
{{ signup_title }}
{%- form 'customer' -%}
{%- if form.posted_successfully? -%}Thanks for subscribing.
{%- endif -%}
{%- endform -%}
{%- if footer_list.links.size > 0 -%}
{%- for link in footer_list.links -%}- {{ link.title | escape }}
{%- endfor -%}
{%- endif -%}
Understanding the Code and What Happens Next
The code snippet Ploqo provided is quite clever. It contains:- Liquid Logic: This pulls in your newly created "Shop," "Explore," and "Footer" menus dynamically.
- HTML Structure: It sets up the two tabs ("Shop" and "Explore") and their corresponding content panels, along with the email signup form and footer links. This entire structure is initially hidden.
- CSS Styling: This ensures your new tabs and panels look good and behave correctly within the Horizon theme's menu drawer, making them switch seamlessly.
- JavaScript: This is the magic that listens for clicks on your "Shop" or "Explore" tabs and toggles the visibility of the corresponding content panel, all without closing the main menu drawer. It also cleverly hides the Horizon theme's default menu list (
.ald-native-hidden) to make way for your custom layout.



