How can I modify a menu based on page tags in the Refresh Theme?

Topic summary

Goal: switch the header navigation menu in the Shopify Refresh theme based on conditions (e.g., page tags).

Issue: attempts to force a different menu by assigning section.settings.menu (e.g., {% assign section.settings.menu = ‘wsmenu’ %}) always rendered the main menu. Reason: section.settings.* values are controlled by the theme’s backend and are not reliably overridden in Liquid.

Key clarification: do not customize section.settings.xxx in code. Treat settings as read-only in Liquid and use local variables instead.

Solution: initialize a local variable to the configured menu, then conditionally reassign it to another menu object.

  • Example approach: assign menu_item = section.settings.menu, then, within if/else logic (e.g., based on page tags), set menu_item = linklists.wsmenu, and render menu_item.links in the nav.

Technical notes:

  • linklists refers to Shopify navigation menus (the list of links).
  • The header renders menus via section.settings.menu.links and respects menu_type_desktop (e.g., ‘dropdown’).

Outcome: the user identified the correct approach using a local variable and conditional reassignment. Resolution reached; specific tag-based conditions were implied but not detailed.

Summarized with AI on February 1. AI used: gpt-5.

I am trying to change a menu based on page tags on the Refresh Theme.

I am working in the Header.liquid and after trying three different ways I figured I am stuck so I will pose the question here.

Site: https://goldmedalwine.myshopify.com/

Password:3m3rt%3

Here is code change trying to just force all to one menu before I rewrap it in a if{% assign menu = ‘wsmenu’ %}
{% assign section.settings.menu= ‘wsmenu’%}
Menu: {{ section.settings.menu }}
{% assign menu_handle = ‘wsmenu’ %}

This is just above the Nav div and I have tried it below and when it displays it is always the main menu

Here is the code from the header at line 395
{%- if section.settings.menu != blank -%}
{%- if section.settings.menu_type_desktop == ‘dropdown’ -%}

    {%- for link in section.settings.menu.links -%}
  • {%- if link.links != blank -%}

    So all in all any help or directions would be awesome

You’re doing the wrong thing by customising section.settings.xxx!

Because the content of section.settings.xxx is defined primarily through the backend, not by you assigning values to it in code!

Thank you for your most supportive and informative missive.

Again thank you.

It was your snide message that allowed me to see the issue.

I needed to set the menu item to the proper section

assign menu_item = section.settings.menu
Then my if then , then assign the linked list.
assign menu_item = linklists.wsmenu
Thank the creator for docuentation