CINXE.COM

Sustainable things to do in Manchester

<!doctype html> <html lang='en-us'> <head> <!-- meta --> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta charset="utf-8" /> <title>Sustainable things to do in Manchester</title> <link rel="canonical" href="https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/" /> <meta name="description" content="Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable." /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1" /> <meta name="sv-nav-properties" content="{&quot;title&quot;:&quot;Sustainable things to do&quot;,&quot;id&quot;:&quot;669f874d9e4dca392466b9d6&quot;,&quot;parents_ids&quot;:[&quot;6525e38b58d8a262bf5e7287&quot;],&quot;site_name&quot;:&quot;primary&quot;,&quot;section&quot;:&quot;main&quot;,&quot;folderHref&quot;:&quot;/things-to-see-and-do/sustainable-things-to-do/&quot;}" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="referrer" content="always" /> <meta property="og:title" content="Sustainable things to do in Manchester" /> <meta property="og:url" content="https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/" /> <meta property="og:description" content="Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable." /> <meta property="og:locale" content="en_us" /> <meta property="og:image" content="https://assets.simpleviewinc.com/simpleview/image/upload/c_limit,h_1200,q_75,w_1200/v1/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg" /> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="896" /> <meta property="og:type" content="website" /> <!-- head css bundles --> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/tripbuilder/virtuals/css/shared.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/widget_pagetitle.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/widget_embed.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/widget_call_to_action.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/widget_sponsor_logos.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/widget_footer_links.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/nav/virtuals/css/shared.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/nav/virtuals/css/widget_main_dropdown.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/nav/virtuals/css/widget_footer.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/search/virtuals/css/custom_headerbox.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/widget_template_custom_social_links.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/widget_site_links.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/nav/virtuals/css/widget_breadcrumb.css"/> <link rel="stylesheet" href="https://unpkg.com/@glidejs/glide@3.4.1/dist/css/glide.core.min.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/shared.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/slider_preview/shared_structure.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/slider_preview/shared_theme.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/slider_preview/variants/4_across_fullwidth.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_layoutjs.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_vue_airbnb_style_datepicker.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_pe_booking.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/list/shared_structure.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/list/shared_theme.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/widget_template_custom_navigation_list.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/side_by_side/shared_structure.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/side_by_side/shared_theme.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/side_by_side/variants/1_across.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/hero_image/shared_structure.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/hero_image/shared_theme.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/cards/shared_structure.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/ccl/cards/shared_theme.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/collections/virtuals/css/widget_template_custom_navigation_card.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_read_more.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_product_search.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_quickview.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="https://unpkg.com/plyr@^3/dist/plyr.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_lightbox.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/reboot.css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/variables.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/swatches.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/shared.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_header.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_header_hamburger.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/shared_print.css" media="print" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_footer.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_core_styles.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/custom_forms.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/css/widget_social_share.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="https://use.typekit.net/vrp2tco.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <!-- head js bundles --> <script src="https://unpkg.com/plyr@^3/dist/plyr.polyfilled.min.js"></script> <script src="https://player.vimeo.com/api/player.js"></script> <script src="/includes/public/managed/v_2c3233e6_9f02f395/core/libs/sv/requirejs/public/require.js" data-ot-ignore></script> <script src="/requirejs_config_2c3233e6_9f02f395.js" data-ot-ignore></script> <script src="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/js/shared_header.js" defer></script> <!-- bottomHead --> <script data-id="site_gtm"> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','gtmDataLayer','GTM-NLJPDSK'); </script> <script data-id="site_gtm"> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','gtmDataLayer','GTM-NFBVG93'); </script> <!-- Use this template to add items to the <head> --> <link rel="preconnect" href="https://assets.simpleviewinc.com"> <link rel="preconnect" href="https://use.fontawesome.com"> <link rel="preconnect" href="https://securepubads.g.doubleclick.net"> <link rel="preconnect" href="https://www.google-analytics.com"> <link rel="preconnect" href="https://ws.audioeye.com"> <link rel="preconnect" href="https://wsv3cdn.audioeye.com"> <link rel="preconnect" href="https://www.googletagmanager.com"> <link rel="preconnect" href="https://securepubads.g.doubleclick.net"> <link rel="preconnect" href="https://connect.facebook.net"> <link rel="preconnect" href="https://analytics.tiktok.com"> <link rel="preconnect" href="https://unpkg.com"> <link rel="preconnect" href="https://script.hotjar.com"> <link rel="preconnect" href="https://cmp.quantcast.com"> <link rel="preconnect" href="https://fonts.googleapis.com" /> <!-- Most common Font URLs. (Only uncomment the ones being used) <link rel="preconnect" href="https://fast.fonts.net/"> <link rel="preconnect" href="https://use.typekit.net/"> "> --> <style data-critical-styles> @import url("https://p.typekit.net/p.css?s=1&k=vrp2tco&ht=tk&f=139.140.169.173.175.176.143.144.147.148.156.157.161.162&a=531942&app=typekit&e=css"); .core-link-list { --color-title: var(--gray-700); --color-link: var(--primary-color-700); --text-size: var(--text-base); position: relative; margin: 0 auto; max-width: var(--width-base); padding: 0 var(--space-5); padding-top: var(--space-8) } .sv-col>.contentRender .core-link-list { padding-left: 0; padding-right: 0 } .core-link-list .link-list-title { color: var(--color-title); font-size: var(--text-size); font-weight: 700; margin-bottom: var(--space-3) } .core-link-list>ul { padding-left: var(--space-4) } .core-link-list .link-list-link { color: var(--color-link); font-size: var(--text-size) } html { font-family: sans-serif; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100% } body { margin: 0 } aside { display: block } a { background-color: transparent } h1 { font-size: 2em; margin: .67em 0 } img { border: 0 } html, body { height: 100% } *, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box } html, body { font-size: 100% } body { background: #fff; color: #222; padding: 0; margin: 0; font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; font-weight: 400; font-style: normal; line-height: 1.5; position: relative } img { max-width: 100%; height: auto } img { -ms-interpolation-mode: bicubic } img { display: inline-block; vertical-align: middle } div, ul, li, h1, h2, h3, p { margin: 0; padding: 0 } a { color: #282828; text-decoration: none; line-height: inherit } p { font-family: inherit; font-weight: 400; font-size: 1rem; line-height: 1.6; margin-bottom: 1.25rem; text-rendering: optimizeLegibility } h1, h2, h3 { font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif; font-weight: 400; font-style: normal; color: #222; text-rendering: optimizeLegibility; margin-top: .2rem; margin-bottom: .5rem; line-height: 1.4 } h1 { font-size: 2.125rem } h2 { font-size: 1.6875rem } h3 { font-size: 1.375rem } ul { font-size: 1rem; line-height: 1.6; margin-bottom: 1.25rem; list-style-position: outside; font-family: inherit } ul { margin-left: 1.1rem } :root { --font-body: "ObjektivMk1", sans-serif; --font-display: var(--font-body); --width-compact: calc(var(--width-comfortable) * (2/3)); --width-comfortable: 72ch; --width-double: calc(var(--width-comfortable) * 2); --width-base: 1244px; --width-smallscreen: 90%; --width-feature: 1440px; --width-fullscreen: 100vw; --space-px: 1px; --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-10: 40px; --space-12: 48px; --space-16: 64px; --space-20: 80px; --space-24: 96px; --space-32: 128px; --space-40: 160px; --space-48: 192px; --space-56: 224px; --space-64: 256px; --container-single: calc(var(--width-comfortable) + var(--space-10)); --container-double: calc(var(--width-double) + var(--space-24)); --text-xs: .75rem; --text-sm: .875rem; --text-base: 1rem; --text-lg: 1.125rem; --text-xl: 1.25rem; --text-2xl: 1.5rem; --text-3xl: 1.875rem; --text-4xl: 2.25rem; --text-5xl: 3rem; --text-6xl: 4rem; --tracking-tighter: -.05em; --tracking-tight: -.025em; --tracking-normal: 0em; --tracking-wide: .025em; --tracking-wider: .05em; --tracking-widest: .1em; --leading-none: 1; --leading-tight: 1.25; --leading-snug: 1.375; --leading-normal: 1.5; --leading-relaxed: 1.625; --leading-loose: 2; --black: #000; --white: #fff; --gray-hue: 215; --gray-100: hsl(var(--gray-hue), 45%, 98%); --gray-200: hsl(var(--gray-hue), 38%, 95%); --gray-300: hsl(var(--gray-hue), 32%, 91%); --gray-400: hsl(var(--gray-hue), 25%, 84%); --gray-500: hsl(var(--gray-hue), 20%, 69%); --gray-600: hsl(var(--gray-hue), 15%, 52%); --gray-700: hsl(var(--gray-hue), 17%, 35%); --gray-800: hsl(var(--gray-hue), 23%, 23%); --gray-900: hsl(var(--gray-hue), 26%, 14%); --primary-color-hue: 0; --primary-color-100: hsl(var(--primary-color-hue), 0%, 66%); --primary-color-200: hsl(var(--primary-color-hue), 0%, 58%); --primary-color-300: hsl(var(--primary-color-hue), 0%, 49%); --primary-color-400: hsl(var(--primary-color-hue), 0%, 41%); --primary-color-500: hsl(var(--primary-color-hue), 0%, 33%); --primary-color-600: hsl(var(--primary-color-hue), 0%, 24%); --primary-color-700: hsl(var(--primary-color-hue), 0%, 16%); --primary-color-800: hsl(var(--primary-color-hue), 0%, 14%); --primary-color-900: hsl(var(--primary-color-hue), 0%, 13%); --secondary-color-hue: 4; --secondary-color-100: hsl(var(--secondary-color-hue), 74%, 80%); --secondary-color-200: hsl(var(--secondary-color-hue), 74%, 76%); --secondary-color-300: hsl(var(--secondary-color-hue), 74%, 71%); --secondary-color-400: hsl(var(--secondary-color-hue), 74%, 66%); --secondary-color-500: hsl(var(--secondary-color-hue), 74%, 61%); --secondary-color-600: hsl(var(--secondary-color-hue), 74%, 56%); --secondary-color-700: hsl(var(--secondary-color-hue), 74%, 51%); --secondary-color-800: hsl(var(--secondary-color-hue), 74%, 46%); --secondary-color-900: hsl(var(--secondary-color-hue), 74%, 41%); --tertiary-color-hue: 49; --tertiary-color-100: hsl(var(--tertiary-color-hue), 100%, 80%); --tertiary-color-200: hsl(var(--tertiary-color-hue), 100%, 75%); --tertiary-color-300: hsl(var(--tertiary-color-hue), 100%, 70%); --tertiary-color-400: hsl(var(--tertiary-color-hue), 100%, 65%); --tertiary-color-500: hsl(var(--tertiary-color-hue), 100%, 60%); --tertiary-color-600: hsl(var(--tertiary-color-hue), 100%, 55%); --tertiary-color-700: hsl(var(--tertiary-color-hue), 100%, 50%); --tertiary-color-800: hsl(var(--tertiary-color-hue), 100%, 45%); --tertiary-color-900: hsl(var(--tertiary-color-hue), 100%, 80%); --shadow-xs: 0 0 0 1px rgba(0, 0, 0, .05); --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05); --shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05); --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04); --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25); --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .06); --shadow-outline: 0 0 0 3px rgba(66, 153, 225, .5); --rounded-none: 0; --rounded-sm: .125rem; --rounded: 1.25rem; --rounded-md: .375rem; --rounded-lg: .5rem; --rounded-xl: .75rem; --rounded-2xl: 1rem; --rounded-3xl: 1.5rem; --rounded-full: 9999px } html { overflow-y: scroll } body>.contentRender { min-height: 100%; height: 100% } html, body { height: 100%; font-family: var(--font-body); color: var(--gray-900) } .sr-only { border: 0; clip: rect(0, 0, 0, 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px } .skip-link[href] { z-index: 5000000; display: block; margin: 0; padding: var(--space-8) var(--space-12); width: auto; height: auto; font-size: var(--text-3xl); line-height: var(--leading-tight); color: var(--gray-100); text-align: center; border: 4px dashed var(--gray-100); background: var(--gray-900); opacity: 0; clip: auto } .contentRender_name_plugins_core_textbox { width: 100%; padding: 0 var(--space-5); margin: 0 auto } .contentRender_name_plugins_core_textbox { padding: var(--space-8) var(--space-5) } .panel-page { position: relative; display: grid; grid-template-columns: 100%; grid-template-rows: auto auto 1fr auto; min-height: 100% } .panel-two-column { max-width: var(--width-base); padding: 0; margin: 0 auto; margin-bottom: var(--space-8) } .sv-col>.contentRender>.sv-panel { margin-left: calc(-1 * var(--space-5)); margin-right: calc(-1 * var(--space-5)) } body, h1, h2, h3, p { font-family: var(--font-body) } h1, h2, h3 { font-family: var(--font-display) } h1, h2, h3, p { margin: 0 } ul { margin-bottom: 0 } a { color: var(--primary-color-700) } .contentRender_name_plugins_nav_breadcrumb { max-width: 1290px; margin: 0 auto; } .navigation.desktop.secondary { margin-bottom: 0 0 20px 0; } .main-desktop-nav-container { display: none; } .header-container { z-index: 15; position: static; width: 100%; } .core-hero-slideshow.hero-slideshow-portrait img { height: auto; width: 100%; } .panel-header .primary-content-container { display: flex; align-items: center; justify-content: space-between; padding: 0 var(--space-1) 0 var(--space-4); /* margin-bottom: var(--space-3); */ background: #292929; position: relative; z-index: 200; height: 48px; } .panel-header.hamburger .nav-container .hamburger-dropdown-toggle img.hamburger-icon { width: 27px; height: 19px; } @media (max-width: 40em) { .panel-header .primary-content-container .contentRender_name_plugins_common_logo { padding: var(--space-4) 0; max-width: 138px; } .panel-header .main-nav-widgets-container { display: grid; align-items: center; grid-template-columns: min-content; gap: var(--space-5); } .panel-header.hamburger .nav-container { gap: var(--space-2); } .panel-header .main-nav-widgets-container > *:not(.widgets) { display: flex; align-items: center; } .panel-header.hamburger .nav-container .hamburger-dropdown-toggle img.close-icon { display: none; } .panel-header.hamburger .nav-container .hamburger-dropdown-toggle img.search-icon { width: 25px; height: 25px; } .panel-header.hamburger .nav-container .hamburger-dropdown-toggle img.hamburger-icon { width: 27px; height: 19px; } } .panel-header .main-nav-widgets-container { display: grid; align-items: center; grid-template-columns: min-content; gap: var(--space-5); } .core-hero-slideshow { opacity:1 !important; } .core-hero-image { opacity:1 !important; } @media (max-width: 40em) { header .main-nav-widgets-container { display: none; } .panel-header .primary-content-container::after { content: ''; width: 100%; /* max-width: calc(100% - var(--space-10)); */ height: 2px; background: #000; position: absolute; bottom: 0; left: var(--space-5); right: var(--space-5); } } @media (min-width: 64em) { .header-container { margin: 0 auto; } .panel-header.hamburger .nav-container .hamburger-dropdown-toggle { padding: var(--space-4) var(--space-4); width: 96px; } .panel-header.hamburger .primary-content-container { height: var(--top-bar-height); } .nav-container .menu-toggle-container { position: relative; background: transparent; } .panel-header .primary-content-container { margin-bottom: 0; padding: var(--space-5) 0; z-index: 1000; } .panel-header .main-nav-widgets-container { grid-template-columns: 55px 1fr; } } @media (min-width: 1286px) { .panel-header .primary-content-container { align-items: center; padding: 0 var(--space-5); height: 120px; box-sizing: border-box; margin: 0 auto; position: relative; z-index: 1000; } } @media (min-width: 1440px) { .panel-header { margin: 0 auto; } } </style> </head> <body> <!-- topBody --> <noscript> <iframe src="//www.googletagmanager.com/ns.html?id=GTM-NLJPDSK" title="Google Tag Manager" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <noscript> <iframe src="//www.googletagmanager.com/ns.html?id=GTM-NFBVG93" title="Google Tag Manager" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <!-- content --> <div data-civid="67ac6dfcd6fe353ee10a16c7" class="contentRender contentRender_0 contentRender_type_panel contentRender_name_plugins_common_page" data-sv-time="8" data-sv-index="0" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <style>.skip-link { display: none; }</style> <script> // CRM FORM STYLING HELPER JS // Adds the body class as quickly as possible to hide all the items on the page so we don't // have the site flash before the calendar shows up if (location.search.indexOf('action=popupCal') > -1 && document.body.querySelectorAll('.lookup-calHolder')) { document.body.classList.add('crm-calendar-popup'); }; </script> <!-- Adds a check for IE, if we're in IE we block the entire page --> <div id="ie-warning" style="position: fixed; z-index: 999999999999; top: 0; left: 0; display: none; align-items: center; justify-content: center; width: 100%; height: 100%; text-align: center; background-color: #fff;" aria-hidden="true" > <div> <img src="/includes/public/assets/shared/logo.svg" alt="Marketing Manchester" width="80" height="80" style="margin-bottom: 16px;" /> <p style="font-size: 22px; font-weight: 700; line-height: 1.3; text-align: center;">Your browser is not supported for this experience.<br />We recommend using Chrome, Firefox, Edge, or Safari.</p> </div> <script> var ieWarning = document.querySelector('#ie-warning'); if (document.body.style.msTouchAction !== undefined) { ieWarning.style.display = 'flex'; ieWarning.setAttribute('aria-hidden', 'false'); } </script> </div> <a class="skip-link sr-only" href="#slideshow-container">Skip navigation</a> <a class="skip-link sr-only" href="#main-content">Skip to main content</a> <div class="root-panel panel-page"> <div class="header-container"> <div data-civid="64c7adda7bb02a0e877d05bf" class="contentRender contentRender_1 contentRender_type_panel contentRender_name_plugins_common_header_hamburger" data-sv-time="1" data-sv-index="1" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <header class="panel-header hamburger theme_1 main" data-guid="870196f1-0a4e-4f37-8350-f4a2247f6b21" > <div class="primary-content-container"> <div data-civid="66e1621861c952fb532c625d" class="contentRender contentRender_2 contentRender_type_widget contentRender_name_plugins_common_logo" data-sv-time="45" data-sv-index="2" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="logo" data-guid="c9dd0339-884d-4741-bf3c-d25f5b4d8326" > <a href="/" target="" aria-label="Visit Manchester Logo" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "eventName": "widget_interaction", "widgetName": "Logo", "interactionSource": "widget", "linkObject": "Visit%20Manchester%20Logo", "interactionUrl": "%2F" } }'> <img srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_limit,h_32,q_75,w_247/v1/clients/manchester/logo_c3fd195c-4f61-4268-98f6-2de196faa506.png 1x, https://assets.simpleviewinc.com/simpleview/image/upload/c_limit,h_64,q_75,w_494/v1/clients/manchester/logo_c3fd195c-4f61-4268-98f6-2de196faa506.png 2x" alt="Visit Manchester Logo" loading="eager" /> </a> </div> </div> <div class="main-nav-widgets-container"> <div class="widgets"> <div data-civid="66e1621861c952fb532c625f" class="contentRender contentRender_3 contentRender_type_widget contentRender_name_plugins_tripbuilder_counter" data-sv-time="45" data-sv-index="3" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div data-guid="854089c0-9b21-4ed6-ba3e-729f77fe8357"></div> <script> require(['site_tripbuilder'], function(tripbuilder) { if (!tripbuilder.enabled) return; const root = document.querySelector('[data-guid="854089c0-9b21-4ed6-ba3e-729f77fe8357"]'); const tripbuilderMobile = document.querySelector('[data-mobile-nav] [data-tripbuilder-cont]'); tbCounterChangeHandler(); tripbuilder.events.on('change', tbCounterChangeHandler); function tbCounterChangeHandler() { const html = ` <a class="tripbuilder-counter" href="${tripbuilder.path}"> <i class="far fa-heart" aria-hidden="true"></i> &nbsp; <span>(${tripbuilder.getTotalCount()})</span> </a> `; root.innerHTML = html; if (tripbuilderMobile) { tripbuilderMobile.innerHTML = html; } } }); </script></div> </div> <div class="nav-container"> <button id="menu-toggle" class="menu-toggle hamburger-dropdown-toggle" aria-label="toggle menu" aria-haspopup="true" aria-expanded="false" aria-controls="primary-site-menu" data-hamburger-dropdown-toggle > <img class="search-icon" src="/includes/public/assets/shared/icons/icon_magnifyglass.svg"></i> <span class="hamburger-inner"> <img class="hamburger-icon" src="/includes/public/assets/shared/icons/icon_hamburger.svg"></i> <img class="close-icon" src="/includes/public/assets/shared/icons/icon_close_white.svg"></i> </span> </button> </div> </div> </div> </header> <div id="primary-site-menu" class="dropdown-nav-container theme_1 main" data-site-nav-cont style="display: none;"> <div class="nav"> <header class="widgets" data-mobile-nav> <!-- <div data-weather-cont></div> --> <div data-search-cont> <div data-civid="66e1621861c952fb532c6263" class="contentRender contentRender_5 contentRender_type_widget contentRender_name_plugins_search_headerbox" data-sv-time="95" data-sv-index="5" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="search-cont" data-guid="10b1bac1-08d2-4bbc-8f5e-07eb26359c6b"> <form class="headerbox-search-form" data-sv-searchForm action="/search/" method="GET"> <input data-sv-search-input name="q" class="searchInput" autocomplete="off" autocorrect="off" autocapitalize="off" placeholder="Search" value="" /> <button type="submit" data-sv-search-button> <i class ="fa fa-search fa-inverse" aria-hidden="true"></i> </button> </form> <button class="search-button" data-toggle-search aria-expanded="false" aria-label="toggle search dropdown" aria-controls="headerbox-search-form"> <i class="fas fa-search open" aria-hidden="true"></i> <i class="fas fa-times close" aria-hidden="true"></i> </button> </div> <script> require(["plugins_common_custom_utils", "domReady!"], function(utils) { let root = document.querySelector('[data-guid="10b1bac1-08d2-4bbc-8f5e-07eb26359c6b"]'); let searchCont = document.querySelector('[data-search-cont]'); let searchButtonsToHide = root.querySelectorAll('[data-sv-search-button], [data-sv-search-input]'); let isActive = false; const breakpoint = 1024; // clone to mobile nav searchCont?.replaceWith(root.cloneNode(true)); function ariaHideEl(el) { el.setAttribute('aria-hidden', true); el.setAttribute('tabindex', -1); } function ariaShowEl(el) { el.removeAttribute('aria-hidden'); el.removeAttribute('tabindex'); } function toggleSearchElVisibility() { if (window.innerWidth < breakpoint || isActive) { searchButtonsToHide.forEach(ariaShowEl); return; } searchButtonsToHide.forEach(ariaHideEl); } document.querySelectorAll('[data-toggle-search]').forEach( elem => { elem.addEventListener("click", function(e) { e.stopImmediatePropagation(); let searchCont = this.parentNode; searchCont.classList.toggle('active'); this.classList.toggle('active'); isActive = searchCont.classList.contains('active'); this.getAttribute('aria-expanded', isActive); toggleSearchElVisibility(); if (isActive) { searchCont.querySelector('[data-sv-search-input]').focus(); } }); }); document.querySelectorAll('[data-sv-searchForm]').forEach( elem => { let input = elem.querySelector('[data-sv-search-input]'); elem.addEventListener('submit', function(e) { if (input.value.length === 0) { e.preventDefault(); this.querySelector('[data-sv-search-input]').focus(); } }); }); ['resize', 'orientationchange'].forEach(ev => window.addEventListener(ev, utils.debounce(toggleSearchElVisibility, 200))); toggleSearchElVisibility(); }); </script> </div> </div> <div data-tripbuilder-cont></div> </header> <div class="social-nav-cont"> <div class="navigation-list"> <!-- --> <div data-civid="66e1621861c952fb532c6265" class="contentRender contentRender_6 contentRender_type_widget contentRender_name_plugins_collections_type_custom_slides contentRender_name_plugins_collections_template_custom_navigation_list" data-sv-time="129" data-sv-index="6" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'> <style>.list navigation-list .img-cont { aspect-ratio: 185 / 135; }@media (min-width: 640px) { .list navigation-list .img-cont { aspect-ratio: 185 / 135; } }</style> <section class="ccl-widget core-list list navigation-list" data-guid="35fa2597-65f5-4974-a079-3c2643f2a55f" data-js="plugins_collections_custom_collection_default_package" data-gtm-vars='{ "tClient_ga4" : { "eventName" : "widget_interaction", "widgetName" : "Navigation List", "interactionSource" : "widget" } }' style="opacity: 0;" > <div class="slides" data-slides> <article class="slide"> <div class="inner" data-gtm-vars='{ "tClient_ga4" : { "interactionSource" : "widget", "itemName" : "Family%20Friendly" } }'> <div class="slide-top"> <div class="img-cont"> <a data-asset href="https://www.visitmanchester.com/things-to-see-and-do/attractions/family-friendly/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Image", "interactionUrl": "https://www.visitmanchester.com/things-to-see-and-do/attractions/family-friendly/" } }'> <picture> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_135,q_65,w_185,x_1318,y_710/v1/clients/manchester/Family_with_Baby_replica_in_Revolution_Manchester_Science_Museum_Group_The_Board_of_Trustees_of_the_Science_Museum_large_ae744877-39e3-46db-9d66-ef4f1343e827.jpg" media="screen and (min-width: 640px)" type="image/avif" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_135,q_65,w_185,x_1318,y_710/v1/clients/manchester/Family_with_Baby_replica_in_Revolution_Manchester_Science_Museum_Group_The_Board_of_Trustees_of_the_Science_Museum_large_ae744877-39e3-46db-9d66-ef4f1343e827.jpg" media="screen and (min-width: 640px)" type="image/webp" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_135,q_65,w_185,x_1318,y_710/v1/clients/manchester/Family_with_Baby_replica_in_Revolution_Manchester_Science_Museum_Group_The_Board_of_Trustees_of_the_Science_Museum_large_ae744877-39e3-46db-9d66-ef4f1343e827.jpg" media="screen and (min-width: 640px)" type="image/jpeg" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_135,q_65,w_185,x_1318,y_710/v1/clients/manchester/Family_with_Baby_replica_in_Revolution_Manchester_Science_Museum_Group_The_Board_of_Trustees_of_the_Science_Museum_large_ae744877-39e3-46db-9d66-ef4f1343e827.jpg" type="image/avif" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_135,q_65,w_185,x_1318,y_710/v1/clients/manchester/Family_with_Baby_replica_in_Revolution_Manchester_Science_Museum_Group_The_Board_of_Trustees_of_the_Science_Museum_large_ae744877-39e3-46db-9d66-ef4f1343e827.jpg" type="image/webp" width="185" height="135" /> <img class="slide-img" src="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_135,q_65,w_185,x_1318,y_710/v1/clients/manchester/Family_with_Baby_replica_in_Revolution_Manchester_Science_Museum_Group_The_Board_of_Trustees_of_the_Science_Museum_large_ae744877-39e3-46db-9d66-ef4f1343e827.jpg" alt="A family at the Manchester Science and Industry Museum" loading="lazy" fetchpriority="low" width="185" height="135" onload="this.classList.add('loaded')" /> </picture> </a> </div> </div> <div class="content-section"> <div class="inner"> <div class="heading-container"> <h2 class="slide-title"> <a href="https://www.visitmanchester.com/things-to-see-and-do/attractions/family-friendly/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Title", "interactionUrl": "https%3A%2F%2Fwww.visitmanchester.com%2Fthings-to-see-and-do%2Fattractions%2Ffamily-friendly%2F", "interactionText" : "Family%20Friendly" } }'>Family Friendly</a> </h2> </div> <p>Create lasting memories with our guide to family-friendly attractions in Manchester. From&hellip; </div> <footer class="slide-footer"> <a class="read-more" href="https://www.visitmanchester.com/things-to-see-and-do/attractions/family-friendly/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Read%20More", "interactionUrl": "https%3A%2F%2Fwww.visitmanchester.com%2Fthings-to-see-and-do%2Fattractions%2Ffamily-friendly%2F", "interactionText" : "Read%20More" } }'> Read More </a> </footer> </div> </div> </article> <article class="slide"> <div class="inner" data-gtm-vars='{ "tClient_ga4" : { "interactionSource" : "widget", "itemName" : "Restaurants" } }'> <div class="slide-top"> <div class="img-cont"> <a data-asset href="https://www.visitmanchester.com/food-and-drink/restaurants/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Image", "interactionUrl": "https://www.visitmanchester.com/food-and-drink/restaurants/" } }'> <picture> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_135,q_65,w_185,x_1222,y_696/v1/clients/manchester/couple_hotel_31_large_6f20191b-7478-4bf5-a1d5-d93976c74e38.jpg" media="screen and (min-width: 640px)" type="image/avif" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_135,q_65,w_185,x_1222,y_696/v1/clients/manchester/couple_hotel_31_large_6f20191b-7478-4bf5-a1d5-d93976c74e38.jpg" media="screen and (min-width: 640px)" type="image/webp" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_135,q_65,w_185,x_1222,y_696/v1/clients/manchester/couple_hotel_31_large_6f20191b-7478-4bf5-a1d5-d93976c74e38.jpg" media="screen and (min-width: 640px)" type="image/jpeg" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_135,q_65,w_185,x_1222,y_696/v1/clients/manchester/couple_hotel_31_large_6f20191b-7478-4bf5-a1d5-d93976c74e38.jpg" type="image/avif" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_135,q_65,w_185,x_1222,y_696/v1/clients/manchester/couple_hotel_31_large_6f20191b-7478-4bf5-a1d5-d93976c74e38.jpg" type="image/webp" width="185" height="135" /> <img class="slide-img" src="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_135,q_65,w_185,x_1222,y_696/v1/clients/manchester/couple_hotel_31_large_6f20191b-7478-4bf5-a1d5-d93976c74e38.jpg" alt="Couple eating in the Edwardian Manchester restaurant" loading="lazy" fetchpriority="low" width="185" height="135" onload="this.classList.add('loaded')" /> </picture> </a> </div> </div> <div class="content-section"> <div class="inner"> <div class="heading-container"> <h2 class="slide-title"> <a href="https://www.visitmanchester.com/food-and-drink/restaurants/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Title", "interactionUrl": "https%3A%2F%2Fwww.visitmanchester.com%2Ffood-and-drink%2Frestaurants%2F", "interactionText" : "Restaurants" } }'>Restaurants</a> </h2> </div> <p>Discover Manchester&#39;s culinary delights with our Restaurants guide. From cosy neighbourhood&hellip; </div> <footer class="slide-footer"> <a class="read-more" href="https://www.visitmanchester.com/food-and-drink/restaurants/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Read%20More", "interactionUrl": "https%3A%2F%2Fwww.visitmanchester.com%2Ffood-and-drink%2Frestaurants%2F", "interactionText" : "Read%20More" } }'> Read More </a> </footer> </div> </div> </article> <article class="slide"> <div class="inner" data-gtm-vars='{ "tClient_ga4" : { "interactionSource" : "widget", "itemName" : "What%27s%20on%20at%20Manchester%20Opera%20House%20%26%20Palace%20Theatre" } }'> <div class="slide-top"> <div class="img-cont"> <a data-asset href="https://www.visitmanchester.com/whats-on/events/whats-on-opera-house-palace-theatre/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Image", "interactionUrl": "https://www.visitmanchester.com/whats-on/events/whats-on-opera-house-palace-theatre/" } }'> <picture> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_135,q_65,w_185,x_1030,y_858/v1/clients/manchester/opera_house_exterior_large_45b126aa-73bb-47c7-9f4d-79c91b395ecc.jpg" media="screen and (min-width: 640px)" type="image/avif" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_135,q_65,w_185,x_1030,y_858/v1/clients/manchester/opera_house_exterior_large_45b126aa-73bb-47c7-9f4d-79c91b395ecc.jpg" media="screen and (min-width: 640px)" type="image/webp" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_135,q_65,w_185,x_1030,y_858/v1/clients/manchester/opera_house_exterior_large_45b126aa-73bb-47c7-9f4d-79c91b395ecc.jpg" media="screen and (min-width: 640px)" type="image/jpeg" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_135,q_65,w_185,x_1030,y_858/v1/clients/manchester/opera_house_exterior_large_45b126aa-73bb-47c7-9f4d-79c91b395ecc.jpg" type="image/avif" width="185" height="135" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_135,q_65,w_185,x_1030,y_858/v1/clients/manchester/opera_house_exterior_large_45b126aa-73bb-47c7-9f4d-79c91b395ecc.jpg" type="image/webp" width="185" height="135" /> <img class="slide-img" src="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_135,q_65,w_185,x_1030,y_858/v1/clients/manchester/opera_house_exterior_large_45b126aa-73bb-47c7-9f4d-79c91b395ecc.jpg" alt="Exterior of Manchester Opera House at night with pink lighting" loading="lazy" fetchpriority="low" width="185" height="135" onload="this.classList.add('loaded')" /> </picture> </a> </div> </div> <div class="content-section"> <div class="inner"> <div class="heading-container"> <h2 class="slide-title"> <a href="https://www.visitmanchester.com/whats-on/events/whats-on-opera-house-palace-theatre/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Title", "interactionUrl": "https%3A%2F%2Fwww.visitmanchester.com%2Fwhats-on%2Fevents%2Fwhats-on-opera-house-palace-theatre%2F", "interactionText" : "What%27s%20on%20at%20Manchester%20Opera%20House%20%26%20Palace%20Theatre" } }'>What's on at Manchester Opera House & Palace Theatre</a> </h2> </div> <p>Indulge in the grandeur of theatrical splendor at Manchester Opera House and Palace Theatre, two&hellip; </div> <footer class="slide-footer"> <a class="read-more" href="https://www.visitmanchester.com/whats-on/events/whats-on-opera-house-palace-theatre/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Read%20More", "interactionUrl": "https%3A%2F%2Fwww.visitmanchester.com%2Fwhats-on%2Fevents%2Fwhats-on-opera-house-palace-theatre%2F", "interactionText" : "Read%20More" } }'> Read More </a> </footer> </div> </div> </article> </div> </section></div> <!-- --> </div> <div class="social-list"> <p>Follow us</p> <div data-civid="66e1621861c952fb532c6267" class="contentRender contentRender_7 contentRender_type_widget contentRender_name_plugins_collections_type_custom_social_slides contentRender_name_plugins_collections_template_custom_social_links" data-sv-time="97" data-sv-index="7" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <ul class="social-links"> <li class="social-network"> <a class="social-link" href="https://www.tiktok.com/@visitmanchester" target="_blank" rel="noopener" title="Visit our tiktok page" aria-label="Visit our tiktok page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Tiktok", "interactionUrl" : "https%3A%2F%2Fwww.tiktok.com%2F%40visitmanchester", "interactionSource": "widget" } }' > <i class="social-icon fab fa-tiktok" aria-hidden="true" ></i> </a> </li> <li class="social-network"> <a class="social-link" href="https://www.youtube.com/user/visitmanchester" target="_blank" rel="noopener" title="Visit our youtube page" aria-label="Visit our youtube page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Youtube", "interactionUrl" : "https%3A%2F%2Fwww.youtube.com%2Fuser%2Fvisitmanchester", "interactionSource": "widget" } }' > <i class="social-icon fab fa-youtube" aria-hidden="true" ></i> </a> </li> <li class="social-network"> <a class="social-link" href="https://twitter.com/visit_mcr" target="_blank" rel="noopener" title="Visit our twitter page" aria-label="Visit our twitter page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Twitter", "interactionUrl" : "https%3A%2F%2Ftwitter.com%2Fvisit_mcr", "interactionSource": "widget" } }' > <i class="social-icon fab fa-twitter" aria-hidden="true" ></i> </a> </li> <li class="social-network"> <a class="social-link" href="https://www.instagram.com/visitmanchester/" target="_blank" rel="noopener" title="Visit our instagram page" aria-label="Visit our instagram page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Instagram", "interactionUrl" : "https%3A%2F%2Fwww.instagram.com%2Fvisitmanchester%2F", "interactionSource": "widget" } }' > <i class="social-icon fab fa-instagram" aria-hidden="true" ></i> </a> </li> <li class="social-network"> <a class="social-link" href="https://www.facebook.com/visitmanchester/" target="_blank" rel="noopener" title="Visit our facebook page" aria-label="Visit our facebook page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Facebook", "interactionUrl" : "https%3A%2F%2Fwww.facebook.com%2Fvisitmanchester%2F", "interactionSource": "widget" } }' > <i class="social-icon fab fa-facebook" aria-hidden="true" ></i> </a> </li> </ul></div> </div> </div> <div class="main-nav" data-main-nav-cont> <div data-civid="66e1621861c952fb532c6269" class="contentRender contentRender_8 contentRender_type_widget contentRender_name_plugins_nav_main_dropdown" data-sv-time="56" data-sv-index="8" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="nav-container" data-guid="209612e0-263d-4203-bbf1-5f09f8f59d98" data-gtm-vars='{ "tClient_ga4": { "eventName": "navigation_click", "navType": "Main", "interactionSource": "navigation" } }' > <noscript class="permanently-hidden"> <nav> <a href="/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Home", "interactionUrl": "%2F", "interactionText": "Home" } }' >Home</a> <a href="/things-to-see-and-do/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Things%20To%20Do", "interactionUrl": "%2Fthings-to-see-and-do%2F", "interactionText": "Things%20To%20Do" } }' >Things To Do</a> <a href="/things-to-see-and-do/attractions/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Attractions", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2F", "interactionText": "Attractions" } }' >Attractions</a> <a href="/things-to-see-and-do/attractions/family-friendly/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Family%20Friendly", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Ffamily-friendly%2F", "interactionText": "Family%20Friendly" } }' >Family Friendly</a> <a href="/things-to-see-and-do/attractions/free-things-to-do-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Free%20Things%20To%20Do%20in%20Manchester", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Ffree-things-to-do-manchester%2F", "interactionText": "Free%20Things%20To%20Do%20in%20Manchester" } }' >Free Things To Do in Manchester</a> <a href="/things-to-see-and-do/attractions/museums-and-galleries/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Museums%20%26%20Galleries", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Fmuseums-and-galleries%2F", "interactionText": "Museums%20%26%20Galleries" } }' >Museums & Galleries</a> <a href="/things-to-see-and-do/attractions/heritage-and-history/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Heritage%20%26%20History", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Fheritage-and-history%2F", "interactionText": "Heritage%20%26%20History" } }' >Heritage & History</a> <a href="/things-to-see-and-do/attractions/animal-attractions-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Animal%20Attractions", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Fanimal-attractions-in-manchester%2F", "interactionText": "Animal%20Attractions" } }' >Animal Attractions</a> <a href="/things-to-see-and-do/attractions/parks-and-gardens/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Parks%20%26%20Gardens", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Fparks-and-gardens%2F", "interactionText": "Parks%20%26%20Gardens" } }' >Parks & Gardens</a> <a href="/things-to-see-and-do/attractions/sports/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Sporting%20Attractions", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Fsports%2F", "interactionText": "Sporting%20Attractions" } }' >Sporting Attractions</a> <a href="/things-to-see-and-do/attractions/stately-homes-and-manors/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Stately%20Homes%20%26%20Manors", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Fstately-homes-and-manors%2F", "interactionText": "Stately%20Homes%20%26%20Manors" } }' >Stately Homes & Manors</a> <a href="/things-to-see-and-do/attractions/transport-heritage/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Transport%20Heritage", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Ftransport-heritage%2F", "interactionText": "Transport%20Heritage" } }' >Transport Heritage</a> <a href="/things-to-see-and-do/attractions/unique-experiences/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Unique%20Experiences", "interactionUrl": "%2Fthings-to-see-and-do%2Fattractions%2Funique-experiences%2F", "interactionText": "Unique%20Experiences" } }' >Unique Experiences</a> <a href="/things-to-see-and-do/tours-sightseeing/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Tours%20%26%20Sightseeing", "interactionUrl": "%2Fthings-to-see-and-do%2Ftours-sightseeing%2F", "interactionText": "Tours%20%26%20Sightseeing" } }' >Tours & Sightseeing</a> <a href="/things-to-see-and-do/tours-sightseeing/boat-tours/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Boat%20Tours", "interactionUrl": "%2Fthings-to-see-and-do%2Ftours-sightseeing%2Fboat-tours%2F", "interactionText": "Boat%20Tours" } }' >Boat Tours</a> <a href="/things-to-see-and-do/tours-sightseeing/bus-and-taxi-tours/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Bus%20%26%20Taxi%20Tours", "interactionUrl": "%2Fthings-to-see-and-do%2Ftours-sightseeing%2Fbus-and-taxi-tours%2F", "interactionText": "Bus%20%26%20Taxi%20Tours" } }' >Bus & Taxi Tours</a> <a href="/things-to-see-and-do/tours-sightseeing/train-tours/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Train%20Tours", "interactionUrl": "%2Fthings-to-see-and-do%2Ftours-sightseeing%2Ftrain-tours%2F", "interactionText": "Train%20Tours" } }' >Train Tours</a> <a href="/things-to-see-and-do/tours-sightseeing/walking-tours/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Walking%20Tours", "interactionUrl": "%2Fthings-to-see-and-do%2Ftours-sightseeing%2Fwalking-tours%2F", "interactionText": "Walking%20Tours" } }' >Walking Tours</a> <a href="/things-to-see-and-do/activities/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Activities", "interactionUrl": "%2Fthings-to-see-and-do%2Factivities%2F", "interactionText": "Activities" } }' >Activities</a> <a href="/things-to-see-and-do/activities/adventure-and-outdoor/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Adventure%20%26%20Outdoor", "interactionUrl": "%2Fthings-to-see-and-do%2Factivities%2Fadventure-and-outdoor%2F", "interactionText": "Adventure%20%26%20Outdoor" } }' >Adventure & Outdoor</a> <a href="/things-to-see-and-do/activities/cycling-routes/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Cycling%20Routes", "interactionUrl": "%2Fthings-to-see-and-do%2Factivities%2Fcycling-routes%2F", "interactionText": "Cycling%20Routes" } }' >Cycling Routes</a> <a href="/things-to-see-and-do/activities/food-and-drink-experiences/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Food%20%26%20Drink%20Experiences", "interactionUrl": "%2Fthings-to-see-and-do%2Factivities%2Ffood-and-drink-experiences%2F", "interactionText": "Food%20%26%20Drink%20Experiences" } }' >Food & Drink Experiences</a> <a href="/things-to-see-and-do/activities/health-and-spa/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Health%20%26%20Spa", "interactionUrl": "%2Fthings-to-see-and-do%2Factivities%2Fhealth-and-spa%2F", "interactionText": "Health%20%26%20Spa" } }' >Health & Spa</a> <a href="/things-to-see-and-do/activities/sport/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Sport", "interactionUrl": "%2Fthings-to-see-and-do%2Factivities%2Fsport%2F", "interactionText": "Sport" } }' >Sport</a> <a href="/things-to-see-and-do/activities/walking/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Walking%20Trails", "interactionUrl": "%2Fthings-to-see-and-do%2Factivities%2Fwalking%2F", "interactionText": "Walking%20Trails" } }' >Walking Trails</a> <a href="/things-to-see-and-do/entertainment/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Entertainment", "interactionUrl": "%2Fthings-to-see-and-do%2Fentertainment%2F", "interactionText": "Entertainment" } }' >Entertainment</a> <a href="/things-to-see-and-do/entertainment/cinemas/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Cinemas", "interactionUrl": "%2Fthings-to-see-and-do%2Fentertainment%2Fcinemas%2F", "interactionText": "Cinemas" } }' >Cinemas</a> <a href="/things-to-see-and-do/entertainment/comedy-and-cabaret/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Comedy%20%26%20Cabaret", "interactionUrl": "%2Fthings-to-see-and-do%2Fentertainment%2Fcomedy-and-cabaret%2F", "interactionText": "Comedy%20%26%20Cabaret" } }' >Comedy & Cabaret</a> <a href="/things-to-see-and-do/entertainment/music-venues/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Music%20Venues", "interactionUrl": "%2Fthings-to-see-and-do%2Fentertainment%2Fmusic-venues%2F", "interactionText": "Music%20Venues" } }' >Music Venues</a> <a href="/things-to-see-and-do/entertainment/night-clubs/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Night%20Clubs%20%26%20Nightlife", "interactionUrl": "%2Fthings-to-see-and-do%2Fentertainment%2Fnight-clubs%2F", "interactionText": "Night%20Clubs%20%26%20Nightlife" } }' >Night Clubs & Nightlife</a> <a href="/things-to-see-and-do/entertainment/performing-arts/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Performing%20Arts", "interactionUrl": "%2Fthings-to-see-and-do%2Fentertainment%2Fperforming-arts%2F", "interactionText": "Performing%20Arts" } }' >Performing Arts</a> <a href="/things-to-see-and-do/explore/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Explore%20Greater%20Manchester", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2F", "interactionText": "Explore%20Greater%20Manchester" } }' >Explore Greater Manchester</a> <a href="/things-to-see-and-do/explore/bolton/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Bolton", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Fbolton%2F", "interactionText": "Bolton" } }' >Bolton</a> <a href="/things-to-see-and-do/explore/bury/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Bury", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Fbury%2F", "interactionText": "Bury" } }' >Bury</a> <a href="/things-to-see-and-do/explore/oldham/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Oldham", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Foldham%2F", "interactionText": "Oldham" } }' >Oldham</a> <a href="/things-to-see-and-do/explore/rochdale/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Rochdale", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Frochdale%2F", "interactionText": "Rochdale" } }' >Rochdale</a> <a href="/things-to-see-and-do/explore/salford/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Salford", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Fsalford%2F", "interactionText": "Salford" } }' >Salford</a> <a href="/things-to-see-and-do/explore/stockport/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Stockport", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Fstockport%2F", "interactionText": "Stockport" } }' >Stockport</a> <a href="/things-to-see-and-do/explore/tameside/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Tameside", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Ftameside%2F", "interactionText": "Tameside" } }' >Tameside</a> <a href="/things-to-see-and-do/explore/trafford/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Trafford", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Ftrafford%2F", "interactionText": "Trafford" } }' >Trafford</a> <a href="/things-to-see-and-do/explore/wigan/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Wigan", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Fwigan%2F", "interactionText": "Wigan" } }' >Wigan</a> <a href="/things-to-see-and-do/explore/the-quays/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "MediaCity%20and%20The%20Quays", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Fthe-quays%2F", "interactionText": "MediaCity%20and%20The%20Quays" } }' >MediaCity and The Quays</a> <a href="/things-to-see-and-do/explore/neighbourhoods/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Neighbourhoods", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore%2Fneighbourhoods%2F", "interactionText": "Neighbourhoods" } }' >Neighbourhoods</a> <a href="/things-to-see-and-do/explore-the-north/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Manchester%20-%20Gateway%20To%20The%20North", "interactionUrl": "%2Fthings-to-see-and-do%2Fexplore-the-north%2F", "interactionText": "Manchester%20-%20Gateway%20To%20The%20North" } }' >Manchester - Gateway To The North</a> <a href="/things-to-see-and-do/sustainable-things-to-do/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Sustainable%20things%20to%20do", "interactionUrl": "%2Fthings-to-see-and-do%2Fsustainable-things-to-do%2F", "interactionText": "Sustainable%20things%20to%20do" } }' >Sustainable things to do</a> <a href="/whats-on/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20On", "interactionUrl": "%2Fwhats-on%2F", "interactionText": "What%27s%20On" } }' >What's On</a> <a href="/whats-on/events/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Events", "interactionUrl": "%2Fwhats-on%2Fevents%2F", "interactionText": "Events" } }' >Events</a> <a href="/whats-on/events/entertainment-events/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Entertainment%20Events", "interactionUrl": "%2Fwhats-on%2Fevents%2Fentertainment-events%2F", "interactionText": "Entertainment%20Events" } }' >Entertainment Events</a> <a href="/whats-on/events/family-events/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Family%20Events", "interactionUrl": "%2Fwhats-on%2Fevents%2Ffamily-events%2F", "interactionText": "Family%20Events" } }' >Family Events</a> <a href="/whats-on/events/music-events/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Gigs%20%26%20Concerts", "interactionUrl": "%2Fwhats-on%2Fevents%2Fmusic-events%2F", "interactionText": "Gigs%20%26%20Concerts" } }' >Gigs & Concerts</a> <a href="/whats-on/events/whats-on-at-home/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20at%20HOME", "interactionUrl": "%2Fwhats-on%2Fevents%2Fwhats-on-at-home%2F", "interactionText": "What%27s%20on%20at%20HOME" } }' >What's on at HOME</a> <a href="/whats-on/events/events-at-manchester-arena/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20at%20AO%20Arena", "interactionUrl": "%2Fwhats-on%2Fevents%2Fevents-at-manchester-arena%2F", "interactionText": "What%27s%20on%20at%20AO%20Arena" } }' >What's on at AO Arena</a> <a href="/whats-on/events/events-at-co-op-live/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20at%20Co-op%20Live", "interactionUrl": "%2Fwhats-on%2Fevents%2Fevents-at-co-op-live%2F", "interactionText": "What%27s%20on%20at%20Co-op%20Live" } }' >What's on at Co-op Live</a> <a href="/whats-on/events/whats-on-at-aviva-studios/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20at%20Aviva%20Studios", "interactionUrl": "%2Fwhats-on%2Fevents%2Fwhats-on-at-aviva-studios%2F", "interactionText": "What%27s%20on%20at%20Aviva%20Studios" } }' >What's on at Aviva Studios</a> <a href="/whats-on/events/whats-on-at-the-bridgewater-hall/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20at%20Bridgewater%20Hall", "interactionUrl": "%2Fwhats-on%2Fevents%2Fwhats-on-at-the-bridgewater-hall%2F", "interactionText": "What%27s%20on%20at%20Bridgewater%20Hall" } }' >What's on at Bridgewater Hall</a> <a href="/whats-on/events/whats-on-at-the-contact-theatre/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20at%20Contact%20Theatre", "interactionUrl": "%2Fwhats-on%2Fevents%2Fwhats-on-at-the-contact-theatre%2F", "interactionText": "What%27s%20on%20at%20Contact%20Theatre" } }' >What's on at Contact Theatre</a> <a href="/whats-on/events/events-at-the-lowry/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20at%20Lowry", "interactionUrl": "%2Fwhats-on%2Fevents%2Fevents-at-the-lowry%2F", "interactionText": "What%27s%20on%20at%20Lowry" } }' >What's on at Lowry</a> <a href="/whats-on/events/whats-on-opera-house-palace-theatre/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20at%20Manchester%20Opera%20House%20%26%20Palace%20Theatre", "interactionUrl": "%2Fwhats-on%2Fevents%2Fwhats-on-opera-house-palace-theatre%2F", "interactionText": "What%27s%20on%20at%20Manchester%20Opera%20House%20%26%20Palace%20Theatre" } }' >What's on at Manchester Opera House & Palace Theatre</a> <a href="/whats-on/events/whats-on-at-the-royal-exchange-theatre/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20at%20Royal%20Exchange%20Theatre", "interactionUrl": "%2Fwhats-on%2Fevents%2Fwhats-on-at-the-royal-exchange-theatre%2F", "interactionText": "What%27s%20on%20at%20Royal%20Exchange%20Theatre" } }' >What's on at Royal Exchange Theatre</a> <a href="/whats-on/exhibitions/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Exhibitions", "interactionUrl": "%2Fwhats-on%2Fexhibitions%2F", "interactionText": "Exhibitions" } }' >Exhibitions</a> <a href="/whats-on/festivals/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Festivals", "interactionUrl": "%2Fwhats-on%2Ffestivals%2F", "interactionText": "Festivals" } }' >Festivals</a> <a href="/whats-on/sporting-events/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Sporting%20Events", "interactionUrl": "%2Fwhats-on%2Fsporting-events%2F", "interactionText": "Sporting%20Events" } }' >Sporting Events</a> <a href="/whats-on/theatre/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Theatre", "interactionUrl": "%2Fwhats-on%2Ftheatre%2F", "interactionText": "Theatre" } }' >Theatre</a> <a href="/whats-on/whats-on-this-weekend/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20On%20This%20Weekend", "interactionUrl": "%2Fwhats-on%2Fwhats-on-this-weekend%2F", "interactionText": "What%27s%20On%20This%20Weekend" } }' >What's On This Weekend</a> <a href="/whats-on/whats-on-this-week/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20On%20This%20Week", "interactionUrl": "%2Fwhats-on%2Fwhats-on-this-week%2F", "interactionText": "What%27s%20On%20This%20Week" } }' >What's On This Week</a> <a href="/whats-on/half-term/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20On%20This%20Half%20Term", "interactionUrl": "%2Fwhats-on%2Fhalf-term%2F", "interactionText": "What%27s%20On%20This%20Half%20Term" } }' >What's On This Half Term</a> <a href="/whats-on/whats-on-this-halloween-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20On%20this%20Halloween%20in%20Manchester", "interactionUrl": "%2Fwhats-on%2Fwhats-on-this-halloween-in-manchester%2F", "interactionText": "What%27s%20On%20this%20Halloween%20in%20Manchester" } }' >What's On this Halloween in Manchester</a> <a href="/whats-on/whats-on-this-christmas-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "What%27s%20on%20This%20Christmas%20in%20Manchester", "interactionUrl": "%2Fwhats-on%2Fwhats-on-this-christmas-in-manchester%2F", "interactionText": "What%27s%20on%20This%20Christmas%20in%20Manchester" } }' >What's on This Christmas in Manchester</a> <a href="/whats-on/submit-event/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Submit%20an%20Event", "interactionUrl": "%2Fwhats-on%2Fsubmit-event%2F", "interactionText": "Submit%20an%20Event" } }' >Submit an Event</a> <a href="/shopping/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Shopping", "interactionUrl": "%2Fshopping%2F", "interactionText": "Shopping" } }' >Shopping</a> <a href="/shopping/areas-to-go-shopping-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Areas%20to%20go%20shopping%20in%20Manchester", "interactionUrl": "%2Fshopping%2Fareas-to-go-shopping-in-manchester%2F", "interactionText": "Areas%20to%20go%20shopping%20in%20Manchester" } }' >Areas to go shopping in Manchester</a> <a href="/shopping/areas-to-go-shopping-in-manchester/altrincham/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Altrincham", "interactionUrl": "%2Fshopping%2Fareas-to-go-shopping-in-manchester%2Faltrincham%2F", "interactionText": "Altrincham" } }' >Altrincham</a> <a href="https://www.visitmanchester.com/things-to-see-and-do/explore/neighbourhoods/king-street/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "King%20Street", "interactionUrl": "https%3A%2F%2Fwww.visitmanchester.com%2Fthings-to-see-and-do%2Fexplore%2Fneighbourhoods%2Fking-street%2F", "interactionText": "King%20Street" } }' >King Street</a> <a href="/shopping/areas-to-go-shopping-in-manchester/manchester-arndale/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Manchester%20Arndale", "interactionUrl": "%2Fshopping%2Fareas-to-go-shopping-in-manchester%2Fmanchester-arndale%2F", "interactionText": "Manchester%20Arndale" } }' >Manchester Arndale</a> <a href="/shopping/areas-to-go-shopping-in-manchester/the-northern-quarter/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "The%20Northern%20Quarter", "interactionUrl": "%2Fshopping%2Fareas-to-go-shopping-in-manchester%2Fthe-northern-quarter%2F", "interactionText": "The%20Northern%20Quarter" } }' >The Northern Quarter</a> <a href="/shopping/areas-to-go-shopping-in-manchester/the-trafford-centre/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "The%20Trafford%20Centre", "interactionUrl": "%2Fshopping%2Fareas-to-go-shopping-in-manchester%2Fthe-trafford-centre%2F", "interactionText": "The%20Trafford%20Centre" } }' >The Trafford Centre</a> <a href="/shopping/department-stores/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Department%20Stores", "interactionUrl": "%2Fshopping%2Fdepartment-stores%2F", "interactionText": "Department%20Stores" } }' >Department Stores</a> <a href="/shopping/designer-shops/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Designer%20Shops", "interactionUrl": "%2Fshopping%2Fdesigner-shops%2F", "interactionText": "Designer%20Shops" } }' >Designer Shops</a> <a href="/shopping/high-streets/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "High%20Street", "interactionUrl": "%2Fshopping%2Fhigh-streets%2F", "interactionText": "High%20Street" } }' >High Street</a> <a href="/shopping/independent/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Independent", "interactionUrl": "%2Fshopping%2Findependent%2F", "interactionText": "Independent" } }' >Independent</a> <a href="https://www.visitmanchester.com/things-to-see-and-do/explore/neighbourhoods/king-street/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "King%20Street", "interactionUrl": "https%3A%2F%2Fwww.visitmanchester.com%2Fthings-to-see-and-do%2Fexplore%2Fneighbourhoods%2Fking-street%2F", "interactionText": "King%20Street" } }' >King Street</a> <a href="/shopping/manchesters-jewellery-quarter/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Manchester%27s%20Jewellery%20Quarter", "interactionUrl": "%2Fshopping%2Fmanchesters-jewellery-quarter%2F", "interactionText": "Manchester%27s%20Jewellery%20Quarter" } }' >Manchester's Jewellery Quarter</a> <a href="/shopping/outlet-centres/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Outlet%20Centres", "interactionUrl": "%2Fshopping%2Foutlet-centres%2F", "interactionText": "Outlet%20Centres" } }' >Outlet Centres</a> <a href="/shopping/shopping-centres/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Shopping%20Centres", "interactionUrl": "%2Fshopping%2Fshopping-centres%2F", "interactionText": "Shopping%20Centres" } }' >Shopping Centres</a> <a href="/shopping/shopping-in-manchester-city-centre/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Shopping%20in%20Manchester%20City%20Centre", "interactionUrl": "%2Fshopping%2Fshopping-in-manchester-city-centre%2F", "interactionText": "Shopping%20in%20Manchester%20City%20Centre" } }' >Shopping in Manchester City Centre</a> <a href="/where-to-stay/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Where%20to%20Stay", "interactionUrl": "%2Fwhere-to-stay%2F", "interactionText": "Where%20to%20Stay" } }' >Where to Stay</a> <a href="/where-to-stay/hotels/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Hotels", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2F", "interactionText": "Hotels" } }' >Hotels</a> <a href="/where-to-stay/hotels/manchester-city-centre-hotels/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Hotels%20in%20Manchester%20City%20Centre", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2Fmanchester-city-centre-hotels%2F", "interactionText": "Hotels%20in%20Manchester%20City%20Centre" } }' >Hotels in Manchester City Centre</a> <a href="/where-to-stay/hotels/manchester-airport-hotels/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Manchester%20Airport%20Hotels", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2Fmanchester-airport-hotels%2F", "interactionText": "Manchester%20Airport%20Hotels" } }' >Manchester Airport Hotels</a> <a href="/where-to-stay/hotels/luxury-hotels/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Luxury%20Hotels", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2Fluxury-hotels%2F", "interactionText": "Luxury%20Hotels" } }' >Luxury Hotels</a> <a href="/where-to-stay/hotels/family-friendly/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Family-Friendly%20Hotels", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2Ffamily-friendly%2F", "interactionText": "Family-Friendly%20Hotels" } }' >Family-Friendly Hotels</a> <a href="/where-to-stay/hotels/manchester-hotels-with-swimming-pools/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Hotels%20With%20Swimming%20Pools", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2Fmanchester-hotels-with-swimming-pools%2F", "interactionText": "Hotels%20With%20Swimming%20Pools" } }' >Hotels With Swimming Pools</a> <a href="/where-to-stay/hotels/spa-hotels/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Spa%20Hotels", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2Fspa-hotels%2F", "interactionText": "Spa%20Hotels" } }' >Spa Hotels</a> <a href="/where-to-stay/hotels/budget-hotels/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Budget%20Hotels", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2Fbudget-hotels%2F", "interactionText": "Budget%20Hotels" } }' >Budget Hotels</a> <a href="/where-to-stay/hotels/countryside-hotels/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Countryside%20Hotels", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2Fcountryside-hotels%2F", "interactionText": "Countryside%20Hotels" } }' >Countryside Hotels</a> <a href="/where-to-stay/hotels/pet-friendly-hotels/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Pet-Friendly%20Hotels", "interactionUrl": "%2Fwhere-to-stay%2Fhotels%2Fpet-friendly-hotels%2F", "interactionText": "Pet-Friendly%20Hotels" } }' >Pet-Friendly Hotels</a> <a href="/where-to-stay/serviced-apartments/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Serviced%20Apartments", "interactionUrl": "%2Fwhere-to-stay%2Fserviced-apartments%2F", "interactionText": "Serviced%20Apartments" } }' >Serviced Apartments</a> <a href="/where-to-stay/bed-and-breakfasts/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Bed%20%26%20Breakfasts", "interactionUrl": "%2Fwhere-to-stay%2Fbed-and-breakfasts%2F", "interactionText": "Bed%20%26%20Breakfasts" } }' >Bed & Breakfasts</a> <a href="/where-to-stay/self-catering/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Self%20Catering", "interactionUrl": "%2Fwhere-to-stay%2Fself-catering%2F", "interactionText": "Self%20Catering" } }' >Self Catering</a> <a href="/where-to-stay/camping-and-caravanning/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Camping%20%26%20Caravanning", "interactionUrl": "%2Fwhere-to-stay%2Fcamping-and-caravanning%2F", "interactionText": "Camping%20%26%20Caravanning" } }' >Camping & Caravanning</a> <a href="/where-to-stay/eco-friendly-accommodation/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Eco-friendly%20Accommodation", "interactionUrl": "%2Fwhere-to-stay%2Feco-friendly-accommodation%2F", "interactionText": "Eco-friendly%20Accommodation" } }' >Eco-friendly Accommodation</a> <a href="/where-to-stay/group-friendly-accommodation/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Group%20friendly%20Accommodation", "interactionUrl": "%2Fwhere-to-stay%2Fgroup-friendly-accommodation%2F", "interactionText": "Group%20friendly%20Accommodation" } }' >Group friendly Accommodation</a> <a href="/where-to-stay/hostels/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Hostels", "interactionUrl": "%2Fwhere-to-stay%2Fhostels%2F", "interactionText": "Hostels" } }' >Hostels</a> <a href="/food-and-drink/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Food%20%26%20Drink", "interactionUrl": "%2Ffood-and-drink%2F", "interactionText": "Food%20%26%20Drink" } }' >Food & Drink</a> <a href="/food-and-drink/restaurants/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2F", "interactionText": "Restaurants" } }' >Restaurants</a> <a href="/food-and-drink/restaurants/american-restaurants/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "American%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Famerican-restaurants%2F", "interactionText": "American%20Restaurants" } }' >American Restaurants</a> <a href="/food-and-drink/restaurants/caribbean-restaurants/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Caribbean%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fcaribbean-restaurants%2F", "interactionText": "Caribbean%20Restaurants" } }' >Caribbean Restaurants</a> <a href="/food-and-drink/restaurants/chinese-restaurants/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Chinese%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fchinese-restaurants%2F", "interactionText": "Chinese%20Restaurants" } }' >Chinese Restaurants</a> <a href="/food-and-drink/restaurants/health-food-restaurants-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Health%20Food%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fhealth-food-restaurants-in-manchester%2F", "interactionText": "Health%20Food%20Restaurants" } }' >Health Food Restaurants</a> <a href="/food-and-drink/restaurants/indian-restaurant-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Indian%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Findian-restaurant-in-manchester%2F", "interactionText": "Indian%20Restaurants" } }' >Indian Restaurants</a> <a href="/food-and-drink/restaurants/italian-restaurants-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Italian%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fitalian-restaurants-in-manchester%2F", "interactionText": "Italian%20Restaurants" } }' >Italian Restaurants</a> <a href="/food-and-drink/restaurants/spanish-restaurants-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Spanish%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fspanish-restaurants-in-manchester%2F", "interactionText": "Spanish%20Restaurants" } }' >Spanish Restaurants</a> <a href="/food-and-drink/restaurants/japanese-restaurants/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Japanese%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fjapanese-restaurants%2F", "interactionText": "Japanese%20Restaurants" } }' >Japanese Restaurants</a> <a href="/food-and-drink/restaurants/thai-restaurants/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Thai%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fthai-restaurants%2F", "interactionText": "Thai%20Restaurants" } }' >Thai Restaurants</a> <a href="/food-and-drink/restaurants/vietnamese-restaurants/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Vietnamese%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fvietnamese-restaurants%2F", "interactionText": "Vietnamese%20Restaurants" } }' >Vietnamese Restaurants</a> <a href="/food-and-drink/restaurants/mexican-restaurants/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Mexican%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fmexican-restaurants%2F", "interactionText": "Mexican%20Restaurants" } }' >Mexican Restaurants</a> <a href="/food-and-drink/restaurants/greek-restaurants/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Greek%20Restaurants", "interactionUrl": "%2Ffood-and-drink%2Frestaurants%2Fgreek-restaurants%2F", "interactionText": "Greek%20Restaurants" } }' >Greek Restaurants</a> <a href="/food-and-drink/pubs-and-bars/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Pubs%20%26%20Bars", "interactionUrl": "%2Ffood-and-drink%2Fpubs-and-bars%2F", "interactionText": "Pubs%20%26%20Bars" } }' >Pubs & Bars</a> <a href="/food-and-drink/pubs-and-bars/country-pubs/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Country%20Pubs", "interactionUrl": "%2Ffood-and-drink%2Fpubs-and-bars%2Fcountry-pubs%2F", "interactionText": "Country%20Pubs" } }' >Country Pubs</a> <a href="/food-and-drink/pubs-and-bars/independent-bars/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Independent%20Bars", "interactionUrl": "%2Ffood-and-drink%2Fpubs-and-bars%2Findependent-bars%2F", "interactionText": "Independent%20Bars" } }' >Independent Bars</a> <a href="/food-and-drink/afternoon-tea/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Afternoon%20Tea", "interactionUrl": "%2Ffood-and-drink%2Fafternoon-tea%2F", "interactionText": "Afternoon%20Tea" } }' >Afternoon Tea</a> <a href="/food-and-drink/cafes-and-delis/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Cafes%20%26%20Delis", "interactionUrl": "%2Ffood-and-drink%2Fcafes-and-delis%2F", "interactionText": "Cafes%20%26%20Delis" } }' >Cafes & Delis</a> <a href="/food-and-drink/coffee-shops/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Coffee%20Shops", "interactionUrl": "%2Ffood-and-drink%2Fcoffee-shops%2F", "interactionText": "Coffee%20Shops" } }' >Coffee Shops</a> <a href="/food-and-drink/family-friendly/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Family%20Friendly", "interactionUrl": "%2Ffood-and-drink%2Ffamily-friendly%2F", "interactionText": "Family%20Friendly" } }' >Family Friendly</a> <a href="/food-and-drink/halal/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Halal", "interactionUrl": "%2Ffood-and-drink%2Fhalal%2F", "interactionText": "Halal" } }' >Halal</a> <a href="/food-and-drink/vegetarian/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Vegetarian", "interactionUrl": "%2Ffood-and-drink%2Fvegetarian%2F", "interactionText": "Vegetarian" } }' >Vegetarian</a> <a href="/food-and-drink/local-produce/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Local%20Produce", "interactionUrl": "%2Ffood-and-drink%2Flocal-produce%2F", "interactionText": "Local%20Produce" } }' >Local Produce</a> <a href="/food-and-drink/micro-breweries/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Micro%20Breweries", "interactionUrl": "%2Ffood-and-drink%2Fmicro-breweries%2F", "interactionText": "Micro%20Breweries" } }' >Micro Breweries</a> <a href="/food-and-drink/food-halls/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Food%20Halls", "interactionUrl": "%2Ffood-and-drink%2Ffood-halls%2F", "interactionText": "Food%20Halls" } }' >Food Halls</a> <a href="/food-and-drink/new-food-drink-openings-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "New%20Food%20%26%20Drink%20Openings%20in%20Manchester", "interactionUrl": "%2Ffood-and-drink%2Fnew-food-drink-openings-in-manchester%2F", "interactionText": "New%20Food%20%26%20Drink%20Openings%20in%20Manchester" } }' >New Food & Drink Openings in Manchester</a> <a href="/ideas-and-inspiration/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Ideas%20%26%20Inspiration", "interactionUrl": "%2Fideas-and-inspiration%2F", "interactionText": "Ideas%20%26%20Inspiration" } }' >Ideas & Inspiration</a> <a href="/ideas-and-inspiration/blog/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Blog", "interactionUrl": "%2Fideas-and-inspiration%2Fblog%2F", "interactionText": "Blog" } }' >Blog</a> <a href="/ideas-and-inspiration/guides-to-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Guides%20to%20Manchester", "interactionUrl": "%2Fideas-and-inspiration%2Fguides-to-manchester%2F", "interactionText": "Guides%20to%20Manchester" } }' >Guides to Manchester</a> <a href="/ideas-and-inspiration/special-offers/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Special%20Offers", "interactionUrl": "%2Fideas-and-inspiration%2Fspecial-offers%2F", "interactionText": "Special%20Offers" } }' >Special Offers</a> <a href="/ideas-and-inspiration/itineraries/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Itineraries", "interactionUrl": "%2Fideas-and-inspiration%2Fitineraries%2F", "interactionText": "Itineraries" } }' >Itineraries</a> <a href="/ideas-and-inspiration/competitions/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Competitions", "interactionUrl": "%2Fideas-and-inspiration%2Fcompetitions%2F", "interactionText": "Competitions" } }' >Competitions</a> <a href="/ideas-and-inspiration/competitions/super-duper-family-festival-competition/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Super%20Duper%20Family%20Festival%20%20Competition", "interactionUrl": "%2Fideas-and-inspiration%2Fcompetitions%2Fsuper-duper-family-festival-competition%2F", "interactionText": "Super%20Duper%20Family%20Festival%20%20Competition" } }' >Super Duper Family Festival Competition</a> <a href="/ideas-and-inspiration/competitions/win-a-vip-stay-for-manchesters-eurovision-festival/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Win%20a%20VIP%20stay%20for%20Manchester%27s%20Eurovision%20Festival", "interactionUrl": "%2Fideas-and-inspiration%2Fcompetitions%2Fwin-a-vip-stay-for-manchesters-eurovision-festival%2F", "interactionText": "Win%20a%20VIP%20stay%20for%20Manchester%27s%20Eurovision%20Festival" } }' >Win a VIP stay for Manchester's Eurovision Festival</a> <a href="/ideas-and-inspiration/unmissable-music-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Unmissable%20Music%20in%20Manchester", "interactionUrl": "%2Fideas-and-inspiration%2Funmissable-music-in-manchester%2F", "interactionText": "Unmissable%20Music%20in%20Manchester" } }' >Unmissable Music in Manchester</a> <a href="/ideas-and-inspiration/arts-and-culture/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Arts%20and%20Culture", "interactionUrl": "%2Fideas-and-inspiration%2Farts-and-culture%2F", "interactionText": "Arts%20and%20Culture" } }' >Arts and Culture</a> <a href="/ideas-and-inspiration/countryside/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Countryside", "interactionUrl": "%2Fideas-and-inspiration%2Fcountryside%2F", "interactionText": "Countryside" } }' >Countryside</a> <a href="/ideas-and-inspiration/haunt-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Haunt%20Manchester", "interactionUrl": "%2Fideas-and-inspiration%2Fhaunt-manchester%2F", "interactionText": "Haunt%20Manchester" } }' >Haunt Manchester</a> <a href="/ideas-and-inspiration/lgbt/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "LGBTQ%2B", "interactionUrl": "%2Fideas-and-inspiration%2Flgbt%2F", "interactionText": "LGBTQ%2B" } }' >LGBTQ+</a> <a href="/ideas-and-inspiration/literature/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Literature", "interactionUrl": "%2Fideas-and-inspiration%2Fliterature%2F", "interactionText": "Literature" } }' >Literature</a> <a href="/ideas-and-inspiration/christmas/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Christmas%20in%20Manchester", "interactionUrl": "%2Fideas-and-inspiration%2Fchristmas%2F", "interactionText": "Christmas%20in%20Manchester" } }' >Christmas in Manchester</a> <a href="/ideas-and-inspiration/proud/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Proud", "interactionUrl": "%2Fideas-and-inspiration%2Fproud%2F", "interactionText": "Proud" } }' >Proud</a> <a href="/ideas-and-inspiration/sport/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Sport", "interactionUrl": "%2Fideas-and-inspiration%2Fsport%2F", "interactionText": "Sport" } }' >Sport</a> <a href="/ideas-and-inspiration/film-and-tv/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Film%20and%20TV", "interactionUrl": "%2Fideas-and-inspiration%2Ffilm-and-tv%2F", "interactionText": "Film%20and%20TV" } }' >Film and TV</a> <a href="/visitor-information/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Visitor%20Information", "interactionUrl": "%2Fvisitor-information%2F", "interactionText": "Visitor%20Information" } }' >Visitor Information</a> <a href="/visitor-information/travel-information/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Travel%20Information", "interactionUrl": "%2Fvisitor-information%2Ftravel-information%2F", "interactionText": "Travel%20Information" } }' >Travel Information</a> <a href="/visitor-information/travel-information/getting-here/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Getting%20Here", "interactionUrl": "%2Fvisitor-information%2Ftravel-information%2Fgetting-here%2F", "interactionText": "Getting%20Here" } }' >Getting Here</a> <a href="/visitor-information/travel-information/getting-around/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Getting%20Around", "interactionUrl": "%2Fvisitor-information%2Ftravel-information%2Fgetting-around%2F", "interactionText": "Getting%20Around" } }' >Getting Around</a> <a href="/visitor-information/travel-information/travelling-around-northern-england/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Travelling%20Around%20Northern%20England", "interactionUrl": "%2Fvisitor-information%2Ftravel-information%2Ftravelling-around-northern-england%2F", "interactionText": "Travelling%20Around%20Northern%20England" } }' >Travelling Around Northern England</a> <a href="/visitor-information/travel-information/manchester-airport/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Manchester%20Airport", "interactionUrl": "%2Fvisitor-information%2Ftravel-information%2Fmanchester-airport%2F", "interactionText": "Manchester%20Airport" } }' >Manchester Airport</a> <a href="/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Direct%20Flights%20to%20and%20from%20Manchester%20Airport", "interactionUrl": "%2Fvisitor-information%2Ftravel-information%2Fmanchester-airport%2Fdirect-flights-to-and-from-manchester-airport%2F", "interactionText": "Direct%20Flights%20to%20and%20from%20Manchester%20Airport" } }' >Direct Flights to and from Manchester Airport</a> <a href="/visitor-information/travel-information/bike-hire-in-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Bike%20hire%20in%20Manchester", "interactionUrl": "%2Fvisitor-information%2Ftravel-information%2Fbike-hire-in-manchester%2F", "interactionText": "Bike%20hire%20in%20Manchester" } }' >Bike hire in Manchester</a> <a href="/visitor-information/visitor-information-centre/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Visitor%20Information%20Centres", "interactionUrl": "%2Fvisitor-information%2Fvisitor-information-centre%2F", "interactionText": "Visitor%20Information%20Centres" } }' >Visitor Information Centres</a> <a href="/visitor-information/maps/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Maps", "interactionUrl": "%2Fvisitor-information%2Fmaps%2F", "interactionText": "Maps" } }' >Maps</a> <a href="/visitor-information/accessible-manchester/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Accessible%20Manchester", "interactionUrl": "%2Fvisitor-information%2Faccessible-manchester%2F", "interactionText": "Accessible%20Manchester" } }' >Accessible Manchester</a> <a href="/visitor-information/left-luggage/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Luggage%20Storage", "interactionUrl": "%2Fvisitor-information%2Fleft-luggage%2F", "interactionText": "Luggage%20Storage" } }' >Luggage Storage</a> <a href="/visitor-information/bureau-de-change/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Bureau%20de%20Change", "interactionUrl": "%2Fvisitor-information%2Fbureau-de-change%2F", "interactionText": "Bureau%20de%20Change" } }' >Bureau de Change</a> <a href="/visitor-information/wi-fi/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Free%20Wi-Fi", "interactionUrl": "%2Fvisitor-information%2Fwi-fi%2F", "interactionText": "Free%20Wi-Fi" } }' >Free Wi-Fi</a> <a href="/visitor-information/weather/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Weather", "interactionUrl": "%2Fvisitor-information%2Fweather%2F", "interactionText": "Weather" } }' >Weather</a> <a href="/visitor-information/manchester-accommodation-business-improvement-district/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Accommodation%20Business%20Improvement%20District", "interactionUrl": "%2Fvisitor-information%2Fmanchester-accommodation-business-improvement-district%2F", "interactionText": "Accommodation%20Business%20Improvement%20District" } }' >Accommodation Business Improvement District</a> <a href="/visitor-information/travel-trade/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Travel%20Trade%20and%20Groups", "interactionUrl": "%2Fvisitor-information%2Ftravel-trade%2F", "interactionText": "Travel%20Trade%20and%20Groups" } }' >Travel Trade and Groups</a> <a href="/visitor-information/visit-manchester-well/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Visit%20Manchester%20Well", "interactionUrl": "%2Fvisitor-information%2Fvisit-manchester-well%2F", "interactionText": "Visit%20Manchester%20Well" } }' >Visit Manchester Well</a> <a href="/articles/post/" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Post", "interactionUrl": "%2Farticles%2Fpost%2F", "interactionText": "Post" } }' >Post</a> </nav> </noscript> <button class="menu-toggle" type="button" aria-label="toggle menu" aria-haspopup="true" aria-expanded="false" aria-controls="primary-site-menu" data-action="toggle-menu" > <span class="hamburger-inner"></span> </button> <nav class="navigation navigation-dropdown primary desktop" role="navigation" data-primary-nav-desktop data-gtm-vars='{ "tClient_ga4": { "eventName": "navigation_click", "navType": "Main", "interactionSource": "navigation" } }' > <script type="text/template" data-nav-item-template>{{+linkTracking}} data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "{{%%data.title}}", "interactionSource": "navigation", "interactionUrl": "{{%%href}}", "interactionText": "{{%%data.title}}" } }' {{/}} {{+nav_items}} {{+nav_items_helper}} {{!-- This nested partial is necessary to make this partial recursive because helpers.partial only outputs the inner text of the partial, not the partial name. Please do not remove! --}} {{#shownchildren}} {{~exec(function() { if (!data.isLazyLoaded) { helpers.var.depth = 1; } else { helpers.var.depth = data.depth; } })}} <div class="nav-item level-{{~var.depth}} {{data.section}}" data-id="{{data.id}}" data-nav-item> <div class="nav-item-control level-{{~var.depth}}"> <a class="nav-link" href="{{href}}" target="{{target}}" {{>linkTracking}} > {{data.title}} </a> {{:shownchildren}} <button id="{{data.id}}" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> {{/}} </div> {{:shownchildren}} <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-{{~var.depth}} {{:isLazyLoaded}} {{:shownChildren.0}}rendered{{/}} {{/}}" aria-labelledby="{{data.id}}" data-parent-id="{{data.id}}" data-start="{{data.folderHref}}" data-section="{{data.section}}" data-dropdown-menu style="display: none" > {{:isLazyLoaded}} {{>nav_items_helper}} {{/}} </div> {{/}} </div> {{/}} {{/}} {{>nav_items_helper}} {{/}} {{>nav_items}}</script> <div class="nav-item level-1 main" data-id="64c8e6f25508b33f5c9f7d68" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Home", "interactionSource": "navigation", "interactionUrl": "%2F", "interactionText": "Home" } }' > Home </a> </div> </div> <div class="nav-item level-1 main" data-id="6525e38b58d8a262bf5e7287" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/things-to-see-and-do/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Things%20To%20Do", "interactionSource": "navigation", "interactionUrl": "%2Fthings-to-see-and-do%2F", "interactionText": "Things%20To%20Do" } }' > Things To Do </a> <button id="6525e38b58d8a262bf5e7287" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38b58d8a262bf5e7287" data-parent-id="6525e38b58d8a262bf5e7287" data-start="/things-to-see-and-do/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38b58d8a262bf5e72d3" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/whats-on/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "What%27s%20On", "interactionSource": "navigation", "interactionUrl": "%2Fwhats-on%2F", "interactionText": "What%27s%20On" } }' > What's On </a> <button id="6525e38b58d8a262bf5e72d3" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38b58d8a262bf5e72d3" data-parent-id="6525e38b58d8a262bf5e72d3" data-start="/whats-on/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38b58d8a262bf5e731f" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/shopping/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Shopping", "interactionSource": "navigation", "interactionUrl": "%2Fshopping%2F", "interactionText": "Shopping" } }' > Shopping </a> <button id="6525e38b58d8a262bf5e731f" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38b58d8a262bf5e731f" data-parent-id="6525e38b58d8a262bf5e731f" data-start="/shopping/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38c58d8a262bf5e736b" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/where-to-stay/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Where%20to%20Stay", "interactionSource": "navigation", "interactionUrl": "%2Fwhere-to-stay%2F", "interactionText": "Where%20to%20Stay" } }' > Where to Stay </a> <button id="6525e38c58d8a262bf5e736b" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38c58d8a262bf5e736b" data-parent-id="6525e38c58d8a262bf5e736b" data-start="/where-to-stay/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38c58d8a262bf5e73b7" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/food-and-drink/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Food%20%26%20Drink", "interactionSource": "navigation", "interactionUrl": "%2Ffood-and-drink%2F", "interactionText": "Food%20%26%20Drink" } }' > Food & Drink </a> <button id="6525e38c58d8a262bf5e73b7" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38c58d8a262bf5e73b7" data-parent-id="6525e38c58d8a262bf5e73b7" data-start="/food-and-drink/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38d58d8a262bf5e7403" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/ideas-and-inspiration/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Ideas%20%26%20Inspiration", "interactionSource": "navigation", "interactionUrl": "%2Fideas-and-inspiration%2F", "interactionText": "Ideas%20%26%20Inspiration" } }' > Ideas & Inspiration </a> <button id="6525e38d58d8a262bf5e7403" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38d58d8a262bf5e7403" data-parent-id="6525e38d58d8a262bf5e7403" data-start="/ideas-and-inspiration/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38d58d8a262bf5e744f" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/visitor-information/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Visitor%20Information", "interactionSource": "navigation", "interactionUrl": "%2Fvisitor-information%2F", "interactionText": "Visitor%20Information" } }' > Visitor Information </a> <button id="6525e38d58d8a262bf5e744f" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38d58d8a262bf5e744f" data-parent-id="6525e38d58d8a262bf5e744f" data-start="/visitor-information/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> </nav> <nav class="navigation primary mobile hide" role="navigation" data-primary-nav-mobile data-gtm-vars='{ "tClient_ga4": { "eventName": "navigation_click", "navType": "Main", "interactionSource": "navigation" } }' > <script type="text/template" data-nav-item-template>{{+linkTracking}} data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "{{%%data.title}}", "interactionSource": "navigation", "interactionUrl": "{{%%href}}", "interactionText": "{{%%data.title}}" } }' {{/}} {{+nav_items}} {{+nav_items_helper}} {{!-- This nested partial is necessary to make this partial recursive because helpers.partial only outputs the inner text of the partial, not the partial name. Please do not remove! --}} {{#shownchildren}} {{~exec(function() { if (!data.isLazyLoaded) { helpers.var.depth = 1; } else { helpers.var.depth = data.depth; } })}} <div class="nav-item level-{{~var.depth}} {{data.section}}" data-id="{{data.id}}" data-nav-item> <div class="nav-item-control level-{{~var.depth}}"> <a class="nav-link" href="{{href}}" target="{{target}}" {{>linkTracking}} > {{data.title}} </a> {{:shownchildren}} <button id="{{data.id}}" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> {{/}} </div> {{:shownchildren}} <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-{{~var.depth}} {{:isLazyLoaded}} {{:shownChildren.0}}rendered{{/}} {{/}}" aria-labelledby="{{data.id}}" data-parent-id="{{data.id}}" data-start="{{data.folderHref}}" data-section="{{data.section}}" data-dropdown-menu style="display: none" > {{:isLazyLoaded}} {{>nav_items_helper}} {{/}} </div> {{/}} </div> {{/}} {{/}} {{>nav_items_helper}} {{/}} {{>nav_items}}</script> <div class="nav-item level-1 main" data-id="64c8e6f25508b33f5c9f7d68" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Home", "interactionSource": "navigation", "interactionUrl": "%2F", "interactionText": "Home" } }' > Home </a> </div> </div> <div class="nav-item level-1 main" data-id="6525e38b58d8a262bf5e7287" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/things-to-see-and-do/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Things%20To%20Do", "interactionSource": "navigation", "interactionUrl": "%2Fthings-to-see-and-do%2F", "interactionText": "Things%20To%20Do" } }' > Things To Do </a> <button id="6525e38b58d8a262bf5e7287" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38b58d8a262bf5e7287" data-parent-id="6525e38b58d8a262bf5e7287" data-start="/things-to-see-and-do/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38b58d8a262bf5e72d3" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/whats-on/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "What%27s%20On", "interactionSource": "navigation", "interactionUrl": "%2Fwhats-on%2F", "interactionText": "What%27s%20On" } }' > What's On </a> <button id="6525e38b58d8a262bf5e72d3" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38b58d8a262bf5e72d3" data-parent-id="6525e38b58d8a262bf5e72d3" data-start="/whats-on/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38b58d8a262bf5e731f" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/shopping/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Shopping", "interactionSource": "navigation", "interactionUrl": "%2Fshopping%2F", "interactionText": "Shopping" } }' > Shopping </a> <button id="6525e38b58d8a262bf5e731f" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38b58d8a262bf5e731f" data-parent-id="6525e38b58d8a262bf5e731f" data-start="/shopping/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38c58d8a262bf5e736b" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/where-to-stay/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Where%20to%20Stay", "interactionSource": "navigation", "interactionUrl": "%2Fwhere-to-stay%2F", "interactionText": "Where%20to%20Stay" } }' > Where to Stay </a> <button id="6525e38c58d8a262bf5e736b" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38c58d8a262bf5e736b" data-parent-id="6525e38c58d8a262bf5e736b" data-start="/where-to-stay/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38c58d8a262bf5e73b7" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/food-and-drink/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Food%20%26%20Drink", "interactionSource": "navigation", "interactionUrl": "%2Ffood-and-drink%2F", "interactionText": "Food%20%26%20Drink" } }' > Food & Drink </a> <button id="6525e38c58d8a262bf5e73b7" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38c58d8a262bf5e73b7" data-parent-id="6525e38c58d8a262bf5e73b7" data-start="/food-and-drink/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38d58d8a262bf5e7403" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/ideas-and-inspiration/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Ideas%20%26%20Inspiration", "interactionSource": "navigation", "interactionUrl": "%2Fideas-and-inspiration%2F", "interactionText": "Ideas%20%26%20Inspiration" } }' > Ideas & Inspiration </a> <button id="6525e38d58d8a262bf5e7403" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38d58d8a262bf5e7403" data-parent-id="6525e38d58d8a262bf5e7403" data-start="/ideas-and-inspiration/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> <div class="nav-item level-1 main" data-id="6525e38d58d8a262bf5e744f" data-nav-item> <div class="nav-item-control level-1"> <a class="nav-link" href="/visitor-information/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "linkObject": "Visitor%20Information", "interactionSource": "navigation", "interactionUrl": "%2Fvisitor-information%2F", "interactionText": "Visitor%20Information" } }' > Visitor Information </a> <button id="6525e38d58d8a262bf5e744f" class="dropdown-toggle" aria-label="open submenu" aria-haspopup="true" aria-expanded="false" data-dropdown-toggle > <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"> </button> </div> <div class="dropdown-helper" data-dropdown-helper></div> <div class="dropdown-menu level-1 " aria-labelledby="6525e38d58d8a262bf5e744f" data-parent-id="6525e38d58d8a262bf5e744f" data-start="/visitor-information/" data-section="main" data-dropdown-menu style="display: none" > </div> </div> </nav> </div> <script> require([ 'jquery', 'plugins_nav_custom_nav_desktop_dropdown', 'plugins_nav_custom_nav_mobile', ], function($, navDesktop, navMobile) { var root = $('[data-guid="209612e0-263d-4203-bbf1-5f09f8f59d98"]'); var menuToggle = root.find('[data-action="toggle-menu"]'); var bodyOverlay = $('[data-body-overlay]'); var navTreeDepth = 3; navDesktop.init(root, '[data-primary-nav-desktop]', navTreeDepth); navMobile.init(root, '[data-primary-nav-mobile]', '[data-main-nav-cont]', navTreeDepth); function toggleMenu() { document.body.classList.toggle('hamburger-open'); menuToggle.toggleClass('active'); menuToggle.attr('aria-expanded', menuToggle.hasClass('active')); document.querySelector('#primary-site-menu').classList.toggle('active'); } [bodyOverlay, menuToggle].forEach(toggle => toggle.on('click', () => toggleMenu())); }); </script></div> </div> <div class="secondary-nav" data-secondary-nav-cont> <!-- --> <div data-civid="66e1621861c952fb532c6261" class="contentRender contentRender_4 contentRender_type_widget contentRender_name_plugins_collections_type_custom_slides contentRender_name_plugins_collections_template_custom_navigation_card" data-sv-time="151" data-sv-index="4" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <style>.navigation-cards-2-across .img-cont { aspect-ratio: 394 / 547; }@media (min-width: 640px) { .navigation-cards-2-across .img-cont { aspect-ratio: 394 / 547; } }</style> <section class="ccl-widget core-cards navigation-cards-2-across" data-slides-across="1" data-guid="70edcd9b-57ad-480f-a08c-d1eee1c611b0" data-js="plugins_collections_custom_collection_default_package" data-gtm-vars='{ "tClient_ga4" : { "eventName" : "widget_interaction", "widgetName" : "Navigation Card", "itemType" : "slides", "interactionSource" : "widget" } }' style="opacity: 0;" > <div class="slides" data-slides> <article class="slide"> <div class="inner" data-gtm-vars='{ "tClient_ga4" : { "interactionSource" : "widget", "itemName" : "Buy%20the%20Visit%20Manchester%20Pass" } }'> <div class="slide-top"> <div class="img-cont"> <a data-asset href="https://manchester-pass.com/" target="_blank" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Image", "interactionUrl": "https://manchester-pass.com/" } }'> <picture> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_547,q_65,w_394,x_2170,y_2304/v1/clients/manchester/VM_Pass_Social_Ads_8cf7ca9a-db66-4ec9-95f1-00b5ac4b59a3.jpg" media="screen and (min-width: 640px)" type="image/avif" width="394" height="547" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_547,q_65,w_394,x_2170,y_2304/v1/clients/manchester/VM_Pass_Social_Ads_8cf7ca9a-db66-4ec9-95f1-00b5ac4b59a3.jpg" media="screen and (min-width: 640px)" type="image/webp" width="394" height="547" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_547,q_65,w_394,x_2170,y_2304/v1/clients/manchester/VM_Pass_Social_Ads_8cf7ca9a-db66-4ec9-95f1-00b5ac4b59a3.jpg" media="screen and (min-width: 640px)" type="image/jpeg" width="394" height="547" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_547,q_65,w_394,x_2170,y_2304/v1/clients/manchester/VM_Pass_Social_Ads_8cf7ca9a-db66-4ec9-95f1-00b5ac4b59a3.jpg" type="image/avif" width="394" height="547" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_547,q_65,w_394,x_2170,y_2304/v1/clients/manchester/VM_Pass_Social_Ads_8cf7ca9a-db66-4ec9-95f1-00b5ac4b59a3.jpg" type="image/webp" width="394" height="547" /> <img class="slide-img" src="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_547,q_65,w_394,x_2170,y_2304/v1/clients/manchester/VM_Pass_Social_Ads_8cf7ca9a-db66-4ec9-95f1-00b5ac4b59a3.jpg" alt="Visit Manchester Pass" loading="lazy" fetchpriority="low" width="394" height="547" onload="this.classList.add('loaded')" /> </picture> </a> </div> </div> <div class="content-section"> <div class="inner"> <h2 class="slide-title"> <a href="https://manchester-pass.com/" target="_blank" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Title", "interactionUrl": "https%3A%2F%2Fmanchester-pass.com%2F", "interactionText" : "Buy%20the%20Visit%20Manchester%20Pass" } }'>Buy the Visit Manchester Pass</a> </h2> <p>Discover Manchester with the Visit Manchester Pass - Entry into 13 of Manchester's top attractions plus over 30 discounts and offers.</p> </div> <footer class="slide-footer"> <a class="read-more" href="https://manchester-pass.com/" target="_blank" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Read%20More", "interactionUrl": "https%3A%2F%2Fmanchester-pass.com%2F", "interactionText" : "Read%20More" } }'>Read More</a> </footer> </div> </div> </article> </div> </section></div> <!-- --> </div> <div class="mobile-footer-nav" data-footer-nav-cont> </div> <div class="enews-cont" data-enews-cont> </div> </div> </div> <div class="body-overlay" data-body-overlay></div> <script> require(['plugins_common_custom_utils', 'domReady!'], function(utils) { /* Constants */ const els = { header: document.querySelector(`[data-guid="870196f1-0a4e-4f37-8350-f4a2247f6b21"]`), body: document.body, toggleBtn: document.querySelector('[data-guid="870196f1-0a4e-4f37-8350-f4a2247f6b21"] [data-hamburger-dropdown-toggle]'), siteMenu: document.querySelector('[data-site-nav-cont]'), overlay: document.querySelector('[data-body-overlay]'), heroContainer: document.querySelector('#slideshow-container'), } const focusableQuery = 'a, area, button, input, object, select, textarea, [tabindex]'; /* Utility Functions */ function hasHero() { return els.heroContainer?.children.length > 0; } function isMenuOpen() { return els.siteMenu.classList.contains('active'); } function enableElement(el) { if (el.getAttribute('data-sv-disabled-tabindex')) { el.setAttribute('tabindex', el.getAttribute('data-sv-disabled-tabindex')); el.removeAttribute('data-sv-disabled-tabindex'); } el.removeAttribute('disabled'); el.removeAttribute('data-sv-disabled-menu-open'); } function disableElement(el) { if (el.getAttribute('tabindex') >= 0) { el.setAttribute('data-sv-disabled-tabindex', el.getAttribute('tabindex') || 0); el.setAttribute('tabindex', -1); } el.setAttribute('disabled', true); el.setAttribute('data-sv-disabled-menu-open', true); } function enablePageElements() { document.querySelectorAll('[data-sv-hidden-menu-open]').forEach((el) => { el.removeAttribute('aria-hidden'); el.removeAttribute('data-sv-hidden-menu-open'); }) document.querySelectorAll('[data-sv-disabled-menu-open]').forEach(enableElement); els.siteMenu.querySelectorAll(focusableQuery).forEach(disableElement); } function enableMenuElements() { document.querySelectorAll('.root-panel > *:not(.header-container):not([aria-hidden="true"])').forEach((el) => { el.setAttribute('aria-hidden', true); el.setAttribute('data-sv-hidden-menu-open', true); }); document.querySelectorAll(focusableQuery).forEach((el) => { if (!els.header.contains(el)) { disableElement(el); } }); els.siteMenu.querySelectorAll(focusableQuery).forEach(enableElement); } function fixBodyScroll() { document.documentElement.style.overflowY = 'hidden'; } function unfixBodyScroll() { document.documentElement.style.overflowY = 'auto'; } function openMenu() { enableMenuElements(); els.toggleBtn.setAttribute('aria-expanded', true); els.toggleBtn.classList.add('active'); els.siteMenu.classList.add('active'); els.body.classList.add('hamburger-open'); setTimeout(() => { els.siteMenu.classList.add('transitioned'); }, 1) function handleEscape(event) { if (event.key === 'Escape') { event.preventDefault(); closeMenu(); window.removeEventListener('keydown', handleEscape); } } window.addEventListener('keydown', handleEscape); if (window.innerWidth > 1024) { fixBodyScroll(); } } function closeMenu() { enablePageElements(); els.toggleBtn.focus(); els.toggleBtn.classList.remove('active'); els.toggleBtn.setAttribute('aria-expanded', false); els.body.classList.remove('hamburger-open'); els.siteMenu.addEventListener('transitionend', () => { els.siteMenu.classList.remove('active'); }, { once: true }); els.siteMenu.classList.remove('transitioned'); unfixBodyScroll(); } /* Init */ if (hasHero()) { els.header.classList.add('with-hero'); } // Menu button click els.toggleBtn.addEventListener('click', () => { isMenuOpen() ? closeMenu() : openMenu(); }); // Menu button keyboard events els.toggleBtn.addEventListener('keydown', (event) => { if (event.key === 'ArrowDown') { event.preventDefault(); openMenu(); } if (event.key === 'ArrowUp') { event.preventDefault(); closeMenu(); } }); // Close menu if overlay clicked els.overlay.addEventListener('click', closeMenu); // Prevent scroll trapping on orientation change function resizeHandler() { if (window.innerWidth > 1024) { if ( isMenuOpen() && document.documentElement.style.overflowY !== 'hidden' ) { window.scrollTo({ top: 0 }); fixBodyScroll(); } } else if (document.documentElement.style.overflowY === 'hidden') { unfixBodyScroll(); } } ['resize', 'orientationchange'].forEach((eventName) => { window.addEventListener(eventName, utils.debounce(resizeHandler, 200)); }); // unhide siteMenu display override els.siteMenu.removeAttribute('style'); }); </script></div> </div> <div id="slideshow-container" class="slideshow-container"> <div data-civid="67ac6dfcd6fe353ee10a16d7" class="contentRender contentRender_9 contentRender_type_widget contentRender_name_plugins_collections_type_custom_header_slides contentRender_name_plugins_collections_template_custom_core_hero_image" data-sv-time="140" data-sv-index="9" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <style>.hero-image .img-cont { aspect-ratio: 640 / 412; }@media (min-width: 375px) { .hero-image .img-cont { aspect-ratio: 640 / 412; } }@media (min-width: 412px) { .hero-image .img-cont { aspect-ratio: 640 / 412; } }@media (min-width: 425px) { .hero-image .img-cont { aspect-ratio: 640 / 412; } }@media (min-width: 640px) { .hero-image .img-cont { aspect-ratio: 768 / 375; } }@media (min-width: 768px) { .hero-image .img-cont { aspect-ratio: 1024 / 500; } }@media (min-width: 1024px) { .hero-image .img-cont { aspect-ratio: 1440 / 702; } }@media (min-width: 1440px) { .hero-image .img-cont { aspect-ratio: 1920 / 936; } }</style> <section class="ccl-widget core-hero-image hero-image hide-content" data-guid="49e14814-7184-468f-8a90-3d889a427afb" data-js="plugins_collections_custom_collection_default_package" data-gtm-vars='{ "tClient_ga4" : { "eventName" : "widget_interaction", "widgetName" : "Hero Image", "itemType" : "slides", "interactionSource" : "widget" } }' style="opacity: 0;" > <div class="slides" data-slides> <article class="slide overlap-image "> <div class="inner" data-gtm-vars='{ "tClient_ga4" : { "interactionSource" : "widget", "itemName" : "RHS%20Bridgewater%20Family" } }'> <div class="img-cont"> <a data-asset href="https://www.visitmanchester.com/listing/rhs-garden-bridgewater/37075101/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Image", "interactionUrl" : "https://www.visitmanchester.com/listing/rhs-garden-bridgewater/37075101/" } }' > <picture> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_936,q_65,w_1920,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 1440px)" type="image/avif" width="1920" height="936" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_936,q_65,w_1920,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 1440px)" type="image/webp" width="1920" height="936" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_936,q_65,w_1920,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 1440px)" type="image/jpeg" width="1920" height="936" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_702,q_65,w_1440,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 1024px)" type="image/avif" width="1440" height="702" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_702,q_65,w_1440,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 1024px)" type="image/webp" width="1440" height="702" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_702,q_65,w_1440,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 1024px)" type="image/jpeg" width="1440" height="702" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_500,q_65,w_1024,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 768px)" type="image/avif" width="1024" height="500" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_500,q_65,w_1024,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 768px)" type="image/webp" width="1024" height="500" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_500,q_65,w_1024,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 768px)" type="image/jpeg" width="1024" height="500" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_375,q_65,w_768,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 640px)" type="image/avif" width="768" height="375" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_375,q_65,w_768,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 640px)" type="image/webp" width="768" height="375" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_375,q_65,w_768,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 640px)" type="image/jpeg" width="768" height="375" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 425px)" type="image/avif" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 425px)" type="image/webp" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 425px)" type="image/jpeg" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 412px)" type="image/avif" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 412px)" type="image/webp" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 412px)" type="image/jpeg" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 375px)" type="image/avif" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 375px)" type="image/webp" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" media="screen and (min-width: 375px)" type="image/jpeg" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" type="image/avif" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" type="image/webp" width="640" height="412" /> <img class="slide-img" src="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_412,q_65,w_640,x_1043,y_602/v1/clients/manchester/20220730_RHS_Bridgewater_Summer_Card5_319final_large_00819644-8ccf-4614-a4e9-470fce96aaed.jpg" alt="Adult and child sat on bench in front of plants at RHS Bridgewater" loading="eager" fetchpriority="high" width="640" height="412" onload="this.classList.add('loaded')" /> </picture> </a> </div> </div> </article> </div> </section> </div> </div> <div id="main-content" class="content"> <div data-civid="65270885dc7bbd20d1e35d00" class="contentRender contentRender_10 contentRender_type_widget contentRender_name_plugins_nav_breadcrumb" data-sv-time="102" data-sv-index="10" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <nav class="nav-list" role="navigation" aria-label="Breadcrumb" data-guid="087e35b0-c397-4664-a97f-aae8cab00f5f" data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "navType": "Breadcrumb", "interactionSource": "navigation" } }' > <ul class="interior-nav"> <li class="item" data-id=""> <a href="/" target="" title="" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Home", "interactionUrl": "/", "interactionText": "Home" } }' > Home </a> </li> <li class="item" data-id="6525e38b58d8a262bf5e7287"> <a href="/things-to-see-and-do/" target="_self" title="" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Things%20To%20Do", "interactionUrl": "%2Fthings-to-see-and-do%2F", "interactionText": "Things%20To%20Do" } }' > Things To Do </a> </li> <li class="item current" data-id="669f874d9e4dca392466b9d6"> <a href="/things-to-see-and-do/sustainable-things-to-do/" target="_self" aria-current="page" title="" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Sustainable%20things%20to%20do", "interactionUrl": "%2Fthings-to-see-and-do%2Fsustainable-things-to-do%2F", "interactionText": "Sustainable%20things%20to%20do" } }' > Sustainable things to do </a> </li> </ul> </nav></div><div data-civid="67ac6dfcd6fe353ee10a16d9" class="contentRender contentRender_11 contentRender_type_widget contentRender_name_plugins_common_pagetitle" data-sv-time="40" data-sv-index="11" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="page-title" data-guid="95cba1fc-b93d-43b8-9708-f64db25cf4c8"> <h1> Sustainable things to do in Manchester </h1> </div></div><div data-civid="67ac6e0dd6fe353ee10a176f" class="contentRender contentRender_12 contentRender_type_panel contentRender_name_plugins_common_read_more" data-sv-time="0" data-sv-index="12" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <section class="panel-read-more" data-js="plugins_common_custom_read_more" data-guid="02350c13-8f3d-4936-8879-093f3a07e062" data-more-caption="Read More" data-less-caption="Read Less" > <div class="extendable extended"> <div data-civid="67ac6ecdd6fe353ee10a18ca" class="contentRender contentRender_13 contentRender_type_widget contentRender_name_plugins_core_textbox" data-sv-time="76" data-sv-index="13" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'><section data-sv-core-textbox data-guid="b7e0f681-00e4-4fa5-a071-fd74dc80348a"> <p>Manchester is a city that thrives on culture, sport, and entertainment &#x2013; and now, more than ever, sustainability is at the heart of many of our top attractions. Whether you&apos;re a football fan, a theatre lover, or a music fanatic, you can enjoy the best of Manchester while supporting venues that are committed to a greener future.</p> <h3><strong>Sustainable Attractions in Manchester</strong></h3> <p>Many of Manchester&#x2019;s most popular attractions have formal sustainability policies or have been accredited by third-party schemes. From museums and galleries to concert halls and stadiums like the <a data-sv-linklookup-id="32048101" data-sv-linklookup-type="plugins_listings_listing" data-sv-targetauto="true" href="https://www.visitmanchester.com/listing/manchester-city-football-club-stadium-and-club-tour/32048101/" target="_self">Manchester City</a> ground, these venues are actively working towards reducing their environmental impact.</p> <h3><strong>A Citywide Commitment to Sustainability</strong></h3> <p>Manchester is home to sustainable initiatives. Through collaboration and innovation, these venues are making meaningful progress in reducing their carbon footprint.</p> <h3><strong>Always Striving for a Greener Future</strong></h3> <p>Sustainability is a key part of Manchester&#x2019;s mission, with targets that are continuously reviewed and improved. Many organisations are leading the way in measuring and reporting their environmental impact, while also focusing on sustainable food choices, waste reduction, and eco-friendly travel options.</p> <h3><strong>Explore and Support Green Initiatives</strong></h3> <p>From supporting local sustainable businesses to choosing attractions that prioritise ethical practices, there are plenty of ways to experience Manchester while making a positive impact.</p> </section></div> </div> <button class="read-more-btn" aria-hidden="true">Read More</button> </section></div><div data-civid="67ac6dfcd6fe353ee10a16dd" class="contentRender contentRender_14 contentRender_type_widget contentRender_name_plugins_collections_type_custom_slides contentRender_name_plugins_collections_template_custom_core_slider_preview_4_across_fullwidth_black" data-sv-time="101" data-sv-index="14" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'> <style>.preview-slider-4-across-fullwidth blackbg .img-cont { aspect-ratio: 390 / 555; }@media (min-width: 640px) { .preview-slider-4-across-fullwidth blackbg .img-cont { aspect-ratio: 394 / 561; } }@media (min-width: 1024px) { .preview-slider-4-across-fullwidth blackbg .img-cont { aspect-ratio: 394 / 561; } }@media (min-width: 1440px) { .preview-slider-4-across-fullwidth blackbg .img-cont { aspect-ratio: 394 / 561; } }</style> <!-- no slides selected --> </div><div data-civid="64d4b19e938c6344c3e839fe" class="contentRender contentRender_15 contentRender_type_widget contentRender_name_plugins_common_embed" data-sv-time="40" data-sv-index="15" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="custom-embed full" data-sv-embed-widget="true" data-guid="dd0f4b49-771b-4048-83ec-29e99e9acc10"> <div class="embed-container"> </div> </div> </div><div data-civid="67ac6dfcd6fe353ee10a16df" class="contentRender contentRender_16 contentRender_type_widget contentRender_name_plugins_common_listings_index" data-sv-time="104" data-sv-index="16" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div id="layoutjs_c72c8e1a-a300-44e2-9590-a116db382658" class="layoutjsContainer" data-gtm-vars='{ "tCore" : { "category" : "layoutjs_plugins_common_listings_index" } }'> <script id="ljs_data_c72c8e1a-a300-44e2-9590-a116db382658" type="text/template"> {"sections":{},"data":{"show_search_box":"false","show_availability":"false","show_region":"true","use_cat_groups":"off","cats":["3","13"],"regions":["411","81","101","131","111","161","151","181","141","191","51","61"],"amenities_search":"custom","custom_amenities":["Sustainability_Biodiversity Policy","Sustainability_Formal Written Sustainability","Sustainability_Green Key Certificate","Sustainability_Green Tourism Business Scheme","Sustainability_Third Party Sustainable Certificate"],"default_view":"grid"},"guid":"c72c8e1a-a300-44e2-9590-a116db382658","customSettings":{},"widgetArgs":{"nav":{"_id":"669f874d9e4dca392466b9d6","title":"Sustainable things to do","folder":"sustainable-things-to-do","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-23T10:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"65720134753646499e16691e","description":"<p>Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.</p>","meta_title":"Sustainable things to do in Manchester","meta_description":"Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.","tags_ids":["6527eb2040495a2d33806cc6"],"parent_id":"6525e38b58d8a262bf5e7287","parents_ids":["6525e38b58d8a262bf5e7287"],"content_owner":"default","site_name":"primary","section":"main","updated":"2025-02-12T09:50:13.640Z","title_sort":"sustainable things to do","site_section":"primary.main","published":true,"sortorder":8,"created":"2024-07-23T10:34:53.299Z","amp":false,"cms_title":"Sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","cms_title_sort":"sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","folderHref":"/things-to-see-and-do/sustainable-things-to-do/","version_id":"67ac6ed5d6fe353ee10a18fe","image":{"_id":"65720134753646499e16691e","legacy_id":"img-new-exhibition-opening-at-elizabeth-gaskell-s-house","title":"New exhibition opening at Elizabeth Gaskell鈥檚 House","title_sort":"new exhibition opening at elizabeth gaskell鈥檚 house","content_owner":"default","tags_ids":["65720062753646499e1664aa"],"created":"1970-01-01T00:00:00.000Z","updated":"2023-12-07T17:30:25.637Z","private":false,"resource_raw":{"asset_id":"c460c86fae1b7c383cd9047abedbbef7","public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6","version":1701970228,"version_id":"a80233a4c1370ae8a1272fe66834cebc","signature":"0c6a3518dc9f25f9bc9ba563332dee91c2744f11","width":1200,"height":896,"format":"jpg","resource_type":"image","created_at":"2023-12-07T17:30:28.000Z","pages":1,"bytes":980555,"type":"upload","etag":"1ad9ba437f5e5313cf75e44a63e270f3","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"Optimized-Elizabeth Gaskell's House (2)","api_key":"756897581616859"},"deleted":false,"resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6"}},"id":"65720134753646499e16691e","type":"image","inAssetRequest":false,"alt_text":"New exhibition opening at Elizabeth Gaskell鈥檚 House","expired":false},"locale_count":0,"tags":[{"_id":"6527eb2040495a2d33806cc6","tag":"Sustainability","sort_tag":"sustainability","updated":"2023-10-12T12:48:32.082Z","created":"2023-10-12T12:48:32.082Z","id":"6527eb2040495a2d33806cc6"}],"id":"669f874d9e4dca392466b9d6","parent_id_string":"6525e38b58d8a262bf5e7287","version_id_string":"67ac6ed5d6fe353ee10a18fe","href":"/things-to-see-and-do/sustainable-things-to-do/","absoluteHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","absoluteFolderHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","metaTitle":"Sustainable things to do in Manchester","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":16,"guid":"c72c8e1a-a300-44e2-9590-a116db382658","data":{"show_search_box":"false","show_availability":"false","show_region":"true","use_cat_groups":"off","cats":["3","13"],"regions":["411","81","101","131","111","161","151","181","141","191","51","61"],"amenities_search":"custom","custom_amenities":["Sustainability_Biodiversity Policy","Sustainability_Formal Written Sustainability","Sustainability_Green Key Certificate","Sustainability_Green Tourism Business Scheme","Sustainability_Third Party Sustainable Certificate"],"default_view":"grid"},"civ":{"instance":{"type":"widget","name":"plugins_common_listings_index","site_name":"primary","saved":false,"created":"2025-02-12T09:50:13.620Z","updated":"2025-02-12T09:50:13.620Z","deleted":false,"id":"67ac6dfcd6fe353ee10a16df","version_id_string":"67ac6dfcd6fe353ee10a16e0"},"version":{"data":{"show_search_box":"false","show_availability":"false","show_region":"true","use_cat_groups":"off","cats":["3","13"],"regions":["411","81","101","131","111","161","151","181","141","191","51","61"],"amenities_search":"custom","custom_amenities":["Sustainability_Biodiversity Policy","Sustainability_Formal Written Sustainability","Sustainability_Green Key Certificate","Sustainability_Green Tourism Business Scheme","Sustainability_Third Party Sustainable Certificate"],"default_view":"grid"},"created":"2025-02-12T09:50:13.623Z","id":"67ac6dfcd6fe353ee10a16e0","instance_id_string":"67ac6dfcd6fe353ee10a16df"},"onTrunk":true,"civid":"67ac6dfcd6fe353ee10a16df"},"name":"plugins_common_listings_index"},"translations":{"translations.static.events":{"presented_by":"Presented By","dates":"Dates","recurrence":"Recurrence","time":"Time","price":"Price","venue":"Venue","attendees":"Attendees","err_expired":"This event has passed. Please visit our main <a href=\"/events/\">Events</a> page for upcoming events.","err_past":"Sorry, this event has already taken place. Please visit our <a href=\"/whats-on/\">'What's on in Manchester guide'</a> for upcoming events."},"translations.static.leo":{"apply":"Apply","clear_filters":"Clear Filters","reset":"Reset","filter":"Filter","sort":"Sort","view":"View","keyword":"Keyword","search_placeholder":"Search","select":"Select","regions":"Regions","categories":"Categories","grid":"Grid","list":"List","map":"Map","show_map":"Show Map","hide_map":"Hide Map","recommended":"Recommended","near_me":"Near Me","read_more":"Read More","quick_view":"Quick View","featured_title":"Partner","visit_website":"Visit Website","email":"E-mail","tollfree":"Toll Free","tab_about":"About","tab_map":"Map","tab_openings":"Dates and Times","tab_guide_prices":"Prices","tab_offers":"Special Offers","tab_faq":"FAQs","tab_gradings":"Gradings","tab_awards":"Awards","tab_also_like":"You might also be interested in...","tab_downloads":"Downloads","tab_routes":"Routes","tab_facilities":"Facilities","tab_virtual_tours":"Virtual Tours","show_more":"Show $1 more","show_less":"Show Less","results":"$1 results","no_results":"There are no results that match your filter.","miles_from_you":"Miles from You","meeting_rooms":"Meeting Rooms","square_feet":"Total Sq. Ft.","largest_room":"Largest Room","sleeping_rooms":"Sleeping Rooms","banquet":"Banquet Capacity","reception":"Reception Capacity","theatre":"Theater Capacity","classroom":"Classroom Capacity","compare":"Compare","close_compare_dropdown":"Close compare dropdown","compare_add":"Add to compare","compare_remove":"Remove from compare","compare_clear_all":"Clear All","compare_limit_message":"You can only compare four (4) items at a time","location":"Location","locations":"Locations","details":"Details","address":"Address","err_loc_timeout":"We're unable to determine your location at this time.","err_loc_blocked":"You must allow location access for distance sorting.","err_loc_radius":"You must be within $1 miles to sort by distance.","date_range_title":"Show Events For","date_range_day":"Day","date_range_week":"Week","date_range_weekend":"Weekend","date_range_month":"Month","date_range_year":"Year","date_range_selected_dates":"Selected Dates","per_page_label":"Items Per Page","tb_add":"Add to Trip","tb_remove":"Remove from Trip","tb_view":"View Trip","facilities":"Facilities","download":"Download Events as CSV","convention":"Convention","venues":"Venues","dates":"Dates","attendance":"Attendance","whats_nearby":"What's Nearby","attractions":"Attractions","dining":"Dining","accommodations":"Accommodations","events":"Events","things_to_do":"Things To Do","get_directions":"Get Directions","redo_search_in_map":"Redo Search in Map","add_to_calendar":"Add to Calendar","add_to_google_calendar":"Add to Google Calendar","add_to_microsoft_calendar":"Add to Microsoft Live Calendar","add_to_outlook_calendar":"Add to Office365 Outlook Calendar","add_to_iCloud_calendar":"Add to iCloud Calendar","add_to_windows_calendar":"Add to Windows Calendar","start_date":"Start Date","end_date":"End Date","learn_more":"Learn more about"},"translations.static.listings":{"clear_filters":"Clear Filters","amenities":"Amenities","tab_amenities":"Amenities","tab_meeting_facilities":"Meeting Facilities","tab_offers":"Offers","tab_events":"Events","tab_hours":"Hours","tab_tripadvisor":"TripAdvisor","tab_yelp":"Yelp","yelp_closed":"Closed","external_link_halloween":"Part of Halloween in The City","external_link_pass":"We're on the Visit Manchester Pass >>","tab_social_feeds":"Social Feeds","facility_info":"Facility Info","meeting_rooms":"Meeting Rooms","m_exhibits_space":"Exhibits Space","m_description":"Description","m_exhibits":"Exhibits","m_floorplan_file":"Floorplan File","m_largest_room":"Largest Room","m_toll_free":"Toll Free","m_total_sq_ft":"Total Sq. Ft.","m_reception_capacity":"Reception Capacity","m_space_notes":"Space Notes","m_theater_capacity":"Theater Capacity","m_link":"Link","m_villas":"Villas","m_banquet_capacity":"Banquet Capacity","m_number_of_rooms":"Number of Rooms","m_booths":"Booths","m_large_floor_plan_pdf":"Large floor Plan PDF","m_suites":"Suites","m_classroom_capacity":"Classroom Capacity","m_sleeping_rooms":"Sleeping Rooms","m_width":"Width","m_length":"Length","m_height":"Height","m_booth_capacity":"Booth Capacity","m_amphitheater_present":"Amphitheater Present","m_listening_devices_present":"Listening Devices Present"}}} </script> </div> <script type="text/template" data-sv-tripadvisorTemplate> {{#data}} <div class="tripadvisor-snippet"> <div class="reviews-rating-line"> <h4 class="ta-title">TripAdvisor Traveler Rating</h4> <a data-ta-link href="{{weburl}}" target="_blank" collect='true' data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "partner_referral", "linkObject" : "Social | TripAdvisor", "interactionUrl" : "{{%%web_url}}", "referralType" : "social | tripadvisor", "value" : 5 } }'> <img src="{{rating_image_url}}" alt="TripAdvisor Traveler Rating - {{rating}}" /> </a> <span class="reviews-rating-line-text"> <a data-ta-link href="{{web_url}}" target="_blank" collect='true' data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "partner_referral", "linkObject" : "Social | TripAdvisor", "interactionUrl" : "{{%%web_url}}", "interactionText" : "{{%%num_reviews}} reviews", "referralType" : "social | tripadvisor", "value" : 5 } }'> {{num_reviews}} reviews </a> </span> </div> </div> {{/data}} </script> <script> require([ 'jquery', 'plugins_core/main', 'sv_site', 'sv_crmLib', 'sv_cloudinaryLib', "sv_goatee!plugins=cloudinary,stringLib", 'sv_clientMoment', 'sv_arrayLib', 'sv_load!plugins_dtn', 'plugins_common_custom_layoutjs', 'plugins_common_custom_lazyload', 'sv_load!site_gamClient', 'plugins_common_custom_ui_watcher', 'sv_clientLib', 'plugins_common_custom_utils', 'sv_urlLib', ], function( $, core, site, crmLib, sv_cloudinaryLib, goatee, clientMoment, arrayLib, dtn, layoutjs, lazyload, gamClient, UIWatcher, clientLib, utils, urlLib, ) { init(); async function init() { const dataString = document.querySelector('#ljs_data_c72c8e1a-a300-44e2-9590-a116db382658').textContent; const widget = JSON.parse(dataString); const { allCats, validCats, allSubcats, validSubcats, groupedSubcats, groupedCats, allRegions, validRegions, allCategoryGroups, validCategoryGroups, allAmenities, allChannels, validChannels } = await setup(widget); const searchAvailability = (widget?.data?.show_availability ?? 'false') === 'true'; const searchRegion = (widget?.data?.show_region ?? 'false') === 'true'; const cats = validCats.map(cat => ({ label: cat.catname, value: cat.catid.toString() })); const useGroupedCats = !widget?.data?.cats; const subcats = validSubcats.map(subcat => ({ label: subcat.subcatname, value: subcat.subcatid.toString() })); const hasCatGroups = widget?.data?.use_cat_groups === 'on' && !!widget.data.cat_groups; const categorygroups = validCategoryGroups.map(categorygroup => ({ label: categorygroup.categorygroup, value: categorygroup.categorygroupid.toString() })); const regions = validRegions.map(region => ({ label: region.region, value: region.regionid.toString() })); const regionsChosen = !!widget?.data?.regions; const subcatsChosen = !!widget?.data?.subcats; const specificListingsChosen = !!widget?.data?.specific_listings_ids; const amenities = allAmenities.docs.map(amenity => ({ label: amenity.label, value: amenity.uniquename })); const hasPrimaryCat = !!widget?.data?.cats; const initialAmenities = (widget?.data?.amenities_filter) ? widget.data.amenities_filter : undefined; const dtnargs = {}//; const hasDtn = (dtnargs?.auid?.length > 0 && dtnargs?.limit > 0 && dtn); const limit = 15; let xhr; const controller = new AbortController; const signal = controller.signal; const defaultHooks = []; const defaultView = widget?.data?.default_view ? widget.data.default_view : 'grid'; var tripadvisorTemplate = $("[data-sv-tripadvisorTemplate]").html(); const t = { leo: widget.translations['translations.static.leo'], listings: widget.translations['translations.static.listings'], events: widget.translations['translations.static.events'], }; let widgetStartDate = clientMoment(); let widgetEndDate = clientMoment().add(6, 'days'); const restrictRanks = !!widget?.data?.rank_filter; const channel_filter = validChannels.map(channel => ({ label: channel.channelname, value: channel.channelkey.toString() })); const restrictChannels = !!widget?.data?.channel_filter; widgetStartDate = widgetStartDate.format('YYYY-MM-DD'); widgetEndDate = widgetEndDate.format('YYYY-MM-DD'); if (widget?.data?.detail_type) { defaultHooks.push({ name : 'afterFind_custom_detail_type', args : { detail_type : widget.data.detail_type } }); } if (widget?.data?.dtnlimit) { // if a limit is specified in the widget, override that passed in config dtnargs.limit = Number(widget.dtnlimit); } if (hasDtn) { // we want the smaller of the limit and dtnargs.limit dtnargs.limit = Math.min(dtnargs.limit, limit); } // the base filter is the minimum filter applied to all queries. This is *not* the same as a "default" query, or the initial query. // this is the base. Any filter components that can be done in the UI are added to this object const baseFilter = { $and : [] } let allFilterTagItems; let showBookingFilters; if (hasCatGroups) { baseFilter['custom.subcatgroups'] = { $in : categorygroups.map(function(val) { return Number(val.value) }) } } else { allFilterTagItems = cats.map(cat => ({ site: site.site, catid: Number(cat.value) })); if (subcatsChosen) { subcatTagItems = subcats.map(subcat => ({ site: site.site, subcatid: Number(subcat.value) })); allFilterTagItems = subcatTagItems; } baseFilter.$and.push({ filter_tags : { $in : crmLib.getListingFilterTags({ items : allFilterTagItems }) }, }); } baseFilter.$and.push({ "custom.channels.channelkey" : { $in:[ 148441 ]} }); if (restrictRanks) { baseFilter.$and.push({ rankid: { $in: widget.data.rank_filter.map(rank => Number(rank)) } }); } if (regionsChosen) { baseFilter['listingudfs_object.11.value_raw.listid'] = { $in : regions.map(function(val) { return Number(val.value) }) } } if (restrictChannels) { baseFilter.$and.push({ "custom.channels.channelkey": { $in: widget.data.channel_filter.map(channelkey => Number(channelkey)) } }); } if (specificListingsChosen) { baseFilter.recid = { $in : widget.data.specific_listings_ids }; } if (initialAmenities && widget.data.amenities_search === 'none') { initialAmenities.forEach(function(val) { baseFilter[`amenities.${val}.value_raw`] = true; }); } else if (initialAmenities && widget.data.amenities_search === 'custom') { initialAmenities.forEach(function(val) { let selected = amenities.some(function(amenity) { return amenity.value === val; }); if (!selected) { baseFilter[`amenities.${val}.value_raw`] = true; } }); } const vue = layoutjs.getVue({ rootNode : $('#layoutjs_c72c8e1a-a300-44e2-9590-a116db382658'), type : 'listings', view : defaultView, limit : limit, sort : 'qualityScore', translations : t.leo, // if there is a defaultImageUrl defined in client config, use it. Else it will utilize the default declared in custom_layoutjs.js fallbackImageUrl : site.siteConfig.custom && site.siteConfig.custom[site.site] && site.siteConfig.custom[site.site].defaultImageUrl, showFilter : widget.data.show_search_box === 'true', baseFilter : baseFilter, // change to true in order to show the first and last page arrows pager_first_last_page_arrows: false, filters : [ { name : 'keyword', label : t.leo.keyword, placeholder : t.leo.search_placeholder, type : 'keyword', toFilter : function(value, filter, context) { filter.solrOptions = { keyword : value } return filter; } }, { name : "onlybooking", label : "Search Availability", type : "toggle", show: searchAvailability, toFilter : function(value, filter, context) { filter.bookingOptions = { currency: 'GBP', occupancies: [{}], ...filter.bookingOptions, filter: true, } return filter; }, }, { name : 'daterange', label : 'Check in/Check out', type : 'daterange', reset : false, show: searchAvailability, initialValue : { start : widgetStartDate, end : widgetEndDate }, typeExtra : { dateFormat : 'MMM Do', showQuicklinks: false, }, toFilter : function(value, filter, context) { if (context === 'query') { filter.bookingOptions = { currency: 'GBP', occupancies: [{}], ...filter.bookingOptions, start_date: clientMoment(value.start).format('YYYY-MM-DD'), end_date: clientMoment(value.end).format('YYYY-MM-DD'), } } else if (context === 'runCounts') { delete filter.bookingOptions; } return filter; } }, { name: 'flex', label: 'Flex Dates', type: 'select', show: searchAvailability, initialValue: '0', typeExtra: { options: [ { label: '+/- 0 Days', value: '0' }, { label: '+/- 1 Days', value: '1' }, { label: '+/- 2 Days', value: '2' }, { label: '+/- 3 Days', value: '3' }, { label: '+/- 4 Days', value: '4' }, { label: '+/- 5 Days', value: '5' }, { label: '+/- 6 Days', value: '6' }, { label: '+/- 7 Days', value: '7' }, ], group: false, }, toFilter: function(value, filter, context) { if (context === 'query') { filter.bookingOptions = { currency: 'GBP', occupancies: [{}], ...filter.bookingOptions, fuzzy: Number(value), } } else if (context === 'runCounts') { delete filter.bookingOptions; } return filter; } }, { name: 'adults', label: 'Number of Adults', type: 'select', show: searchAvailability, initialValue: '1', typeExtra: { options: [ { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, toFilter: function(value, filter, context) { if (context === 'query') { filter.bookingOptions = { currency: 'GBP', occupancies: [{}], ...filter.bookingOptions, occupancies: [ { ...filter.bookingOptions.occupancies[0], adults: Number(value), } ] } } else if (context === 'runCounts') { delete filter.bookingOptions; } return filter; } }, { name: 'children', label: 'Number of Children', type: 'select', show: searchAvailability, initialValue: '0', typeExtra: { options: [ { label: '0', value: '0' }, { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, toFilter: function(value, filter, context) { if (context === 'query') { filter.bookingOptions = { currency: 'GBP', occupancies: [{}], ...filter.bookingOptions, occupancies: [ { ...filter.bookingOptions.occupancies[0], children: Number(value), } ] } } else if (context === 'runCounts') { delete filter.bookingOptions; } return filter; } }, ( hasCatGroups ? { name : 'cat_groups', label : t.leo.categories, show : hasCatGroups, type : 'checkbox', typeExtra : { options : categorygroups, countArgs : { watchFilters : hasCatGroups ? ['amenities', 'daterange', 'regions'] : ['daterange', 'amenities', 'regions'], field : 'custom.subcatgroups', unwind: 'custom.subcatgroups', model : 'plugins_listings_listings', sort : true } }, toFilter : function(value, filter, context) { filter.$and.push({ "custom.subcatgroups" : { $in : value.map(function(val) { return Number(val) }) } }); return filter; } } : { name : 'subcats', label: t.leo.categories, show : subcats.length > 1, type : useGroupedCats ? 'twostage' : 'checkbox', typeExtra : { options : useGroupedCats ? groupedCats : subcats, countArgs : { watchFilters : ['amenities', 'regions'], unsupportedFilters : ['keyword'], field : 'categories.subcatid', unwind : 'categories', model : 'plugins_listings_listings', sort : true } }, toFilter : function(value, filter, context) { filter.$and.push({ filter_tags : { $in : crmLib.getListingFilterTags({ items : this.custom_selectedSubcatItems }) } }); return filter; } } ), { name : 'regions', label : t.leo.regions, // we implicitly filter on regions if they have been selected in the widget, so no reason to display a region option with 1 choice // if no regions were selected, then a region option with 1 choice is valid and therefore we pass the whole array show : regionsChosen ? regions.length > 1 : regions.length > 0 && searchRegion, type : 'checkbox', typeExtra : { options : regions, countArgs : { watchFilters : hasCatGroups ? ['amenities', 'cat_groups', 'daterange'] : ['subcats', 'amenities'], unsupportedFilters : ['keyword'], field : 'listingudfs_object.11.value_raw.listid', unwind: 'listingudfs_object.11.value_raw', model : 'plugins_listings_listings', sort : true } }, toFilter : function(value, filter, context) { filter.$and.push({ "listingudfs_object.11.value_raw.listid" : { $in : value.map(function(val) { return Number(val) }) } }); return filter; } }, { name : 'channel', label : 'Channel', // we implicitly filter on regions if they have been selected in the widget, so no reason to display a region option with 1 choice // if no regions were selected, then a region option with 1 choice is valid and therefore we pass the whole array show : regionsChosen ? channel_filter.length > 1 : channel_filter.length > 0, type : 'checkbox', reset : false, typeExtra : { options : channel_filter, countArgs : { watchFilters : hasCatGroups ? ['amenities', 'cat_groups', 'daterange'] : ['subcats', 'amenities'], field : 'custom.channels.channelkey', unwind: 'custom.channels', model : 'plugins_listings_listings', sort : true } }, toFilter : function(value, filter, context) { filter.$and.push({ "custom.channels.channelkey" : { $in : value.map(function(val) { return Number(val) }) } }); return filter; } }, { name : 'amenities', label : t.listings.amenities, // we do not implicitly filter on amenities so if there is only one available option we still want to show the checkbox show : amenities.length > 0, type : 'checkbox', initialValue : initialAmenities, typeExtra : { options : amenities, countArgs : { watchFilters : hasCatGroups ? ['regions', 'cat_groups', 'daterange'] : ['subcats', 'regions'], unsupportedFilters : ['keyword'], field : 'amenities_array.uniquename', unwind : 'amenities_array', model : 'plugins_listings_listings', sort : true } }, toFilter : function(value, filter) { value.forEach(function(val) { filter[`amenities.${val}.value_raw`] = true; }); return filter; } } ], sortOptions : [ { value : 'qualityScore', label : t.leo.recommended }, { value : 'distance', label : t.leo.near_me }, //{ value : 'price_asc', label : '<i class="fas fa-sort-numeric-up-alt" aria-hidden="true"></i> Price <span class="sr-only">(low to high)</span>' }, //{ value : 'price_desc', label : '<i class="fas fa-sort-numeric-down-alt" aria-hidden="true"></i> Price <span class="sr-only">(high to low)</span>' }, //{ value : 'price_asc', label : 'Price <span class="sr-only">(low to high)</span>' }, //{ value : 'price_desc', label : 'Price <span class="sr-only">(high to low)</span>' }, { value : 'pan', label : '' } ], maxRangeMiles : site.siteConfig.maxRangeMiles, latitude : site.siteConfig.latitude, longitude : site.siteConfig.longitude, data : { custom_catid : (widget.listingcats !== undefined) ? Number(widget.listingcats) : undefined, custom_dtnids : [], }, // computed allows the passing of computed and method properties, in cases where they may need to be unique to the template computed : { custom_selectedSubcatItems : function() { return this.filter_subcats_numberArray.map(function(val) { return { site : site.site, subcatid : val } }); }, custom_dtnFilterTagItems : function() { // if we have not chosen subcats in the widget, then we need to load via the category id // if we have chosen subcats then we utilize whatever the state of the if (this.custom_selectedSubcatItems.length > 0) { // if we have items selected in the UI, use them return this.custom_selectedSubcatItems; } else if (subcatsChosen) { // if we have items chosen in the widget, use those return allFilterTagItems; } else { // otherwise fall back to the chosen catid return [{ site : site.site, catid : this.custom_catid }]; } } }, methods : {}, watch : { docs: function() { // place logic in here that needs to happen after render of items this.$nextTick(function() { if (hasDtn) { gamClient.renderAds(); } }); $(this.$el).find("[data-tripadvisor-index]").each(function() { var taTracking; // todo. get crm to ad ta hit tracking id. see palm springs var ta = $(this); var recid = $(this).closest('[data-recid]').attr('data-recid'); var taArgs = { service : "tripadvisor", recid : recid }; $.get("/includes/plugins/listings/getreviews/", taArgs, function(res) { if (res.success) { ta.html(goatee.fill(tripadvisorTemplate, res)); if (taTracking) { ta.find('[data-ta-link]').each(function(){ var href = $(this).attr("href") $(this).attr("href", crmLib.getTrackUrl(taTracking, href)); }); } } }); }); lazyload.lazy($(this.$el).find('.content .item')) } }, query : async function(cb) { const self = this; const filter = self.getFilter('query'); const options = { limit : self.args.limit, skip : self.skip, count : true, castDocs : false, fields : { recid : 1, type: 1, title : 1, address1 : 1, "listingudfs_object.2.value" : 1, "listingudfs_object.12.value" : 1, city : 1, url : 1, isDTN : 1, latitude : 1, longitude : 1, primary_image_url : 1, 'taid' : 1, qualityScore : 1, weburl : 1, tripadvisor: 1, "dtn.rank" : 1, booking_price_avg: 1, booking_price_total: 1, booking_full: 1, categories: 1, acctid : 1, city : 1, region : 1, rankname : 1, "listingudfs_object.26.value_string" : 1, "custom.channels.channelkey": 1, "custom.externallinks.linkname": 1, "custom.externallinks.linkkey": 1, "custom.externallinks.url": 1, primary_category: 1, "custom.coupons": 1, "listingudfs_object.26.value_string": 1, "listingudfs_object.27.value_raw": 1, "listingudfs_object.28.value_string": 1, "listingudfs_object.29.value_raw": 1, categories: 1, "custom.subcatgroups": 1 }, hooks : defaultHooks }; var test1 = options.fields["listingudfs_object.26.value_raw"]; var test2 = options.fields["listingudfs_object.26.value_raw"]; var test3 = options.sort = { "listingudfs_object.26.value_raw": -1 }; console.log(test3); if (self.sort === 'pan') { options.sort = { qualityScore : -1, "listingudfs_object.15.value": 1, sortcompany : 1 }; filter['loc.coordinates'] = { "$geoWithin": { "$geometry": { type: 'Polygon', coordinates: [[ [parseFloat(self.bounds.Sa.j),parseFloat(self.bounds.Wa.j)], [parseFloat(self.bounds.Sa.i),parseFloat(self.bounds.Wa.j)], [parseFloat(self.bounds.Sa.i),parseFloat(self.bounds.Wa.i)], [parseFloat(self.bounds.Sa.j),parseFloat(self.bounds.Wa.i)], [parseFloat(self.bounds.Sa.j),parseFloat(self.bounds.Wa.j)] ]] } } } } else if (self.sort === 'qualityScore') { options.sort = { rankorder : -1, "listingudfs_object.15.value": 1, sortcompany : 1 }; } else if (self.sort === 'distance') { filter.solrOptions = filter.solrOptions || {}; filter.solrOptions.sort = 'distance'; filter.solrOptions.point = [self.georesult.latitude, self.georesult.longitude].join(","); filter.solrOptions.radius = self.args.maxRangeMiles.toString(); } else if (self.sort === 'price_asc') { const item = options.sort = { "listingudfs_object.26.value_raw": 1, rankorder: -1, "listingudfs_object.15.value": 1 }; const sorted = options.sort((a, b) => { const k1 = a["listingudfs_object.26.value_raw"] === undefined ? 0 : 1 const k2 = b["listingudfs_object.26.value_raw"] === undefined ? 0 : 2 return k2 - k1 }) options.sort = sorted; } else if (self.sort === 'price_desc') {; options.sort = { "listingudfs_object.28.value_raw": -1, rankorder: -1, "listingudfs_object.15.value": 1 } } if (options.skip === 0) { // whenever the skip is 0, we reset the custom_dtnids back to scratch self.custom_dtnids = []; } const dtnDocs = await dtn(); const rtn = await data(); return cb(null, rtn); async function dtn() { if (hasDtn === false || options.skip > 0 || self.sort === 'distance' || self.custom_catid === undefined || self.sort === 'pan' ) return []; const dtnFilter = self.getFilter('query'); dtnFilter.$and.push({ filter_tags : { $in : crmLib.getListingFilterTags({ items : self.custom_dtnFilterTagItems, dtn : true }) } }); // using 0000 and 2359 for caching purposes, otherwise we could just use Date().toISOString() const today0000 = clientMoment().startOf('day'); // send date as 00:00:00 in the client timezone in UTC const today2359 = clientMoment().endOf('day'); // send date as 23:59:59 in the client timezone in UTC dtnFilter.$and.push( { $or : [ { "dtn.sdate" : { $lte : { $date : today0000.toISOString() } } }, { "dtn.sdate" : { $exists : false } } ] }, { $or : [ { "dtn.edate" : { $gte : { $date : today2359.toISOString() } } }, { "dtn.edate" : { $exists : false } } ] } ); const dtnOptions = $.extend({}, options, { // we allow DTN to oversell the first page by a factor of 2 // we will pull from this set a max of the limit limit : self.args.limit * 2, count : false, hooks : defaultHooks.concat('afterFind_dtn') }); xhr = utils.call(fetch(utils.getAPIUrl('/includes/rest_v2/plugins_listings_listings/find/', { json: JSON.stringify({ filter: dtnFilter, options: dtnOptions }), token: core.simpleToken }), {signal})); const [res, resErr] = await xhr; if (resErr) return new Error(resErr); res.docs = arrayLib.randomize(res.docs); res.docs = res.docs.splice(0, dtnargs.limit); res.docs.forEach(function(val) { self.custom_dtnids.push(val.recid); val.dtnAuid = dtnargs.auid; val.isDTN = true; }); return res.docs; } async function data() { if (dtnDocs.length > 0) { // has DTN listings, need to adjust page 1 limit and store dtnids for exclusion from main query on all pages options.limit -= self.custom_dtnids.length; } else { options.skip = (options.skip - self.custom_dtnids.length); } if (self.custom_dtnids.length > 0) { filter.recid = { $nin : self.custom_dtnids } } if (self.custom_dtnids.length === self.args.limit) { options.limit = 1; } xhr = utils.call(fetch(utils.getAPIUrl('/includes/rest_v2/plugins_listings_listings/find/', { json: JSON.stringify({ filter, options }), token: core.simpleToken }), {signal})); const [res, resErr] = await xhr; if (resErr) return new Error(resErr); const returnData = { total : res.docs.count + self.custom_dtnids.length, docs : dtnDocs.concat(res.docs.docs).slice(0, self.args.limit) }; const params = urlLib.parse(window.location.toString()).get const hasBooking = params['filter_daterange'] !== undefined; console.log(params) let bookingquery = {}; let bookingParams = ''; if (hasBooking) { bookingquery = { filter_daterange: params['filter_daterange'], filter_adults: params['filter_adults'] || '1', filter_children: params['filter_children'] || '0', filter_flex: params['filter_flex'] || '0', }; bookingParams = urlLib.build({ get: bookingquery }); } returnData.docs = returnData.docs.map((val, index) => ({ recid : val.recid, type: val.type, title : val.title, image_url : val.primary_image_url, crmc : val.primary_category.catname, crmsc : val.primary_category.subcatname, acctid : val.acctid, city : val.city, region : val.region, rankname : val.rankname, price: val.listingudfs_object?.[26]?.value_string, index: (index + (options.skip || 0)) ?? undefined, url : hasBooking ? `${val.url}${bookingParams}` : val.url, dtn : val.isDTN ? { auid : dtnargs.auid, rank : val.dtn.rank } : undefined, yelp : val.yelp, channels: val.custom.channels.channelkey, subcatgroups: val.custom.subcatgroups, coupons: val.custom.coupons, description: val.description, shortdescription: val.shortdescription, listingudfs_object: val.listingudfs_object, listingudfs: val.listingudfs, locations: [{ title : val.city }], // sets listing location latitude : val.latitude, longitude : val.longitude, qualityScore : val.qualityScore, tripadvisor : val.tripadvisor, taid: val.taid, primary_category: val.primary_category, booking_full: val.booking_full, booking_price_avg: val.booking_price_avg, booking_price_total: val.booking_price_total, categories: val.categories, externallinks: val.custom.externallinks, halloween: val.custom.externallinks ? val.custom.externallinks.find(link => link.linkkey === 249831) ? val.custom.externallinks.find(link => link.linkkey === 249831).linkname : undefined : undefined, halloween_link: val.custom.externallinks ? val.custom.externallinks.find(link => link.linkkey === 249831) ? val.custom.externallinks.find(link => link.linkkey === 249831).url : undefined : undefined, manchesterpass: val.custom.externallinks ? val.custom.externallinks.find(link => link.linkkey === 249841) ? val.custom.externallinks.find(link => link.linkkey === 249841).linkname : undefined : undefined, manchesterpass_link: val.custom.externallinks ? val.custom.externallinks.find(link => link.linkkey === 249841) ? val.custom.externallinks.find(link => link.linkkey === 249841).url : undefined : undefined, button : { title : t.leo.read_more, url : hasBooking ? `${val.url}${bookingParams}` : val.url, weburl : val.weburl, weburl_title : t.leo.visit_website } // call to action button })); returnData.itemType = 'listings'; returnData.itemListName = 'Listings Index'; return returnData; } } }); /* register available UI events */ const watcher = new UIWatcher(vue, $, document); const uid = clientLib.uuid().toString(); const widgetEvents = [ 'change-page', 'view-change', 'value-change', 'sort-change', 'toggle-show-more', 'scroll-into-view', 'item-click', 'title-click', 'map-pin-click', 'tripbuilder', ]; for (let i = 0; i < widgetEvents.length; i++) { watcher.add('vue', widgetEvents[i], uid, { name: 'Listings' }); } async function setup(widget) { const [allCats, allCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_cats/find/', { json: JSON.stringify({ filter: { active: true, sites: { $in: [site.site] } }, options: { castDocs:false, fields: { catid: 1, catname: 1, has_listings: 1 } } }), token: core.simpleToken }))); if (allCatsErr) return new Error(allCatsErr); const validCats = !!widget?.data?.cats ? allCats.docs.filter(cat => widget.data.cats.indexOf(cat.catid.toString()) !== -1) : allCats.docs; const [allSubcats, allSubcatsErr] = await utils.call(fetch(utils.getAPIUrl('/includes/rest_v2/plugins_listings_subcats/find/', { json: JSON.stringify({ filter: { active: true, categoryid: widget?.data?.cats ? { $in: widget.data.cats.map(catid => Number(catid)) } : { $exists: true }, sites: { $in: [site.site] } }, options: { castDocs:false, fields: { categoryid: 1, catname: 1, subcatid: 1, subcatname: 1, has_listings: 1 } } }), token: core.simpleToken }))); if (allSubcatsErr) return new Error(allSubcatsErr); const validSubcats = !!widget?.data?.subcats ? allSubcats.docs.filter(subcat => widget.data.subcats.indexOf(subcat.subcatid.toString()) !== -1) : allSubcats.docs; const groupedSubcats = allSubcats.docs.reduce((acc, curr) => { if (acc[curr.categoryid] === undefined) { acc[curr.categoryid] = []; } acc[curr.categoryid].push({ label: curr.subcatname, value: curr.subcatid.toString() }); return acc; }, {}); const groupedCats = allCats.docs .filter(cat => cat.has_listings) .map(cat => ({ label: cat.catname, value: cat.catid.toString(), options: groupedSubcats[cat.catid], })) .filter(cat => !!cat.options); const [allRegions, allRegionErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_polygons/find/', { json: JSON.stringify({ filter: {}, options: { castDocs:false, fields: { regionid: 1, region: 1 } } }), token: core.simpleToken } ))); if (allRegionErr) return new Error(allRegionErr); const validRegions = !!widget?.data?.regions ? allRegions.docs.filter(region => widget.data.regions.indexOf(region.regionid.toString()) !== -1) : allRegions.docs; const [allCategoryGroups, allCategoryGroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_categorygroups/find/', { json: JSON.stringify({ filter: {}, options: { castDocs:false, fields: { categorygroupid: 1, categorygroup: 1 } } }), token: core.simpleToken } ))); if (allCategoryGroupsErr) return new Error(allCategoryGroupsErr); const validCategoryGroups = !!widget?.data?.cat_groups ? allCategoryGroups.docs.filter(categorygroup => widget.data.cat_groups.indexOf(categorygroup.categorygroupid.toString()) !== -1) : allCategoryGroups.docs; const [allChannels, allChannelsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_channels/find/', { json: JSON.stringify({ filter: {}, options: { castDocs:false, fields: { channelkey: 1, channelname: 1 } } }), token: core.simpleToken } ))); if (allChannelsErr) return new Error(allChannelsErr); const validChannels = !!widget?.data?.channel_filter ? allChannels.docs.filter(channel => widget.data.channel_filter.indexOf(channel.channelkey.toString()) !== -1) : allChannels.docs; const showAmenities = widget?.data?.amenities_search !== 'none'; const showCustomAmenities = widget?.data?.amenities_search === 'custom'; let allAmenities, allAmenitiesErr; if (showAmenities) { const allAmenitiesRes = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_boolean_amenities/find/', { json: JSON.stringify({ filter: showCustomAmenities && widget?.data?.custom_amenities.length > 0 ? { uniquename: { $in: widget.data.custom_amenities } } : {}, options: { castDocs:false, fields: { label: 1, uniquename: 1, fieldid: 1 } } }), token: core.simpleToken } ))); allAmenities = allAmenitiesRes[0]; allAmenitiesErr = allAmenitiesRes[1] if (allAmenitiesErr) return new Error(allAmenitiesErr); } else { allAmenities = { docs: [] }; } return {allCats, validCats, allSubcats, validSubcats, allCategoryGroups, validCategoryGroups, allRegions, validRegions, allChannels, validChannels, allAmenities}; } } }); </script></div><div data-civid="6525b65058d8a262bf5e6c04" class="contentRender contentRender_17 contentRender_type_panel contentRender_name_plugins_common_product_search_container" data-sv-time="1" data-sv-index="17" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <section class="product-search" data-guid="f86de934-5db7-4dec-9178-0ccf116dec2c"> <div class="ps-wrapper"> <div class="nav"> <div class="inner"> <header> <h2 class="panel-title">Search for something...</h2> <p class="panel-description">Continue your Manchester story by exploring further.</p> </header> <div class="ps-tabs" role="tablist" aria-label="Product Searches" data-tab-list></div> </div> </div> <div data-civid="659bd4fcce7a575babca8096" class="contentRender contentRender_18 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="90" data-sv-index="18" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <button role="tab" aria-controls="panel-f3afd526-6531-48e9-bb36-7d9f146e35a2" id="tab-f3afd526-6531-48e9-bb36-7d9f146e35a2" class="mobile-tab" >Things to do <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="f3afd526-6531-48e9-bb36-7d9f146e35a2" data-product-search="Things to do" data-default-selected="closed" role="tabpanel" id="panel-f3afd526-6531-48e9-bb36-7d9f146e35a2" aria-labelledby="tab-f3afd526-6531-48e9-bb36-7d9f146e35a2" class="ps-panel" > <div id="ps_f3afd526-6531-48e9-bb36-7d9f146e35a2"> <script id="ps_data_f3afd526-6531-48e9-bb36-7d9f146e35a2" type="text/template">{"sections":{},"data":{"title":"Things to do","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155071","155161","155141","155151","155031","155011","155051","154101","155061","154141","155171","155331","155111","155181","154171","155081","155131","155041","155121"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"true","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650acb8cbc65965bc031ceeb","type":"plugins_nav_navitem_primary_main"}},"guid":"f3afd526-6531-48e9-bb36-7d9f146e35a2","customSettings":{},"widgetArgs":{"nav":{"_id":"669f874d9e4dca392466b9d6","title":"Sustainable things to do","folder":"sustainable-things-to-do","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-23T10:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"65720134753646499e16691e","description":"<p>Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.</p>","meta_title":"Sustainable things to do in Manchester","meta_description":"Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.","tags_ids":["6527eb2040495a2d33806cc6"],"parent_id":"6525e38b58d8a262bf5e7287","parents_ids":["6525e38b58d8a262bf5e7287"],"content_owner":"default","site_name":"primary","section":"main","updated":"2025-02-12T09:50:13.640Z","title_sort":"sustainable things to do","site_section":"primary.main","published":true,"sortorder":8,"created":"2024-07-23T10:34:53.299Z","amp":false,"cms_title":"Sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","cms_title_sort":"sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","folderHref":"/things-to-see-and-do/sustainable-things-to-do/","version_id":"67ac6ed5d6fe353ee10a18fe","image":{"_id":"65720134753646499e16691e","legacy_id":"img-new-exhibition-opening-at-elizabeth-gaskell-s-house","title":"New exhibition opening at Elizabeth Gaskell鈥檚 House","title_sort":"new exhibition opening at elizabeth gaskell鈥檚 house","content_owner":"default","tags_ids":["65720062753646499e1664aa"],"created":"1970-01-01T00:00:00.000Z","updated":"2023-12-07T17:30:25.637Z","private":false,"resource_raw":{"asset_id":"c460c86fae1b7c383cd9047abedbbef7","public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6","version":1701970228,"version_id":"a80233a4c1370ae8a1272fe66834cebc","signature":"0c6a3518dc9f25f9bc9ba563332dee91c2744f11","width":1200,"height":896,"format":"jpg","resource_type":"image","created_at":"2023-12-07T17:30:28.000Z","pages":1,"bytes":980555,"type":"upload","etag":"1ad9ba437f5e5313cf75e44a63e270f3","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"Optimized-Elizabeth Gaskell's House (2)","api_key":"756897581616859"},"deleted":false,"resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6"}},"id":"65720134753646499e16691e","type":"image","inAssetRequest":false,"alt_text":"New exhibition opening at Elizabeth Gaskell鈥檚 House","expired":false},"locale_count":0,"tags":[{"_id":"6527eb2040495a2d33806cc6","tag":"Sustainability","sort_tag":"sustainability","updated":"2023-10-12T12:48:32.082Z","created":"2023-10-12T12:48:32.082Z","id":"6527eb2040495a2d33806cc6"}],"id":"669f874d9e4dca392466b9d6","parent_id_string":"6525e38b58d8a262bf5e7287","version_id_string":"67ac6ed5d6fe353ee10a18fe","href":"/things-to-see-and-do/sustainable-things-to-do/","absoluteHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","absoluteFolderHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","metaTitle":"Sustainable things to do in Manchester","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":18,"guid":"f3afd526-6531-48e9-bb36-7d9f146e35a2","data":{"title":"Things to do","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155071","155161","155141","155151","155031","155011","155051","154101","155061","154141","155171","155331","155111","155181","154171","155081","155131","155041","155121"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"true","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650acb8cbc65965bc031ceeb","type":"plugins_nav_navitem_primary_main"}},"civ":{"instance":{"type":"widget","name":"plugins_common_product_search","site_name":"primary","saved":false,"created":"2024-01-08T11:13:44.483Z","updated":"2024-01-08T11:13:44.483Z","deleted":false,"id":"659bd4fcce7a575babca8096","version_id_string":"659bd4fcce7a575babca8097"},"version":{"data":{"title":"Things to do","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155071","155161","155141","155151","155031","155011","155051","154101","155061","154141","155171","155331","155111","155181","154171","155081","155131","155041","155121"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"true","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650acb8cbc65965bc031ceeb","type":"plugins_nav_navitem_primary_main"}},"created":"2024-01-08T11:13:44.485Z","id":"659bd4fcce7a575babca8097","instance_id_string":"659bd4fcce7a575babca8096"},"onTrunk":true,"civid":"659bd4fcce7a575babca8096"},"name":"plugins_common_product_search"},"translations":{"translations.static.leo":{"apply":"Apply","clear_filters":"Clear Filters","reset":"Reset","filter":"Filter","sort":"Sort","view":"View","keyword":"Keyword","search_placeholder":"Search","select":"Select","regions":"Regions","categories":"Categories","grid":"Grid","list":"List","map":"Map","show_map":"Show Map","hide_map":"Hide Map","recommended":"Recommended","near_me":"Near Me","read_more":"Read More","quick_view":"Quick View","featured_title":"Partner","visit_website":"Visit Website","email":"E-mail","tollfree":"Toll Free","tab_about":"About","tab_map":"Map","tab_openings":"Dates and Times","tab_guide_prices":"Prices","tab_offers":"Special Offers","tab_faq":"FAQs","tab_gradings":"Gradings","tab_awards":"Awards","tab_also_like":"You might also be interested in...","tab_downloads":"Downloads","tab_routes":"Routes","tab_facilities":"Facilities","tab_virtual_tours":"Virtual Tours","show_more":"Show $1 more","show_less":"Show Less","results":"$1 results","no_results":"There are no results that match your filter.","miles_from_you":"Miles from You","meeting_rooms":"Meeting Rooms","square_feet":"Total Sq. Ft.","largest_room":"Largest Room","sleeping_rooms":"Sleeping Rooms","banquet":"Banquet Capacity","reception":"Reception Capacity","theatre":"Theater Capacity","classroom":"Classroom Capacity","compare":"Compare","close_compare_dropdown":"Close compare dropdown","compare_add":"Add to compare","compare_remove":"Remove from compare","compare_clear_all":"Clear All","compare_limit_message":"You can only compare four (4) items at a time","location":"Location","locations":"Locations","details":"Details","address":"Address","err_loc_timeout":"We're unable to determine your location at this time.","err_loc_blocked":"You must allow location access for distance sorting.","err_loc_radius":"You must be within $1 miles to sort by distance.","date_range_title":"Show Events For","date_range_day":"Day","date_range_week":"Week","date_range_weekend":"Weekend","date_range_month":"Month","date_range_year":"Year","date_range_selected_dates":"Selected Dates","per_page_label":"Items Per Page","tb_add":"Add to Trip","tb_remove":"Remove from Trip","tb_view":"View Trip","facilities":"Facilities","download":"Download Events as CSV","convention":"Convention","venues":"Venues","dates":"Dates","attendance":"Attendance","whats_nearby":"What's Nearby","attractions":"Attractions","dining":"Dining","accommodations":"Accommodations","events":"Events","things_to_do":"Things To Do","get_directions":"Get Directions","redo_search_in_map":"Redo Search in Map","add_to_calendar":"Add to Calendar","add_to_google_calendar":"Add to Google Calendar","add_to_microsoft_calendar":"Add to Microsoft Live Calendar","add_to_outlook_calendar":"Add to Office365 Outlook Calendar","add_to_iCloud_calendar":"Add to iCloud Calendar","add_to_windows_calendar":"Add to Windows Calendar","start_date":"Start Date","end_date":"End Date","learn_more":"Learn more about"}}}</script> </div> </div> <script> require([ 'jquery', 'plugins_core/main', 'sv_site', 'sv_clientMoment', 'plugins_common_custom_product_search', 'plugins_common_custom_utils', ], function( $, core, site, clientMoment, product_search, utils ) { init(); async function init() { const dataString = document.querySelector('#ps_data_f3afd526-6531-48e9-bb36-7d9f146e35a2').textContent const widget = JSON.parse(dataString); const t = { leo: widget.translations['translations.static.leo'], }; // Collect all select options let options = {} // date format to ensure all dates passed through clientMoment and the date range plugin are formated correctly const queryDateFormat = 'YYYY-MM-DD'; const today = clientMoment().format(queryDateFormat); const thisWeek = clientMoment().add(6, 'days').format(queryDateFormat); const thisMonth = clientMoment().add(1, 'months').format(queryDateFormat); const weekendFri = clientMoment().day(5).format(queryDateFormat); const weekendSun = clientMoment().day(7).format(queryDateFormat); const customStart = clientMoment(widget.data.from_date).format(queryDateFormat); const customEnd = clientMoment(widget.data.to_date).format(queryDateFormat); const showBooking = (widget?.data?.show_booking ?? 'false') === 'true'; const showBookingActiveByDefault = (widget?.data?.show_booking_active ?? 'false') === 'true'; const showRegion = (widget?.data?.show_region ?? 'false') === 'true'; const useCatGroups = (widget?.data?.use_cat_groups ?? 'off') === 'on'; const hasCatGroups = widget?.data?.use_cat_groups === 'on'; // Set initial start and end days for the calendar dropdown let initialDates = { start: today, end: today } if (widget.data.defaultRange === 'week') { initialDates.end = thisWeek; } else if (widget.data.defaultRange === 'weekend') { initialDates.start = weekendFri; initialDates.end = weekendSun; } else if (widget.data.defaultRange === 'month') { initialDates.end = thisMonth; } else if (widget.data.defaultRange === 'custom') { initialDates.start = customStart; initialDates.end = customEnd; } // The hidden filter is to store values that are manually selected in the CMS. // Regions and event categories are the two available fields for manual selection const hiddenFilters = {} if (widget.data.type === 'listings' && widget.data.regionid) { hiddenFilters.regionid = widget.data.regionid; } else if (widget.data.type === 'events' && widget.data.regionidevents) { hiddenFilters.regionidevents = widget.data.regionidevents; } else if (widget.data.type === 'events' && widget.data.cat_groups_events && widget.data.cat_groups_events.length > 0) { hiddenFilters.catids = widget.data.cat_groups_events; } else if (widget.data.type === 'offers' && widget.data.offer_category && widget.data.offer_category.length > 0) { hiddenFilters.catid = data.offer_category; } if (widget.data.hide_date_filters === 'true') { hiddenFilters.dates = initialDates; } if (widget.data.channel) { hiddenFilters.channelkey = widget.data.channel; } // if listings if (widget.data.type === 'listings') { if (useCatGroups) { // if doesn't have category groups const [categorygroups, categorygroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_categorygroups/aggregate/', { json: JSON.stringify({ filter: {}, options: { castDocs:false, fields: { categorygroupid: 1, categorygroup: 1 } } }), token: core.simpleToken } ))); if (categorygroupsErr) return new Error(categorygroupsErr); const groups = !!widget ?.data ?.categorygroups ? categorygroups.docs.filter(group => widget.data.categorygroups.indexOf(group.categorygroupid.toString()) !== -1) : categorygroups.docs; options.groups = groups.map(group => ({ label: group.categorygroup, value: group.categorygroupid.toString() })); } else { const [allSubcats, allSubcatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_subcats/find/', { json: JSON.stringify({ filter: { active: { $eq: true }, has_listings: { $eq: true }, sites: { $in: [site.site] } }, options: { castDocs: false, sort: { fullname: 1 }, fields: { categoryid: 1, subcatid: 1, subcatname: 1, } } }), token: core.simpleToken } ))); if (allSubcatsErr) return new Error(allSubcatsErr); let subcats = allSubcats.docs; if (widget?.data?.cats) { subcats = subcats.filter(subcat => subcat.categoryid === Number(widget.data.cats)); } options.subcats = subcats.map(subcat => ({ label: subcat.subcatname, value: subcat.subcatid.toString() })); } if (!widget.data.regionid) { // if doesn't have regions const [regions, regionsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_polygons/aggregate/', { json: JSON.stringify({ pipeline: [ { $sort: { region: 1 } }, { $project: { label: "$region", value: "$regionid" } }, ] }), token: core.simpleToken } ))); if (regionsErr) return new Error(regionsErr); options.regions = regions.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'events') { const catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : []; options.catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : [] // if events if (useCatGroups) { const [eventCatGroups, eventCatGroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_catgroup_x_tags/find/', { json: JSON.stringify({ filter: {}, options: { castDocs: false, sort: { sort_tag: 1 }, fields: { tag: 1, "cat_groups.title": 1, "cat_groups.cats": 1, } } }), token: core.simpleToken } ))); if (eventCatGroupsErr) return new Error(eventCatGroupsErr); eventCatGroups.docs.map(tag => tag.cat_groups.sort((a, b) => a.title.localeCompare(b.title))); options.catgroups = eventCatGroups.docs.map(tag => tag.cat_groups.map(cg => ({ label: cg.title, value: cg.cats.join(','), group: tag.tag, }))).flat(); if (widget?.data?.cat_groups_events) { const selectedGroups = widget.data.cat_groups_events.map(cg => cg.title); options.catgroups = options.catgroups.filter(cg => selectedGroups.indexOf(cg.label) !== -1); } } else { const [allCats, allCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_categories/find/', { json: JSON.stringify({ filter: { calendarid: { $eq: (widget?.data?.calendar ?? '1') }, ...(widget?.data?.cats_events ? { value: { $in: widget.data.cats_events } } : {}), }, options: { castDocs: false, sort: { label: 1 }, fields: { label: 1, value: 1, } } }), token: core.simpleToken } ))); if (allCatsErr) return new Error(allCatsErr); options.cats = allCats.docs; } if (!widget.data.regionidevents) { const [regionsevents, regionseventsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_events_metadata/aggregate/', { json: JSON.stringify({ pipeline: [ { "$project" : { "option" : "$udfs_object.11.values" } }, { "$unwind" : "$option" }, { $sort: { regionsevents: 1 } }, { $project: { label: "$option.listvalue", value: "$option.listid" } }, ] }), token: core.simpleToken } ))); if (regionseventsErr) return new Error(regionseventsErr); options.regionsevents = regionsevents.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'offers') { // if offers const [offerCats, offerCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_offers_offermeta/aggregate/', { json: JSON.stringify({ pipeline: [ { $project: { _id: 0, categories: 1 } }, { $unwind: "$categories" }, { $match: { "categories.active": true } }, { $project: { label: "$categories.categoryname", value: { $toString: "$categories.categoryid" }, } }, { $sort: { "label": 1 } }, ] }), token: core.simpleToken } ))); if (offerCatsErr) return new Error(offerCatsErr); options.cats = offerCats.docs; } const vue = product_search.getVue({ rootNode: $('#ps_f3afd526-6531-48e9-bb36-7d9f146e35a2'), type: widget.data.type, link: widget.data.link.url, linkText: widget.data.link_text, hiddenFilters: hiddenFilters, translations: t.leo, filters: [ { name : "filter_onlybooking", label : "Search Availability", type : "toggle", show: showBooking, value: "true", initialValue: showBookingActiveByDefault, }, { name: 'filter_daterange[start]', label: 'Check in', type: 'date_availability_start', show: showBooking, initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: 'Check out', type: 'date_availability_end', show: showBooking, initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_adults', label: 'Number of Adults', type: 'select', show: showBooking, initialValue: '1', typeExtra: { options: [ { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_children', label: 'Number of Children', type: 'select', show: showBooking, initialValue: '0', typeExtra: { options: [ { label: '0', value: '0' }, { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_daterange[start]', label: t.leo.start_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: t.leo.end_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_cat_groups[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && useCatGroups, typeExtra: { options: options.groups || [] } }, { name: useCatGroups ? 'filter_cat_groups[0]' : 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events', typeExtra: { options: useCatGroups ? (options.catGroupsEvents || []) : (options.cats || []), } }, { name: 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: (widget.data.type === 'offers' && !widget.data.offer_category), typeExtra: { options: options.cats } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && !widget.data.regionid && showRegion, typeExtra: { options: options.regions || [] } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events' && !widget.data.regionidevents && showRegion, typeExtra: { options: options.regionsevents || [] } }, { name: 'filter_keyword', label: t.leo.keyword, placeholder: t.leo.search_placeholder, type: 'text', show: true }, { name: 'filter_channel[0]', label: 'Channel', placeholder: t.leo.search_placeholder, show: !widget.data.channel, typeExtra: { options: options.channel || [] } }, ] }); } }); </script></div><div data-civid="659bd4fcce7a575babca8098" class="contentRender contentRender_19 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="92" data-sv-index="19" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'> <button role="tab" aria-controls="panel-80e0552f-448d-408e-b88d-7dcd9c064201" id="tab-80e0552f-448d-408e-b88d-7dcd9c064201" class="mobile-tab" >What's On <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="80e0552f-448d-408e-b88d-7dcd9c064201" data-product-search="What's On" data-default-selected="closed" role="tabpanel" id="panel-80e0552f-448d-408e-b88d-7dcd9c064201" aria-labelledby="tab-80e0552f-448d-408e-b88d-7dcd9c064201" class="ps-panel" > <div id="ps_80e0552f-448d-408e-b88d-7dcd9c064201"> <script id="ps_data_80e0552f-448d-408e-b88d-7dcd9c064201" type="text/template">{"sections":{},"data":{"title":"What's On","default_selected":"false","type":"events","use_cat_groups":"on","calendar":"1","cats_events":["7419","8879","135","7359","6469","136","7429","147","6609","149","138"],"show_booking":"false","show_booking_active":"false","show_region":"false","regionidevents":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","cat_groups_events_ids":["6511699b3786100d79bf3de5","651169da3786100d79bf3de7","65281181bd338238afbc2251","6528119ebd338238afbc2253","652803cebd338238afbc2182","652811e9bd338238afbc2255","65281228bd338238afbc2259","6528120dbd338238afbc2257","65281274bd338238afbc225b","652803f7bd338238afbc2184","65280392bd338238afbc2180"],"link_raw":{"id":"650af9e3dc2abf6b654232e5","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af9e3dc2abf6b654232e5","url":"https://www.visitmanchester.com/whats-on/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af9e3dc2abf6b654232e5"},"cat_groups_events":[{"_id":"6511699b3786100d79bf3de5","title":"Art & exhibitions","cats":["134","8969","146"]},{"_id":"651169da3786100d79bf3de7","title":"Festivals","cats":["135"]},{"_id":"65281181bd338238afbc2251","title":"Comedy & entertainment","cats":["7419","8849","5309","8959","4939"]},{"_id":"6528119ebd338238afbc2253","title":"Family friendly","cats":["8879"]},{"_id":"652803cebd338238afbc2182","title":"Food & drink","cats":["7359","9209"]},{"_id":"652811e9bd338238afbc2255","title":"Markets, fetes & fairs","cats":["163","6469","136","5679","9009"]},{"_id":"65281228bd338238afbc2259","title":"Music","cats":["131","7429"]},{"_id":"6528120dbd338238afbc2257","title":"Sport","cats":["147"]},{"_id":"65281274bd338238afbc225b","title":"Theatre","cats":["6609"]},{"_id":"652803f7bd338238afbc2184","title":"Tours","cats":["9489","9339","137"]},{"_id":"65280392bd338238afbc2180","title":"Workshops, talks & lectures","cats":["139","138","8969","149"]}]},"guid":"80e0552f-448d-408e-b88d-7dcd9c064201","customSettings":{},"widgetArgs":{"nav":{"_id":"669f874d9e4dca392466b9d6","title":"Sustainable things to do","folder":"sustainable-things-to-do","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-23T10:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"65720134753646499e16691e","description":"<p>Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.</p>","meta_title":"Sustainable things to do in Manchester","meta_description":"Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.","tags_ids":["6527eb2040495a2d33806cc6"],"parent_id":"6525e38b58d8a262bf5e7287","parents_ids":["6525e38b58d8a262bf5e7287"],"content_owner":"default","site_name":"primary","section":"main","updated":"2025-02-12T09:50:13.640Z","title_sort":"sustainable things to do","site_section":"primary.main","published":true,"sortorder":8,"created":"2024-07-23T10:34:53.299Z","amp":false,"cms_title":"Sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","cms_title_sort":"sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","folderHref":"/things-to-see-and-do/sustainable-things-to-do/","version_id":"67ac6ed5d6fe353ee10a18fe","image":{"_id":"65720134753646499e16691e","legacy_id":"img-new-exhibition-opening-at-elizabeth-gaskell-s-house","title":"New exhibition opening at Elizabeth Gaskell鈥檚 House","title_sort":"new exhibition opening at elizabeth gaskell鈥檚 house","content_owner":"default","tags_ids":["65720062753646499e1664aa"],"created":"1970-01-01T00:00:00.000Z","updated":"2023-12-07T17:30:25.637Z","private":false,"resource_raw":{"asset_id":"c460c86fae1b7c383cd9047abedbbef7","public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6","version":1701970228,"version_id":"a80233a4c1370ae8a1272fe66834cebc","signature":"0c6a3518dc9f25f9bc9ba563332dee91c2744f11","width":1200,"height":896,"format":"jpg","resource_type":"image","created_at":"2023-12-07T17:30:28.000Z","pages":1,"bytes":980555,"type":"upload","etag":"1ad9ba437f5e5313cf75e44a63e270f3","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"Optimized-Elizabeth Gaskell's House (2)","api_key":"756897581616859"},"deleted":false,"resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6"}},"id":"65720134753646499e16691e","type":"image","inAssetRequest":false,"alt_text":"New exhibition opening at Elizabeth Gaskell鈥檚 House","expired":false},"locale_count":0,"tags":[{"_id":"6527eb2040495a2d33806cc6","tag":"Sustainability","sort_tag":"sustainability","updated":"2023-10-12T12:48:32.082Z","created":"2023-10-12T12:48:32.082Z","id":"6527eb2040495a2d33806cc6"}],"id":"669f874d9e4dca392466b9d6","parent_id_string":"6525e38b58d8a262bf5e7287","version_id_string":"67ac6ed5d6fe353ee10a18fe","href":"/things-to-see-and-do/sustainable-things-to-do/","absoluteHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","absoluteFolderHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","metaTitle":"Sustainable things to do in Manchester","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":19,"guid":"80e0552f-448d-408e-b88d-7dcd9c064201","data":{"title":"What's On","default_selected":"false","type":"events","use_cat_groups":"on","calendar":"1","cats_events":["7419","8879","135","7359","6469","136","7429","147","6609","149","138"],"show_booking":"false","show_booking_active":"false","show_region":"false","regionidevents":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","cat_groups_events_ids":["6511699b3786100d79bf3de5","651169da3786100d79bf3de7","65281181bd338238afbc2251","6528119ebd338238afbc2253","652803cebd338238afbc2182","652811e9bd338238afbc2255","65281228bd338238afbc2259","6528120dbd338238afbc2257","65281274bd338238afbc225b","652803f7bd338238afbc2184","65280392bd338238afbc2180"],"link_raw":{"id":"650af9e3dc2abf6b654232e5","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af9e3dc2abf6b654232e5","url":"https://www.visitmanchester.com/whats-on/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af9e3dc2abf6b654232e5"},"cat_groups_events":[{"_id":"6511699b3786100d79bf3de5","title":"Art & exhibitions","cats":["134","8969","146"]},{"_id":"651169da3786100d79bf3de7","title":"Festivals","cats":["135"]},{"_id":"65281181bd338238afbc2251","title":"Comedy & entertainment","cats":["7419","8849","5309","8959","4939"]},{"_id":"6528119ebd338238afbc2253","title":"Family friendly","cats":["8879"]},{"_id":"652803cebd338238afbc2182","title":"Food & drink","cats":["7359","9209"]},{"_id":"652811e9bd338238afbc2255","title":"Markets, fetes & fairs","cats":["163","6469","136","5679","9009"]},{"_id":"65281228bd338238afbc2259","title":"Music","cats":["131","7429"]},{"_id":"6528120dbd338238afbc2257","title":"Sport","cats":["147"]},{"_id":"65281274bd338238afbc225b","title":"Theatre","cats":["6609"]},{"_id":"652803f7bd338238afbc2184","title":"Tours","cats":["9489","9339","137"]},{"_id":"65280392bd338238afbc2180","title":"Workshops, talks & lectures","cats":["139","138","8969","149"]}]},"civ":{"instance":{"type":"widget","name":"plugins_common_product_search","site_name":"primary","saved":false,"created":"2024-01-08T11:13:44.486Z","updated":"2024-01-08T11:13:44.486Z","deleted":false,"id":"659bd4fcce7a575babca8098","version_id_string":"659bd4fcce7a575babca8099"},"version":{"data":{"title":"What's On","default_selected":"false","type":"events","use_cat_groups":"on","calendar":"1","cats_events":["7419","8879","135","7359","6469","136","7429","147","6609","149","138"],"show_booking":"false","show_booking_active":"false","show_region":"false","regionidevents":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","cat_groups_events_ids":["6511699b3786100d79bf3de5","651169da3786100d79bf3de7","65281181bd338238afbc2251","6528119ebd338238afbc2253","652803cebd338238afbc2182","652811e9bd338238afbc2255","65281228bd338238afbc2259","6528120dbd338238afbc2257","65281274bd338238afbc225b","652803f7bd338238afbc2184","65280392bd338238afbc2180"],"link_raw":{"id":"650af9e3dc2abf6b654232e5","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af9e3dc2abf6b654232e5","url":"https://www.visitmanchester.com/whats-on/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af9e3dc2abf6b654232e5"},"cat_groups_events":[{"_id":"6511699b3786100d79bf3de5","title":"Art & exhibitions","cats":["134","8969","146"]},{"_id":"651169da3786100d79bf3de7","title":"Festivals","cats":["135"]},{"_id":"65281181bd338238afbc2251","title":"Comedy & entertainment","cats":["7419","8849","5309","8959","4939"]},{"_id":"6528119ebd338238afbc2253","title":"Family friendly","cats":["8879"]},{"_id":"652803cebd338238afbc2182","title":"Food & drink","cats":["7359","9209"]},{"_id":"652811e9bd338238afbc2255","title":"Markets, fetes & fairs","cats":["163","6469","136","5679","9009"]},{"_id":"65281228bd338238afbc2259","title":"Music","cats":["131","7429"]},{"_id":"6528120dbd338238afbc2257","title":"Sport","cats":["147"]},{"_id":"65281274bd338238afbc225b","title":"Theatre","cats":["6609"]},{"_id":"652803f7bd338238afbc2184","title":"Tours","cats":["9489","9339","137"]},{"_id":"65280392bd338238afbc2180","title":"Workshops, talks & lectures","cats":["139","138","8969","149"]}]},"created":"2024-01-08T11:13:44.487Z","id":"659bd4fcce7a575babca8099","instance_id_string":"659bd4fcce7a575babca8098"},"onTrunk":true,"civid":"659bd4fcce7a575babca8098"},"name":"plugins_common_product_search"},"translations":{"translations.static.leo":{"apply":"Apply","clear_filters":"Clear Filters","reset":"Reset","filter":"Filter","sort":"Sort","view":"View","keyword":"Keyword","search_placeholder":"Search","select":"Select","regions":"Regions","categories":"Categories","grid":"Grid","list":"List","map":"Map","show_map":"Show Map","hide_map":"Hide Map","recommended":"Recommended","near_me":"Near Me","read_more":"Read More","quick_view":"Quick View","featured_title":"Partner","visit_website":"Visit Website","email":"E-mail","tollfree":"Toll Free","tab_about":"About","tab_map":"Map","tab_openings":"Dates and Times","tab_guide_prices":"Prices","tab_offers":"Special Offers","tab_faq":"FAQs","tab_gradings":"Gradings","tab_awards":"Awards","tab_also_like":"You might also be interested in...","tab_downloads":"Downloads","tab_routes":"Routes","tab_facilities":"Facilities","tab_virtual_tours":"Virtual Tours","show_more":"Show $1 more","show_less":"Show Less","results":"$1 results","no_results":"There are no results that match your filter.","miles_from_you":"Miles from You","meeting_rooms":"Meeting Rooms","square_feet":"Total Sq. Ft.","largest_room":"Largest Room","sleeping_rooms":"Sleeping Rooms","banquet":"Banquet Capacity","reception":"Reception Capacity","theatre":"Theater Capacity","classroom":"Classroom Capacity","compare":"Compare","close_compare_dropdown":"Close compare dropdown","compare_add":"Add to compare","compare_remove":"Remove from compare","compare_clear_all":"Clear All","compare_limit_message":"You can only compare four (4) items at a time","location":"Location","locations":"Locations","details":"Details","address":"Address","err_loc_timeout":"We're unable to determine your location at this time.","err_loc_blocked":"You must allow location access for distance sorting.","err_loc_radius":"You must be within $1 miles to sort by distance.","date_range_title":"Show Events For","date_range_day":"Day","date_range_week":"Week","date_range_weekend":"Weekend","date_range_month":"Month","date_range_year":"Year","date_range_selected_dates":"Selected Dates","per_page_label":"Items Per Page","tb_add":"Add to Trip","tb_remove":"Remove from Trip","tb_view":"View Trip","facilities":"Facilities","download":"Download Events as CSV","convention":"Convention","venues":"Venues","dates":"Dates","attendance":"Attendance","whats_nearby":"What's Nearby","attractions":"Attractions","dining":"Dining","accommodations":"Accommodations","events":"Events","things_to_do":"Things To Do","get_directions":"Get Directions","redo_search_in_map":"Redo Search in Map","add_to_calendar":"Add to Calendar","add_to_google_calendar":"Add to Google Calendar","add_to_microsoft_calendar":"Add to Microsoft Live Calendar","add_to_outlook_calendar":"Add to Office365 Outlook Calendar","add_to_iCloud_calendar":"Add to iCloud Calendar","add_to_windows_calendar":"Add to Windows Calendar","start_date":"Start Date","end_date":"End Date","learn_more":"Learn more about"}}}</script> </div> </div> <script> require([ 'jquery', 'plugins_core/main', 'sv_site', 'sv_clientMoment', 'plugins_common_custom_product_search', 'plugins_common_custom_utils', ], function( $, core, site, clientMoment, product_search, utils ) { init(); async function init() { const dataString = document.querySelector('#ps_data_80e0552f-448d-408e-b88d-7dcd9c064201').textContent const widget = JSON.parse(dataString); const t = { leo: widget.translations['translations.static.leo'], }; // Collect all select options let options = {} // date format to ensure all dates passed through clientMoment and the date range plugin are formated correctly const queryDateFormat = 'YYYY-MM-DD'; const today = clientMoment().format(queryDateFormat); const thisWeek = clientMoment().add(6, 'days').format(queryDateFormat); const thisMonth = clientMoment().add(1, 'months').format(queryDateFormat); const weekendFri = clientMoment().day(5).format(queryDateFormat); const weekendSun = clientMoment().day(7).format(queryDateFormat); const customStart = clientMoment(widget.data.from_date).format(queryDateFormat); const customEnd = clientMoment(widget.data.to_date).format(queryDateFormat); const showBooking = (widget?.data?.show_booking ?? 'false') === 'true'; const showBookingActiveByDefault = (widget?.data?.show_booking_active ?? 'false') === 'true'; const showRegion = (widget?.data?.show_region ?? 'false') === 'true'; const useCatGroups = (widget?.data?.use_cat_groups ?? 'off') === 'on'; const hasCatGroups = widget?.data?.use_cat_groups === 'on'; // Set initial start and end days for the calendar dropdown let initialDates = { start: today, end: today } if (widget.data.defaultRange === 'week') { initialDates.end = thisWeek; } else if (widget.data.defaultRange === 'weekend') { initialDates.start = weekendFri; initialDates.end = weekendSun; } else if (widget.data.defaultRange === 'month') { initialDates.end = thisMonth; } else if (widget.data.defaultRange === 'custom') { initialDates.start = customStart; initialDates.end = customEnd; } // The hidden filter is to store values that are manually selected in the CMS. // Regions and event categories are the two available fields for manual selection const hiddenFilters = {} if (widget.data.type === 'listings' && widget.data.regionid) { hiddenFilters.regionid = widget.data.regionid; } else if (widget.data.type === 'events' && widget.data.regionidevents) { hiddenFilters.regionidevents = widget.data.regionidevents; } else if (widget.data.type === 'events' && widget.data.cat_groups_events && widget.data.cat_groups_events.length > 0) { hiddenFilters.catids = widget.data.cat_groups_events; } else if (widget.data.type === 'offers' && widget.data.offer_category && widget.data.offer_category.length > 0) { hiddenFilters.catid = data.offer_category; } if (widget.data.hide_date_filters === 'true') { hiddenFilters.dates = initialDates; } if (widget.data.channel) { hiddenFilters.channelkey = widget.data.channel; } // if listings if (widget.data.type === 'listings') { if (useCatGroups) { // if doesn't have category groups const [categorygroups, categorygroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_categorygroups/aggregate/', { json: JSON.stringify({ filter: {}, options: { castDocs:false, fields: { categorygroupid: 1, categorygroup: 1 } } }), token: core.simpleToken } ))); if (categorygroupsErr) return new Error(categorygroupsErr); const groups = !!widget ?.data ?.categorygroups ? categorygroups.docs.filter(group => widget.data.categorygroups.indexOf(group.categorygroupid.toString()) !== -1) : categorygroups.docs; options.groups = groups.map(group => ({ label: group.categorygroup, value: group.categorygroupid.toString() })); } else { const [allSubcats, allSubcatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_subcats/find/', { json: JSON.stringify({ filter: { active: { $eq: true }, has_listings: { $eq: true }, sites: { $in: [site.site] } }, options: { castDocs: false, sort: { fullname: 1 }, fields: { categoryid: 1, subcatid: 1, subcatname: 1, } } }), token: core.simpleToken } ))); if (allSubcatsErr) return new Error(allSubcatsErr); let subcats = allSubcats.docs; if (widget?.data?.cats) { subcats = subcats.filter(subcat => subcat.categoryid === Number(widget.data.cats)); } options.subcats = subcats.map(subcat => ({ label: subcat.subcatname, value: subcat.subcatid.toString() })); } if (!widget.data.regionid) { // if doesn't have regions const [regions, regionsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_polygons/aggregate/', { json: JSON.stringify({ pipeline: [ { $sort: { region: 1 } }, { $project: { label: "$region", value: "$regionid" } }, ] }), token: core.simpleToken } ))); if (regionsErr) return new Error(regionsErr); options.regions = regions.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'events') { const catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : []; options.catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : [] // if events if (useCatGroups) { const [eventCatGroups, eventCatGroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_catgroup_x_tags/find/', { json: JSON.stringify({ filter: {}, options: { castDocs: false, sort: { sort_tag: 1 }, fields: { tag: 1, "cat_groups.title": 1, "cat_groups.cats": 1, } } }), token: core.simpleToken } ))); if (eventCatGroupsErr) return new Error(eventCatGroupsErr); eventCatGroups.docs.map(tag => tag.cat_groups.sort((a, b) => a.title.localeCompare(b.title))); options.catgroups = eventCatGroups.docs.map(tag => tag.cat_groups.map(cg => ({ label: cg.title, value: cg.cats.join(','), group: tag.tag, }))).flat(); if (widget?.data?.cat_groups_events) { const selectedGroups = widget.data.cat_groups_events.map(cg => cg.title); options.catgroups = options.catgroups.filter(cg => selectedGroups.indexOf(cg.label) !== -1); } } else { const [allCats, allCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_categories/find/', { json: JSON.stringify({ filter: { calendarid: { $eq: (widget?.data?.calendar ?? '1') }, ...(widget?.data?.cats_events ? { value: { $in: widget.data.cats_events } } : {}), }, options: { castDocs: false, sort: { label: 1 }, fields: { label: 1, value: 1, } } }), token: core.simpleToken } ))); if (allCatsErr) return new Error(allCatsErr); options.cats = allCats.docs; } if (!widget.data.regionidevents) { const [regionsevents, regionseventsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_events_metadata/aggregate/', { json: JSON.stringify({ pipeline: [ { "$project" : { "option" : "$udfs_object.11.values" } }, { "$unwind" : "$option" }, { $sort: { regionsevents: 1 } }, { $project: { label: "$option.listvalue", value: "$option.listid" } }, ] }), token: core.simpleToken } ))); if (regionseventsErr) return new Error(regionseventsErr); options.regionsevents = regionsevents.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'offers') { // if offers const [offerCats, offerCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_offers_offermeta/aggregate/', { json: JSON.stringify({ pipeline: [ { $project: { _id: 0, categories: 1 } }, { $unwind: "$categories" }, { $match: { "categories.active": true } }, { $project: { label: "$categories.categoryname", value: { $toString: "$categories.categoryid" }, } }, { $sort: { "label": 1 } }, ] }), token: core.simpleToken } ))); if (offerCatsErr) return new Error(offerCatsErr); options.cats = offerCats.docs; } const vue = product_search.getVue({ rootNode: $('#ps_80e0552f-448d-408e-b88d-7dcd9c064201'), type: widget.data.type, link: widget.data.link.url, linkText: widget.data.link_text, hiddenFilters: hiddenFilters, translations: t.leo, filters: [ { name : "filter_onlybooking", label : "Search Availability", type : "toggle", show: showBooking, value: "true", initialValue: showBookingActiveByDefault, }, { name: 'filter_daterange[start]', label: 'Check in', type: 'date_availability_start', show: showBooking, initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: 'Check out', type: 'date_availability_end', show: showBooking, initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_adults', label: 'Number of Adults', type: 'select', show: showBooking, initialValue: '1', typeExtra: { options: [ { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_children', label: 'Number of Children', type: 'select', show: showBooking, initialValue: '0', typeExtra: { options: [ { label: '0', value: '0' }, { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_daterange[start]', label: t.leo.start_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: t.leo.end_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_cat_groups[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && useCatGroups, typeExtra: { options: options.groups || [] } }, { name: useCatGroups ? 'filter_cat_groups[0]' : 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events', typeExtra: { options: useCatGroups ? (options.catGroupsEvents || []) : (options.cats || []), } }, { name: 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: (widget.data.type === 'offers' && !widget.data.offer_category), typeExtra: { options: options.cats } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && !widget.data.regionid && showRegion, typeExtra: { options: options.regions || [] } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events' && !widget.data.regionidevents && showRegion, typeExtra: { options: options.regionsevents || [] } }, { name: 'filter_keyword', label: t.leo.keyword, placeholder: t.leo.search_placeholder, type: 'text', show: true }, { name: 'filter_channel[0]', label: 'Channel', placeholder: t.leo.search_placeholder, show: !widget.data.channel, typeExtra: { options: options.channel || [] } }, ] }); } }); </script></div><div data-civid="659bd4fcce7a575babca809a" class="contentRender contentRender_20 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="92" data-sv-index="20" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'> <button role="tab" aria-controls="panel-3c0787de-3db8-463e-8d9c-113a59230d35" id="tab-3c0787de-3db8-463e-8d9c-113a59230d35" class="mobile-tab" >Accommodation <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="3c0787de-3db8-463e-8d9c-113a59230d35" data-product-search="Accommodation" data-default-selected="defaultSelected" role="tabpanel" id="panel-3c0787de-3db8-463e-8d9c-113a59230d35" aria-labelledby="tab-3c0787de-3db8-463e-8d9c-113a59230d35" class="ps-panel" > <div id="ps_3c0787de-3db8-463e-8d9c-113a59230d35"> <script id="ps_data_3c0787de-3db8-463e-8d9c-113a59230d35" type="text/template">{"sections":{},"data":{"title":"Accommodation","default_selected":"true","type":"listings","use_cat_groups":"on","cats":"1","categorygroups":["154951","154991","154981","154961","153841","154971"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"false","regionid":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650af313dc2abf6b6542303e","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af313dc2abf6b6542303e","url":"https://www.visitmanchester.com/where-to-stay/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af313dc2abf6b6542303e"}},"guid":"3c0787de-3db8-463e-8d9c-113a59230d35","customSettings":{},"widgetArgs":{"nav":{"_id":"669f874d9e4dca392466b9d6","title":"Sustainable things to do","folder":"sustainable-things-to-do","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-23T10:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"65720134753646499e16691e","description":"<p>Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.</p>","meta_title":"Sustainable things to do in Manchester","meta_description":"Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.","tags_ids":["6527eb2040495a2d33806cc6"],"parent_id":"6525e38b58d8a262bf5e7287","parents_ids":["6525e38b58d8a262bf5e7287"],"content_owner":"default","site_name":"primary","section":"main","updated":"2025-02-12T09:50:13.640Z","title_sort":"sustainable things to do","site_section":"primary.main","published":true,"sortorder":8,"created":"2024-07-23T10:34:53.299Z","amp":false,"cms_title":"Sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","cms_title_sort":"sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","folderHref":"/things-to-see-and-do/sustainable-things-to-do/","version_id":"67ac6ed5d6fe353ee10a18fe","image":{"_id":"65720134753646499e16691e","legacy_id":"img-new-exhibition-opening-at-elizabeth-gaskell-s-house","title":"New exhibition opening at Elizabeth Gaskell鈥檚 House","title_sort":"new exhibition opening at elizabeth gaskell鈥檚 house","content_owner":"default","tags_ids":["65720062753646499e1664aa"],"created":"1970-01-01T00:00:00.000Z","updated":"2023-12-07T17:30:25.637Z","private":false,"resource_raw":{"asset_id":"c460c86fae1b7c383cd9047abedbbef7","public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6","version":1701970228,"version_id":"a80233a4c1370ae8a1272fe66834cebc","signature":"0c6a3518dc9f25f9bc9ba563332dee91c2744f11","width":1200,"height":896,"format":"jpg","resource_type":"image","created_at":"2023-12-07T17:30:28.000Z","pages":1,"bytes":980555,"type":"upload","etag":"1ad9ba437f5e5313cf75e44a63e270f3","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"Optimized-Elizabeth Gaskell's House (2)","api_key":"756897581616859"},"deleted":false,"resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6"}},"id":"65720134753646499e16691e","type":"image","inAssetRequest":false,"alt_text":"New exhibition opening at Elizabeth Gaskell鈥檚 House","expired":false},"locale_count":0,"tags":[{"_id":"6527eb2040495a2d33806cc6","tag":"Sustainability","sort_tag":"sustainability","updated":"2023-10-12T12:48:32.082Z","created":"2023-10-12T12:48:32.082Z","id":"6527eb2040495a2d33806cc6"}],"id":"669f874d9e4dca392466b9d6","parent_id_string":"6525e38b58d8a262bf5e7287","version_id_string":"67ac6ed5d6fe353ee10a18fe","href":"/things-to-see-and-do/sustainable-things-to-do/","absoluteHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","absoluteFolderHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","metaTitle":"Sustainable things to do in Manchester","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":20,"guid":"3c0787de-3db8-463e-8d9c-113a59230d35","data":{"title":"Accommodation","default_selected":"true","type":"listings","use_cat_groups":"on","cats":"1","categorygroups":["154951","154991","154981","154961","153841","154971"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"false","regionid":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650af313dc2abf6b6542303e","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af313dc2abf6b6542303e","url":"https://www.visitmanchester.com/where-to-stay/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af313dc2abf6b6542303e"}},"civ":{"instance":{"type":"widget","name":"plugins_common_product_search","site_name":"primary","saved":false,"created":"2024-01-08T11:13:44.489Z","updated":"2024-01-08T11:13:44.489Z","deleted":false,"id":"659bd4fcce7a575babca809a","version_id_string":"659bd4fcce7a575babca809b"},"version":{"data":{"title":"Accommodation","default_selected":"true","type":"listings","use_cat_groups":"on","cats":"1","categorygroups":["154951","154991","154981","154961","153841","154971"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"false","regionid":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650af313dc2abf6b6542303e","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af313dc2abf6b6542303e","url":"https://www.visitmanchester.com/where-to-stay/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af313dc2abf6b6542303e"}},"created":"2024-01-08T11:13:44.490Z","id":"659bd4fcce7a575babca809b","instance_id_string":"659bd4fcce7a575babca809a"},"onTrunk":true,"civid":"659bd4fcce7a575babca809a"},"name":"plugins_common_product_search"},"translations":{"translations.static.leo":{"apply":"Apply","clear_filters":"Clear Filters","reset":"Reset","filter":"Filter","sort":"Sort","view":"View","keyword":"Keyword","search_placeholder":"Search","select":"Select","regions":"Regions","categories":"Categories","grid":"Grid","list":"List","map":"Map","show_map":"Show Map","hide_map":"Hide Map","recommended":"Recommended","near_me":"Near Me","read_more":"Read More","quick_view":"Quick View","featured_title":"Partner","visit_website":"Visit Website","email":"E-mail","tollfree":"Toll Free","tab_about":"About","tab_map":"Map","tab_openings":"Dates and Times","tab_guide_prices":"Prices","tab_offers":"Special Offers","tab_faq":"FAQs","tab_gradings":"Gradings","tab_awards":"Awards","tab_also_like":"You might also be interested in...","tab_downloads":"Downloads","tab_routes":"Routes","tab_facilities":"Facilities","tab_virtual_tours":"Virtual Tours","show_more":"Show $1 more","show_less":"Show Less","results":"$1 results","no_results":"There are no results that match your filter.","miles_from_you":"Miles from You","meeting_rooms":"Meeting Rooms","square_feet":"Total Sq. Ft.","largest_room":"Largest Room","sleeping_rooms":"Sleeping Rooms","banquet":"Banquet Capacity","reception":"Reception Capacity","theatre":"Theater Capacity","classroom":"Classroom Capacity","compare":"Compare","close_compare_dropdown":"Close compare dropdown","compare_add":"Add to compare","compare_remove":"Remove from compare","compare_clear_all":"Clear All","compare_limit_message":"You can only compare four (4) items at a time","location":"Location","locations":"Locations","details":"Details","address":"Address","err_loc_timeout":"We're unable to determine your location at this time.","err_loc_blocked":"You must allow location access for distance sorting.","err_loc_radius":"You must be within $1 miles to sort by distance.","date_range_title":"Show Events For","date_range_day":"Day","date_range_week":"Week","date_range_weekend":"Weekend","date_range_month":"Month","date_range_year":"Year","date_range_selected_dates":"Selected Dates","per_page_label":"Items Per Page","tb_add":"Add to Trip","tb_remove":"Remove from Trip","tb_view":"View Trip","facilities":"Facilities","download":"Download Events as CSV","convention":"Convention","venues":"Venues","dates":"Dates","attendance":"Attendance","whats_nearby":"What's Nearby","attractions":"Attractions","dining":"Dining","accommodations":"Accommodations","events":"Events","things_to_do":"Things To Do","get_directions":"Get Directions","redo_search_in_map":"Redo Search in Map","add_to_calendar":"Add to Calendar","add_to_google_calendar":"Add to Google Calendar","add_to_microsoft_calendar":"Add to Microsoft Live Calendar","add_to_outlook_calendar":"Add to Office365 Outlook Calendar","add_to_iCloud_calendar":"Add to iCloud Calendar","add_to_windows_calendar":"Add to Windows Calendar","start_date":"Start Date","end_date":"End Date","learn_more":"Learn more about"}}}</script> </div> </div> <script> require([ 'jquery', 'plugins_core/main', 'sv_site', 'sv_clientMoment', 'plugins_common_custom_product_search', 'plugins_common_custom_utils', ], function( $, core, site, clientMoment, product_search, utils ) { init(); async function init() { const dataString = document.querySelector('#ps_data_3c0787de-3db8-463e-8d9c-113a59230d35').textContent const widget = JSON.parse(dataString); const t = { leo: widget.translations['translations.static.leo'], }; // Collect all select options let options = {} // date format to ensure all dates passed through clientMoment and the date range plugin are formated correctly const queryDateFormat = 'YYYY-MM-DD'; const today = clientMoment().format(queryDateFormat); const thisWeek = clientMoment().add(6, 'days').format(queryDateFormat); const thisMonth = clientMoment().add(1, 'months').format(queryDateFormat); const weekendFri = clientMoment().day(5).format(queryDateFormat); const weekendSun = clientMoment().day(7).format(queryDateFormat); const customStart = clientMoment(widget.data.from_date).format(queryDateFormat); const customEnd = clientMoment(widget.data.to_date).format(queryDateFormat); const showBooking = (widget?.data?.show_booking ?? 'false') === 'true'; const showBookingActiveByDefault = (widget?.data?.show_booking_active ?? 'false') === 'true'; const showRegion = (widget?.data?.show_region ?? 'false') === 'true'; const useCatGroups = (widget?.data?.use_cat_groups ?? 'off') === 'on'; const hasCatGroups = widget?.data?.use_cat_groups === 'on'; // Set initial start and end days for the calendar dropdown let initialDates = { start: today, end: today } if (widget.data.defaultRange === 'week') { initialDates.end = thisWeek; } else if (widget.data.defaultRange === 'weekend') { initialDates.start = weekendFri; initialDates.end = weekendSun; } else if (widget.data.defaultRange === 'month') { initialDates.end = thisMonth; } else if (widget.data.defaultRange === 'custom') { initialDates.start = customStart; initialDates.end = customEnd; } // The hidden filter is to store values that are manually selected in the CMS. // Regions and event categories are the two available fields for manual selection const hiddenFilters = {} if (widget.data.type === 'listings' && widget.data.regionid) { hiddenFilters.regionid = widget.data.regionid; } else if (widget.data.type === 'events' && widget.data.regionidevents) { hiddenFilters.regionidevents = widget.data.regionidevents; } else if (widget.data.type === 'events' && widget.data.cat_groups_events && widget.data.cat_groups_events.length > 0) { hiddenFilters.catids = widget.data.cat_groups_events; } else if (widget.data.type === 'offers' && widget.data.offer_category && widget.data.offer_category.length > 0) { hiddenFilters.catid = data.offer_category; } if (widget.data.hide_date_filters === 'true') { hiddenFilters.dates = initialDates; } if (widget.data.channel) { hiddenFilters.channelkey = widget.data.channel; } // if listings if (widget.data.type === 'listings') { if (useCatGroups) { // if doesn't have category groups const [categorygroups, categorygroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_categorygroups/aggregate/', { json: JSON.stringify({ filter: {}, options: { castDocs:false, fields: { categorygroupid: 1, categorygroup: 1 } } }), token: core.simpleToken } ))); if (categorygroupsErr) return new Error(categorygroupsErr); const groups = !!widget ?.data ?.categorygroups ? categorygroups.docs.filter(group => widget.data.categorygroups.indexOf(group.categorygroupid.toString()) !== -1) : categorygroups.docs; options.groups = groups.map(group => ({ label: group.categorygroup, value: group.categorygroupid.toString() })); } else { const [allSubcats, allSubcatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_subcats/find/', { json: JSON.stringify({ filter: { active: { $eq: true }, has_listings: { $eq: true }, sites: { $in: [site.site] } }, options: { castDocs: false, sort: { fullname: 1 }, fields: { categoryid: 1, subcatid: 1, subcatname: 1, } } }), token: core.simpleToken } ))); if (allSubcatsErr) return new Error(allSubcatsErr); let subcats = allSubcats.docs; if (widget?.data?.cats) { subcats = subcats.filter(subcat => subcat.categoryid === Number(widget.data.cats)); } options.subcats = subcats.map(subcat => ({ label: subcat.subcatname, value: subcat.subcatid.toString() })); } if (!widget.data.regionid) { // if doesn't have regions const [regions, regionsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_polygons/aggregate/', { json: JSON.stringify({ pipeline: [ { $sort: { region: 1 } }, { $project: { label: "$region", value: "$regionid" } }, ] }), token: core.simpleToken } ))); if (regionsErr) return new Error(regionsErr); options.regions = regions.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'events') { const catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : []; options.catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : [] // if events if (useCatGroups) { const [eventCatGroups, eventCatGroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_catgroup_x_tags/find/', { json: JSON.stringify({ filter: {}, options: { castDocs: false, sort: { sort_tag: 1 }, fields: { tag: 1, "cat_groups.title": 1, "cat_groups.cats": 1, } } }), token: core.simpleToken } ))); if (eventCatGroupsErr) return new Error(eventCatGroupsErr); eventCatGroups.docs.map(tag => tag.cat_groups.sort((a, b) => a.title.localeCompare(b.title))); options.catgroups = eventCatGroups.docs.map(tag => tag.cat_groups.map(cg => ({ label: cg.title, value: cg.cats.join(','), group: tag.tag, }))).flat(); if (widget?.data?.cat_groups_events) { const selectedGroups = widget.data.cat_groups_events.map(cg => cg.title); options.catgroups = options.catgroups.filter(cg => selectedGroups.indexOf(cg.label) !== -1); } } else { const [allCats, allCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_categories/find/', { json: JSON.stringify({ filter: { calendarid: { $eq: (widget?.data?.calendar ?? '1') }, ...(widget?.data?.cats_events ? { value: { $in: widget.data.cats_events } } : {}), }, options: { castDocs: false, sort: { label: 1 }, fields: { label: 1, value: 1, } } }), token: core.simpleToken } ))); if (allCatsErr) return new Error(allCatsErr); options.cats = allCats.docs; } if (!widget.data.regionidevents) { const [regionsevents, regionseventsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_events_metadata/aggregate/', { json: JSON.stringify({ pipeline: [ { "$project" : { "option" : "$udfs_object.11.values" } }, { "$unwind" : "$option" }, { $sort: { regionsevents: 1 } }, { $project: { label: "$option.listvalue", value: "$option.listid" } }, ] }), token: core.simpleToken } ))); if (regionseventsErr) return new Error(regionseventsErr); options.regionsevents = regionsevents.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'offers') { // if offers const [offerCats, offerCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_offers_offermeta/aggregate/', { json: JSON.stringify({ pipeline: [ { $project: { _id: 0, categories: 1 } }, { $unwind: "$categories" }, { $match: { "categories.active": true } }, { $project: { label: "$categories.categoryname", value: { $toString: "$categories.categoryid" }, } }, { $sort: { "label": 1 } }, ] }), token: core.simpleToken } ))); if (offerCatsErr) return new Error(offerCatsErr); options.cats = offerCats.docs; } const vue = product_search.getVue({ rootNode: $('#ps_3c0787de-3db8-463e-8d9c-113a59230d35'), type: widget.data.type, link: widget.data.link.url, linkText: widget.data.link_text, hiddenFilters: hiddenFilters, translations: t.leo, filters: [ { name : "filter_onlybooking", label : "Search Availability", type : "toggle", show: showBooking, value: "true", initialValue: showBookingActiveByDefault, }, { name: 'filter_daterange[start]', label: 'Check in', type: 'date_availability_start', show: showBooking, initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: 'Check out', type: 'date_availability_end', show: showBooking, initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_adults', label: 'Number of Adults', type: 'select', show: showBooking, initialValue: '1', typeExtra: { options: [ { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_children', label: 'Number of Children', type: 'select', show: showBooking, initialValue: '0', typeExtra: { options: [ { label: '0', value: '0' }, { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_daterange[start]', label: t.leo.start_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: t.leo.end_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_cat_groups[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && useCatGroups, typeExtra: { options: options.groups || [] } }, { name: useCatGroups ? 'filter_cat_groups[0]' : 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events', typeExtra: { options: useCatGroups ? (options.catGroupsEvents || []) : (options.cats || []), } }, { name: 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: (widget.data.type === 'offers' && !widget.data.offer_category), typeExtra: { options: options.cats } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && !widget.data.regionid && showRegion, typeExtra: { options: options.regions || [] } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events' && !widget.data.regionidevents && showRegion, typeExtra: { options: options.regionsevents || [] } }, { name: 'filter_keyword', label: t.leo.keyword, placeholder: t.leo.search_placeholder, type: 'text', show: true }, { name: 'filter_channel[0]', label: 'Channel', placeholder: t.leo.search_placeholder, show: !widget.data.channel, typeExtra: { options: options.channel || [] } }, ] }); } }); </script></div><div data-civid="659bd4fcce7a575babca809c" class="contentRender contentRender_21 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="93" data-sv-index="21" data-gtm-vars='{ "tCore" : { "contentNum" : "4" } }'> <button role="tab" aria-controls="panel-8fe5a625-ee51-4607-bd0b-ee5c633fedc6" id="tab-8fe5a625-ee51-4607-bd0b-ee5c633fedc6" class="mobile-tab" >Shopping <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="8fe5a625-ee51-4607-bd0b-ee5c633fedc6" data-product-search="Shopping" data-default-selected="closed" role="tabpanel" id="panel-8fe5a625-ee51-4607-bd0b-ee5c633fedc6" aria-labelledby="tab-8fe5a625-ee51-4607-bd0b-ee5c633fedc6" class="ps-panel" > <div id="ps_8fe5a625-ee51-4607-bd0b-ee5c633fedc6"> <script id="ps_data_8fe5a625-ee51-4607-bd0b-ee5c633fedc6" type="text/template">{"sections":{},"data":{"title":"Shopping","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155411","155281","155291","155391","155301","155271","155321"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"false","regionid":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650af2e0dc2abf6b65422fbe","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af2e0dc2abf6b65422fbe","url":"https://www.visitmanchester.com/shopping/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af2e0dc2abf6b65422fbe"}},"guid":"8fe5a625-ee51-4607-bd0b-ee5c633fedc6","customSettings":{},"widgetArgs":{"nav":{"_id":"669f874d9e4dca392466b9d6","title":"Sustainable things to do","folder":"sustainable-things-to-do","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-23T10:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"65720134753646499e16691e","description":"<p>Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.</p>","meta_title":"Sustainable things to do in Manchester","meta_description":"Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.","tags_ids":["6527eb2040495a2d33806cc6"],"parent_id":"6525e38b58d8a262bf5e7287","parents_ids":["6525e38b58d8a262bf5e7287"],"content_owner":"default","site_name":"primary","section":"main","updated":"2025-02-12T09:50:13.640Z","title_sort":"sustainable things to do","site_section":"primary.main","published":true,"sortorder":8,"created":"2024-07-23T10:34:53.299Z","amp":false,"cms_title":"Sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","cms_title_sort":"sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","folderHref":"/things-to-see-and-do/sustainable-things-to-do/","version_id":"67ac6ed5d6fe353ee10a18fe","image":{"_id":"65720134753646499e16691e","legacy_id":"img-new-exhibition-opening-at-elizabeth-gaskell-s-house","title":"New exhibition opening at Elizabeth Gaskell鈥檚 House","title_sort":"new exhibition opening at elizabeth gaskell鈥檚 house","content_owner":"default","tags_ids":["65720062753646499e1664aa"],"created":"1970-01-01T00:00:00.000Z","updated":"2023-12-07T17:30:25.637Z","private":false,"resource_raw":{"asset_id":"c460c86fae1b7c383cd9047abedbbef7","public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6","version":1701970228,"version_id":"a80233a4c1370ae8a1272fe66834cebc","signature":"0c6a3518dc9f25f9bc9ba563332dee91c2744f11","width":1200,"height":896,"format":"jpg","resource_type":"image","created_at":"2023-12-07T17:30:28.000Z","pages":1,"bytes":980555,"type":"upload","etag":"1ad9ba437f5e5313cf75e44a63e270f3","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"Optimized-Elizabeth Gaskell's House (2)","api_key":"756897581616859"},"deleted":false,"resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6"}},"id":"65720134753646499e16691e","type":"image","inAssetRequest":false,"alt_text":"New exhibition opening at Elizabeth Gaskell鈥檚 House","expired":false},"locale_count":0,"tags":[{"_id":"6527eb2040495a2d33806cc6","tag":"Sustainability","sort_tag":"sustainability","updated":"2023-10-12T12:48:32.082Z","created":"2023-10-12T12:48:32.082Z","id":"6527eb2040495a2d33806cc6"}],"id":"669f874d9e4dca392466b9d6","parent_id_string":"6525e38b58d8a262bf5e7287","version_id_string":"67ac6ed5d6fe353ee10a18fe","href":"/things-to-see-and-do/sustainable-things-to-do/","absoluteHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","absoluteFolderHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","metaTitle":"Sustainable things to do in Manchester","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":21,"guid":"8fe5a625-ee51-4607-bd0b-ee5c633fedc6","data":{"title":"Shopping","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155411","155281","155291","155391","155301","155271","155321"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"false","regionid":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650af2e0dc2abf6b65422fbe","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af2e0dc2abf6b65422fbe","url":"https://www.visitmanchester.com/shopping/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af2e0dc2abf6b65422fbe"}},"civ":{"instance":{"type":"widget","name":"plugins_common_product_search","site_name":"primary","saved":false,"created":"2024-01-08T11:13:44.492Z","updated":"2024-01-08T11:13:44.492Z","deleted":false,"id":"659bd4fcce7a575babca809c","version_id_string":"659bd4fcce7a575babca809d"},"version":{"data":{"title":"Shopping","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155411","155281","155291","155391","155301","155271","155321"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"false","regionid":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650af2e0dc2abf6b65422fbe","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af2e0dc2abf6b65422fbe","url":"https://www.visitmanchester.com/shopping/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af2e0dc2abf6b65422fbe"}},"created":"2024-01-08T11:13:44.493Z","id":"659bd4fcce7a575babca809d","instance_id_string":"659bd4fcce7a575babca809c"},"onTrunk":true,"civid":"659bd4fcce7a575babca809c"},"name":"plugins_common_product_search"},"translations":{"translations.static.leo":{"apply":"Apply","clear_filters":"Clear Filters","reset":"Reset","filter":"Filter","sort":"Sort","view":"View","keyword":"Keyword","search_placeholder":"Search","select":"Select","regions":"Regions","categories":"Categories","grid":"Grid","list":"List","map":"Map","show_map":"Show Map","hide_map":"Hide Map","recommended":"Recommended","near_me":"Near Me","read_more":"Read More","quick_view":"Quick View","featured_title":"Partner","visit_website":"Visit Website","email":"E-mail","tollfree":"Toll Free","tab_about":"About","tab_map":"Map","tab_openings":"Dates and Times","tab_guide_prices":"Prices","tab_offers":"Special Offers","tab_faq":"FAQs","tab_gradings":"Gradings","tab_awards":"Awards","tab_also_like":"You might also be interested in...","tab_downloads":"Downloads","tab_routes":"Routes","tab_facilities":"Facilities","tab_virtual_tours":"Virtual Tours","show_more":"Show $1 more","show_less":"Show Less","results":"$1 results","no_results":"There are no results that match your filter.","miles_from_you":"Miles from You","meeting_rooms":"Meeting Rooms","square_feet":"Total Sq. Ft.","largest_room":"Largest Room","sleeping_rooms":"Sleeping Rooms","banquet":"Banquet Capacity","reception":"Reception Capacity","theatre":"Theater Capacity","classroom":"Classroom Capacity","compare":"Compare","close_compare_dropdown":"Close compare dropdown","compare_add":"Add to compare","compare_remove":"Remove from compare","compare_clear_all":"Clear All","compare_limit_message":"You can only compare four (4) items at a time","location":"Location","locations":"Locations","details":"Details","address":"Address","err_loc_timeout":"We're unable to determine your location at this time.","err_loc_blocked":"You must allow location access for distance sorting.","err_loc_radius":"You must be within $1 miles to sort by distance.","date_range_title":"Show Events For","date_range_day":"Day","date_range_week":"Week","date_range_weekend":"Weekend","date_range_month":"Month","date_range_year":"Year","date_range_selected_dates":"Selected Dates","per_page_label":"Items Per Page","tb_add":"Add to Trip","tb_remove":"Remove from Trip","tb_view":"View Trip","facilities":"Facilities","download":"Download Events as CSV","convention":"Convention","venues":"Venues","dates":"Dates","attendance":"Attendance","whats_nearby":"What's Nearby","attractions":"Attractions","dining":"Dining","accommodations":"Accommodations","events":"Events","things_to_do":"Things To Do","get_directions":"Get Directions","redo_search_in_map":"Redo Search in Map","add_to_calendar":"Add to Calendar","add_to_google_calendar":"Add to Google Calendar","add_to_microsoft_calendar":"Add to Microsoft Live Calendar","add_to_outlook_calendar":"Add to Office365 Outlook Calendar","add_to_iCloud_calendar":"Add to iCloud Calendar","add_to_windows_calendar":"Add to Windows Calendar","start_date":"Start Date","end_date":"End Date","learn_more":"Learn more about"}}}</script> </div> </div> <script> require([ 'jquery', 'plugins_core/main', 'sv_site', 'sv_clientMoment', 'plugins_common_custom_product_search', 'plugins_common_custom_utils', ], function( $, core, site, clientMoment, product_search, utils ) { init(); async function init() { const dataString = document.querySelector('#ps_data_8fe5a625-ee51-4607-bd0b-ee5c633fedc6').textContent const widget = JSON.parse(dataString); const t = { leo: widget.translations['translations.static.leo'], }; // Collect all select options let options = {} // date format to ensure all dates passed through clientMoment and the date range plugin are formated correctly const queryDateFormat = 'YYYY-MM-DD'; const today = clientMoment().format(queryDateFormat); const thisWeek = clientMoment().add(6, 'days').format(queryDateFormat); const thisMonth = clientMoment().add(1, 'months').format(queryDateFormat); const weekendFri = clientMoment().day(5).format(queryDateFormat); const weekendSun = clientMoment().day(7).format(queryDateFormat); const customStart = clientMoment(widget.data.from_date).format(queryDateFormat); const customEnd = clientMoment(widget.data.to_date).format(queryDateFormat); const showBooking = (widget?.data?.show_booking ?? 'false') === 'true'; const showBookingActiveByDefault = (widget?.data?.show_booking_active ?? 'false') === 'true'; const showRegion = (widget?.data?.show_region ?? 'false') === 'true'; const useCatGroups = (widget?.data?.use_cat_groups ?? 'off') === 'on'; const hasCatGroups = widget?.data?.use_cat_groups === 'on'; // Set initial start and end days for the calendar dropdown let initialDates = { start: today, end: today } if (widget.data.defaultRange === 'week') { initialDates.end = thisWeek; } else if (widget.data.defaultRange === 'weekend') { initialDates.start = weekendFri; initialDates.end = weekendSun; } else if (widget.data.defaultRange === 'month') { initialDates.end = thisMonth; } else if (widget.data.defaultRange === 'custom') { initialDates.start = customStart; initialDates.end = customEnd; } // The hidden filter is to store values that are manually selected in the CMS. // Regions and event categories are the two available fields for manual selection const hiddenFilters = {} if (widget.data.type === 'listings' && widget.data.regionid) { hiddenFilters.regionid = widget.data.regionid; } else if (widget.data.type === 'events' && widget.data.regionidevents) { hiddenFilters.regionidevents = widget.data.regionidevents; } else if (widget.data.type === 'events' && widget.data.cat_groups_events && widget.data.cat_groups_events.length > 0) { hiddenFilters.catids = widget.data.cat_groups_events; } else if (widget.data.type === 'offers' && widget.data.offer_category && widget.data.offer_category.length > 0) { hiddenFilters.catid = data.offer_category; } if (widget.data.hide_date_filters === 'true') { hiddenFilters.dates = initialDates; } if (widget.data.channel) { hiddenFilters.channelkey = widget.data.channel; } // if listings if (widget.data.type === 'listings') { if (useCatGroups) { // if doesn't have category groups const [categorygroups, categorygroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_categorygroups/aggregate/', { json: JSON.stringify({ filter: {}, options: { castDocs:false, fields: { categorygroupid: 1, categorygroup: 1 } } }), token: core.simpleToken } ))); if (categorygroupsErr) return new Error(categorygroupsErr); const groups = !!widget ?.data ?.categorygroups ? categorygroups.docs.filter(group => widget.data.categorygroups.indexOf(group.categorygroupid.toString()) !== -1) : categorygroups.docs; options.groups = groups.map(group => ({ label: group.categorygroup, value: group.categorygroupid.toString() })); } else { const [allSubcats, allSubcatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_subcats/find/', { json: JSON.stringify({ filter: { active: { $eq: true }, has_listings: { $eq: true }, sites: { $in: [site.site] } }, options: { castDocs: false, sort: { fullname: 1 }, fields: { categoryid: 1, subcatid: 1, subcatname: 1, } } }), token: core.simpleToken } ))); if (allSubcatsErr) return new Error(allSubcatsErr); let subcats = allSubcats.docs; if (widget?.data?.cats) { subcats = subcats.filter(subcat => subcat.categoryid === Number(widget.data.cats)); } options.subcats = subcats.map(subcat => ({ label: subcat.subcatname, value: subcat.subcatid.toString() })); } if (!widget.data.regionid) { // if doesn't have regions const [regions, regionsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_polygons/aggregate/', { json: JSON.stringify({ pipeline: [ { $sort: { region: 1 } }, { $project: { label: "$region", value: "$regionid" } }, ] }), token: core.simpleToken } ))); if (regionsErr) return new Error(regionsErr); options.regions = regions.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'events') { const catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : []; options.catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : [] // if events if (useCatGroups) { const [eventCatGroups, eventCatGroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_catgroup_x_tags/find/', { json: JSON.stringify({ filter: {}, options: { castDocs: false, sort: { sort_tag: 1 }, fields: { tag: 1, "cat_groups.title": 1, "cat_groups.cats": 1, } } }), token: core.simpleToken } ))); if (eventCatGroupsErr) return new Error(eventCatGroupsErr); eventCatGroups.docs.map(tag => tag.cat_groups.sort((a, b) => a.title.localeCompare(b.title))); options.catgroups = eventCatGroups.docs.map(tag => tag.cat_groups.map(cg => ({ label: cg.title, value: cg.cats.join(','), group: tag.tag, }))).flat(); if (widget?.data?.cat_groups_events) { const selectedGroups = widget.data.cat_groups_events.map(cg => cg.title); options.catgroups = options.catgroups.filter(cg => selectedGroups.indexOf(cg.label) !== -1); } } else { const [allCats, allCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_categories/find/', { json: JSON.stringify({ filter: { calendarid: { $eq: (widget?.data?.calendar ?? '1') }, ...(widget?.data?.cats_events ? { value: { $in: widget.data.cats_events } } : {}), }, options: { castDocs: false, sort: { label: 1 }, fields: { label: 1, value: 1, } } }), token: core.simpleToken } ))); if (allCatsErr) return new Error(allCatsErr); options.cats = allCats.docs; } if (!widget.data.regionidevents) { const [regionsevents, regionseventsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_events_metadata/aggregate/', { json: JSON.stringify({ pipeline: [ { "$project" : { "option" : "$udfs_object.11.values" } }, { "$unwind" : "$option" }, { $sort: { regionsevents: 1 } }, { $project: { label: "$option.listvalue", value: "$option.listid" } }, ] }), token: core.simpleToken } ))); if (regionseventsErr) return new Error(regionseventsErr); options.regionsevents = regionsevents.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'offers') { // if offers const [offerCats, offerCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_offers_offermeta/aggregate/', { json: JSON.stringify({ pipeline: [ { $project: { _id: 0, categories: 1 } }, { $unwind: "$categories" }, { $match: { "categories.active": true } }, { $project: { label: "$categories.categoryname", value: { $toString: "$categories.categoryid" }, } }, { $sort: { "label": 1 } }, ] }), token: core.simpleToken } ))); if (offerCatsErr) return new Error(offerCatsErr); options.cats = offerCats.docs; } const vue = product_search.getVue({ rootNode: $('#ps_8fe5a625-ee51-4607-bd0b-ee5c633fedc6'), type: widget.data.type, link: widget.data.link.url, linkText: widget.data.link_text, hiddenFilters: hiddenFilters, translations: t.leo, filters: [ { name : "filter_onlybooking", label : "Search Availability", type : "toggle", show: showBooking, value: "true", initialValue: showBookingActiveByDefault, }, { name: 'filter_daterange[start]', label: 'Check in', type: 'date_availability_start', show: showBooking, initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: 'Check out', type: 'date_availability_end', show: showBooking, initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_adults', label: 'Number of Adults', type: 'select', show: showBooking, initialValue: '1', typeExtra: { options: [ { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_children', label: 'Number of Children', type: 'select', show: showBooking, initialValue: '0', typeExtra: { options: [ { label: '0', value: '0' }, { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_daterange[start]', label: t.leo.start_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: t.leo.end_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_cat_groups[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && useCatGroups, typeExtra: { options: options.groups || [] } }, { name: useCatGroups ? 'filter_cat_groups[0]' : 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events', typeExtra: { options: useCatGroups ? (options.catGroupsEvents || []) : (options.cats || []), } }, { name: 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: (widget.data.type === 'offers' && !widget.data.offer_category), typeExtra: { options: options.cats } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && !widget.data.regionid && showRegion, typeExtra: { options: options.regions || [] } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events' && !widget.data.regionidevents && showRegion, typeExtra: { options: options.regionsevents || [] } }, { name: 'filter_keyword', label: t.leo.keyword, placeholder: t.leo.search_placeholder, type: 'text', show: true }, { name: 'filter_channel[0]', label: 'Channel', placeholder: t.leo.search_placeholder, show: !widget.data.channel, typeExtra: { options: options.channel || [] } }, ] }); } }); </script></div><div data-civid="659bd4fcce7a575babca809e" class="contentRender contentRender_22 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="96" data-sv-index="22" data-gtm-vars='{ "tCore" : { "contentNum" : "5" } }'> <button role="tab" aria-controls="panel-fa23baca-7444-42c4-9078-deff1635c104" id="tab-fa23baca-7444-42c4-9078-deff1635c104" class="mobile-tab" >Food & Drink <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="fa23baca-7444-42c4-9078-deff1635c104" data-product-search="Food & Drink" data-default-selected="closed" role="tabpanel" id="panel-fa23baca-7444-42c4-9078-deff1635c104" aria-labelledby="tab-fa23baca-7444-42c4-9078-deff1635c104" class="ps-panel" > <div id="ps_fa23baca-7444-42c4-9078-deff1635c104"> <script id="ps_data_fa23baca-7444-42c4-9078-deff1635c104" type="text/template">{"sections":{},"data":{"title":"Food & Drink","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155371","155391","155361","155381","155351","151091"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"false","regionid":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650af396dc2abf6b654230be","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af396dc2abf6b654230be","url":"https://www.visitmanchester.com/food-and-drink/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af396dc2abf6b654230be"}},"guid":"fa23baca-7444-42c4-9078-deff1635c104","customSettings":{},"widgetArgs":{"nav":{"_id":"669f874d9e4dca392466b9d6","title":"Sustainable things to do","folder":"sustainable-things-to-do","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-23T10:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"65720134753646499e16691e","description":"<p>Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.</p>","meta_title":"Sustainable things to do in Manchester","meta_description":"Find attractions and experiences in Manchester that are working towards minimising their carbon footprint to make tourism in the region more sustainable.","tags_ids":["6527eb2040495a2d33806cc6"],"parent_id":"6525e38b58d8a262bf5e7287","parents_ids":["6525e38b58d8a262bf5e7287"],"content_owner":"default","site_name":"primary","section":"main","updated":"2025-02-12T09:50:13.640Z","title_sort":"sustainable things to do","site_section":"primary.main","published":true,"sortorder":8,"created":"2024-07-23T10:34:53.299Z","amp":false,"cms_title":"Sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","cms_title_sort":"sustainable things to do - /things-to-see-and-do/sustainable-things-to-do/","folderHref":"/things-to-see-and-do/sustainable-things-to-do/","version_id":"67ac6ed5d6fe353ee10a18fe","image":{"_id":"65720134753646499e16691e","legacy_id":"img-new-exhibition-opening-at-elizabeth-gaskell-s-house","title":"New exhibition opening at Elizabeth Gaskell鈥檚 House","title_sort":"new exhibition opening at elizabeth gaskell鈥檚 house","content_owner":"default","tags_ids":["65720062753646499e1664aa"],"created":"1970-01-01T00:00:00.000Z","updated":"2023-12-07T17:30:25.637Z","private":false,"resource_raw":{"asset_id":"c460c86fae1b7c383cd9047abedbbef7","public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6","version":1701970228,"version_id":"a80233a4c1370ae8a1272fe66834cebc","signature":"0c6a3518dc9f25f9bc9ba563332dee91c2744f11","width":1200,"height":896,"format":"jpg","resource_type":"image","created_at":"2023-12-07T17:30:28.000Z","pages":1,"bytes":980555,"type":"upload","etag":"1ad9ba437f5e5313cf75e44a63e270f3","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1701970228/clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"Optimized-Elizabeth Gaskell's House (2)","api_key":"756897581616859"},"deleted":false,"resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/Optimized_Elizabeth_Gaskell_s_House_2__83d7d4b7-b411-4d94-8da4-df94bfb856c6"}},"id":"65720134753646499e16691e","type":"image","inAssetRequest":false,"alt_text":"New exhibition opening at Elizabeth Gaskell鈥檚 House","expired":false},"locale_count":0,"tags":[{"_id":"6527eb2040495a2d33806cc6","tag":"Sustainability","sort_tag":"sustainability","updated":"2023-10-12T12:48:32.082Z","created":"2023-10-12T12:48:32.082Z","id":"6527eb2040495a2d33806cc6"}],"id":"669f874d9e4dca392466b9d6","parent_id_string":"6525e38b58d8a262bf5e7287","version_id_string":"67ac6ed5d6fe353ee10a18fe","href":"/things-to-see-and-do/sustainable-things-to-do/","absoluteHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","absoluteFolderHref":"https://www.visitmanchester.com/things-to-see-and-do/sustainable-things-to-do/","metaTitle":"Sustainable things to do in Manchester","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":22,"guid":"fa23baca-7444-42c4-9078-deff1635c104","data":{"title":"Food & Drink","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155371","155391","155361","155381","155351","151091"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"false","regionid":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650af396dc2abf6b654230be","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af396dc2abf6b654230be","url":"https://www.visitmanchester.com/food-and-drink/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af396dc2abf6b654230be"}},"civ":{"instance":{"type":"widget","name":"plugins_common_product_search","site_name":"primary","saved":false,"created":"2024-01-08T11:13:44.494Z","updated":"2024-01-08T11:13:44.494Z","deleted":false,"id":"659bd4fcce7a575babca809e","version_id_string":"659bd4fcce7a575babca809f"},"version":{"data":{"title":"Food & Drink","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155371","155391","155361","155381","155351","151091"],"calendar":"1","show_booking":"false","show_booking_active":"false","show_region":"false","regionid":"411","defaultRange":"week","hide_date_filters":"false","link_text":"Search","link_raw":{"id":"650af396dc2abf6b654230be","type":"plugins_nav_navitem_primary_main"},"link":{"id":"650af396dc2abf6b654230be","url":"https://www.visitmanchester.com/food-and-drink/search-results/","title":"Search Results","valid":true,"type":"plugins_nav_navitem_primary_main","typeLabel":"Nav Item - Primary - Main Navigation","target":"_self","uniqueId":"plugins_nav_navitem_primary_main_650af396dc2abf6b654230be"}},"created":"2024-01-08T11:13:44.495Z","id":"659bd4fcce7a575babca809f","instance_id_string":"659bd4fcce7a575babca809e"},"onTrunk":true,"civid":"659bd4fcce7a575babca809e"},"name":"plugins_common_product_search"},"translations":{"translations.static.leo":{"apply":"Apply","clear_filters":"Clear Filters","reset":"Reset","filter":"Filter","sort":"Sort","view":"View","keyword":"Keyword","search_placeholder":"Search","select":"Select","regions":"Regions","categories":"Categories","grid":"Grid","list":"List","map":"Map","show_map":"Show Map","hide_map":"Hide Map","recommended":"Recommended","near_me":"Near Me","read_more":"Read More","quick_view":"Quick View","featured_title":"Partner","visit_website":"Visit Website","email":"E-mail","tollfree":"Toll Free","tab_about":"About","tab_map":"Map","tab_openings":"Dates and Times","tab_guide_prices":"Prices","tab_offers":"Special Offers","tab_faq":"FAQs","tab_gradings":"Gradings","tab_awards":"Awards","tab_also_like":"You might also be interested in...","tab_downloads":"Downloads","tab_routes":"Routes","tab_facilities":"Facilities","tab_virtual_tours":"Virtual Tours","show_more":"Show $1 more","show_less":"Show Less","results":"$1 results","no_results":"There are no results that match your filter.","miles_from_you":"Miles from You","meeting_rooms":"Meeting Rooms","square_feet":"Total Sq. Ft.","largest_room":"Largest Room","sleeping_rooms":"Sleeping Rooms","banquet":"Banquet Capacity","reception":"Reception Capacity","theatre":"Theater Capacity","classroom":"Classroom Capacity","compare":"Compare","close_compare_dropdown":"Close compare dropdown","compare_add":"Add to compare","compare_remove":"Remove from compare","compare_clear_all":"Clear All","compare_limit_message":"You can only compare four (4) items at a time","location":"Location","locations":"Locations","details":"Details","address":"Address","err_loc_timeout":"We're unable to determine your location at this time.","err_loc_blocked":"You must allow location access for distance sorting.","err_loc_radius":"You must be within $1 miles to sort by distance.","date_range_title":"Show Events For","date_range_day":"Day","date_range_week":"Week","date_range_weekend":"Weekend","date_range_month":"Month","date_range_year":"Year","date_range_selected_dates":"Selected Dates","per_page_label":"Items Per Page","tb_add":"Add to Trip","tb_remove":"Remove from Trip","tb_view":"View Trip","facilities":"Facilities","download":"Download Events as CSV","convention":"Convention","venues":"Venues","dates":"Dates","attendance":"Attendance","whats_nearby":"What's Nearby","attractions":"Attractions","dining":"Dining","accommodations":"Accommodations","events":"Events","things_to_do":"Things To Do","get_directions":"Get Directions","redo_search_in_map":"Redo Search in Map","add_to_calendar":"Add to Calendar","add_to_google_calendar":"Add to Google Calendar","add_to_microsoft_calendar":"Add to Microsoft Live Calendar","add_to_outlook_calendar":"Add to Office365 Outlook Calendar","add_to_iCloud_calendar":"Add to iCloud Calendar","add_to_windows_calendar":"Add to Windows Calendar","start_date":"Start Date","end_date":"End Date","learn_more":"Learn more about"}}}</script> </div> </div> <script> require([ 'jquery', 'plugins_core/main', 'sv_site', 'sv_clientMoment', 'plugins_common_custom_product_search', 'plugins_common_custom_utils', ], function( $, core, site, clientMoment, product_search, utils ) { init(); async function init() { const dataString = document.querySelector('#ps_data_fa23baca-7444-42c4-9078-deff1635c104').textContent const widget = JSON.parse(dataString); const t = { leo: widget.translations['translations.static.leo'], }; // Collect all select options let options = {} // date format to ensure all dates passed through clientMoment and the date range plugin are formated correctly const queryDateFormat = 'YYYY-MM-DD'; const today = clientMoment().format(queryDateFormat); const thisWeek = clientMoment().add(6, 'days').format(queryDateFormat); const thisMonth = clientMoment().add(1, 'months').format(queryDateFormat); const weekendFri = clientMoment().day(5).format(queryDateFormat); const weekendSun = clientMoment().day(7).format(queryDateFormat); const customStart = clientMoment(widget.data.from_date).format(queryDateFormat); const customEnd = clientMoment(widget.data.to_date).format(queryDateFormat); const showBooking = (widget?.data?.show_booking ?? 'false') === 'true'; const showBookingActiveByDefault = (widget?.data?.show_booking_active ?? 'false') === 'true'; const showRegion = (widget?.data?.show_region ?? 'false') === 'true'; const useCatGroups = (widget?.data?.use_cat_groups ?? 'off') === 'on'; const hasCatGroups = widget?.data?.use_cat_groups === 'on'; // Set initial start and end days for the calendar dropdown let initialDates = { start: today, end: today } if (widget.data.defaultRange === 'week') { initialDates.end = thisWeek; } else if (widget.data.defaultRange === 'weekend') { initialDates.start = weekendFri; initialDates.end = weekendSun; } else if (widget.data.defaultRange === 'month') { initialDates.end = thisMonth; } else if (widget.data.defaultRange === 'custom') { initialDates.start = customStart; initialDates.end = customEnd; } // The hidden filter is to store values that are manually selected in the CMS. // Regions and event categories are the two available fields for manual selection const hiddenFilters = {} if (widget.data.type === 'listings' && widget.data.regionid) { hiddenFilters.regionid = widget.data.regionid; } else if (widget.data.type === 'events' && widget.data.regionidevents) { hiddenFilters.regionidevents = widget.data.regionidevents; } else if (widget.data.type === 'events' && widget.data.cat_groups_events && widget.data.cat_groups_events.length > 0) { hiddenFilters.catids = widget.data.cat_groups_events; } else if (widget.data.type === 'offers' && widget.data.offer_category && widget.data.offer_category.length > 0) { hiddenFilters.catid = data.offer_category; } if (widget.data.hide_date_filters === 'true') { hiddenFilters.dates = initialDates; } if (widget.data.channel) { hiddenFilters.channelkey = widget.data.channel; } // if listings if (widget.data.type === 'listings') { if (useCatGroups) { // if doesn't have category groups const [categorygroups, categorygroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_categorygroups/aggregate/', { json: JSON.stringify({ filter: {}, options: { castDocs:false, fields: { categorygroupid: 1, categorygroup: 1 } } }), token: core.simpleToken } ))); if (categorygroupsErr) return new Error(categorygroupsErr); const groups = !!widget ?.data ?.categorygroups ? categorygroups.docs.filter(group => widget.data.categorygroups.indexOf(group.categorygroupid.toString()) !== -1) : categorygroups.docs; options.groups = groups.map(group => ({ label: group.categorygroup, value: group.categorygroupid.toString() })); } else { const [allSubcats, allSubcatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_subcats/find/', { json: JSON.stringify({ filter: { active: { $eq: true }, has_listings: { $eq: true }, sites: { $in: [site.site] } }, options: { castDocs: false, sort: { fullname: 1 }, fields: { categoryid: 1, subcatid: 1, subcatname: 1, } } }), token: core.simpleToken } ))); if (allSubcatsErr) return new Error(allSubcatsErr); let subcats = allSubcats.docs; if (widget?.data?.cats) { subcats = subcats.filter(subcat => subcat.categoryid === Number(widget.data.cats)); } options.subcats = subcats.map(subcat => ({ label: subcat.subcatname, value: subcat.subcatid.toString() })); } if (!widget.data.regionid) { // if doesn't have regions const [regions, regionsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_listings_custom_view_polygons/aggregate/', { json: JSON.stringify({ pipeline: [ { $sort: { region: 1 } }, { $project: { label: "$region", value: "$regionid" } }, ] }), token: core.simpleToken } ))); if (regionsErr) return new Error(regionsErr); options.regions = regions.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'events') { const catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : []; options.catGroupsEvents = useCatGroups ? widget.data.cat_groups_events.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : [] // if events if (useCatGroups) { const [eventCatGroups, eventCatGroupsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_catgroup_x_tags/find/', { json: JSON.stringify({ filter: {}, options: { castDocs: false, sort: { sort_tag: 1 }, fields: { tag: 1, "cat_groups.title": 1, "cat_groups.cats": 1, } } }), token: core.simpleToken } ))); if (eventCatGroupsErr) return new Error(eventCatGroupsErr); eventCatGroups.docs.map(tag => tag.cat_groups.sort((a, b) => a.title.localeCompare(b.title))); options.catgroups = eventCatGroups.docs.map(tag => tag.cat_groups.map(cg => ({ label: cg.title, value: cg.cats.join(','), group: tag.tag, }))).flat(); if (widget?.data?.cat_groups_events) { const selectedGroups = widget.data.cat_groups_events.map(cg => cg.title); options.catgroups = options.catgroups.filter(cg => selectedGroups.indexOf(cg.label) !== -1); } } else { const [allCats, allCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_custom_view_categories/find/', { json: JSON.stringify({ filter: { calendarid: { $eq: (widget?.data?.calendar ?? '1') }, ...(widget?.data?.cats_events ? { value: { $in: widget.data.cats_events } } : {}), }, options: { castDocs: false, sort: { label: 1 }, fields: { label: 1, value: 1, } } }), token: core.simpleToken } ))); if (allCatsErr) return new Error(allCatsErr); options.cats = allCats.docs; } if (!widget.data.regionidevents) { const [regionsevents, regionseventsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_events_metadata/aggregate/', { json: JSON.stringify({ pipeline: [ { "$project" : { "option" : "$udfs_object.11.values" } }, { "$unwind" : "$option" }, { $sort: { regionsevents: 1 } }, { $project: { label: "$option.listvalue", value: "$option.listid" } }, ] }), token: core.simpleToken } ))); if (regionseventsErr) return new Error(regionseventsErr); options.regionsevents = regionsevents.docs.map(({label, value}) => ({ label, value: value.toString() })); } } else if (widget.data.type === 'offers') { // if offers const [offerCats, offerCatsErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_offers_offermeta/aggregate/', { json: JSON.stringify({ pipeline: [ { $project: { _id: 0, categories: 1 } }, { $unwind: "$categories" }, { $match: { "categories.active": true } }, { $project: { label: "$categories.categoryname", value: { $toString: "$categories.categoryid" }, } }, { $sort: { "label": 1 } }, ] }), token: core.simpleToken } ))); if (offerCatsErr) return new Error(offerCatsErr); options.cats = offerCats.docs; } const vue = product_search.getVue({ rootNode: $('#ps_fa23baca-7444-42c4-9078-deff1635c104'), type: widget.data.type, link: widget.data.link.url, linkText: widget.data.link_text, hiddenFilters: hiddenFilters, translations: t.leo, filters: [ { name : "filter_onlybooking", label : "Search Availability", type : "toggle", show: showBooking, value: "true", initialValue: showBookingActiveByDefault, }, { name: 'filter_daterange[start]', label: 'Check in', type: 'date_availability_start', show: showBooking, initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: 'Check out', type: 'date_availability_end', show: showBooking, initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_adults', label: 'Number of Adults', type: 'select', show: showBooking, initialValue: '1', typeExtra: { options: [ { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_children', label: 'Number of Children', type: 'select', show: showBooking, initialValue: '0', typeExtra: { options: [ { label: '0', value: '0' }, { label: '1', value: '1' }, { label: '2', value: '2' }, { label: '3', value: '3' }, { label: '4', value: '4' }, { label: '5', value: '5' }, { label: '6', value: '6' }, { label: '7', value: '7' }, { label: '8', value: '8' }, { label: '9', value: '9' }, { label: '10', value: '10' }, ], group: false, }, }, { name: 'filter_daterange[start]', label: t.leo.start_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.start, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_daterange[end]', label: t.leo.end_date, type: 'date', show: widget.data.hide_date_filters === 'false' && widget.data.type === 'events', initialValue: initialDates.end, typeExtra: { dateFormat: 'MMM Do' } }, { name: 'filter_cat_groups[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && useCatGroups, typeExtra: { options: options.groups || [] } }, { name: useCatGroups ? 'filter_cat_groups[0]' : 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events', typeExtra: { options: useCatGroups ? (options.catGroupsEvents || []) : (options.cats || []), } }, { name: 'filter_categories[0]', label: t.leo.categories, placeholder: `${t.leo.select}...`, type: 'select', show: (widget.data.type === 'offers' && !widget.data.offer_category), typeExtra: { options: options.cats } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'listings' && !widget.data.regionid && showRegion, typeExtra: { options: options.regions || [] } }, { name: 'filter_regions[0]', label: t.leo.regions, placeholder: `${t.leo.select}...`, type: 'select', show: widget.data.type === 'events' && !widget.data.regionidevents && showRegion, typeExtra: { options: options.regionsevents || [] } }, { name: 'filter_keyword', label: t.leo.keyword, placeholder: t.leo.search_placeholder, type: 'text', show: true }, { name: 'filter_channel[0]', label: 'Channel', placeholder: t.leo.search_placeholder, show: !widget.data.channel, typeExtra: { options: options.channel || [] } }, ] }); } }); </script></div> </div> </section> <script> require(['lodash'], function(lodash) { const root = document.querySelector('[data-guid="f86de934-5db7-4dec-9178-0ccf116dec2c"]'); const panels = Array.from(root.querySelectorAll("[data-product-search]")); const tabList = root.querySelector("[data-tab-list]"); let desktopInitialized = false; let mobileInitialized = false; function initProductSearch() { if (window.innerWidth > 640) { let tabButtons = []; if (!desktopInitialized) { // Create Tabs for desktop and tablet panels.forEach((panel, ind) => { const tabId = panel.getAttribute('data-guid'); const tabTitle = panel.getAttribute('data-product-search'); const checkSelected = panel.getAttribute('data-default-selected'); let selected = (checkSelected === 'defaultSelected') ? true : false; const btnHtml = ` <button role="tab" aria-selected="${selected}" aria-controls="panel-${tabId}" id="tab-${tabId}" >${tabTitle}</button> `; if (selected) panel.classList.add('active'); tabList.insertAdjacentHTML('beforeend', btnHtml); tabButtons = tabList.querySelectorAll('[role="tab"]'); }); //If no default search is selected, revert to search one within the panel as selected if (!panels.some(search => search.getAttribute('data-default-selected') === 'defaultSelected')) { panels[0].classList.add('active'); tabList.querySelector('button:first-of-type').setAttribute("aria-selected", "true"); } desktopInitialized = true; } // Define click handler function handleTabClick(event) { // Mark all tabs as unselected tabButtons.forEach(tab => { tab.setAttribute('aria-selected', false); }); // Select the tab event.currentTarget.setAttribute('aria-selected', true); // Select the associated tab panel const panelId = event.currentTarget.getAttribute('aria-controls'); const tabPanel = panels.find(panel => panel.getAttribute('id') === panelId); panels.find(panel => panel.classList.remove('active')); tabPanel.classList.add('active'); } tabButtons.forEach(tab => tab.addEventListener('click', handleTabClick)); } else if (!mobileInitialized) { const mobileButtons = root.querySelectorAll('.mobile-tab'); // Define click handler function handleTabClick(event) { if (event.currentTarget.getAttribute('aria-expanded') === "true") { event.currentTarget.setAttribute('aria-expanded', false); } else { mobileButtons.forEach(tab => tab.setAttribute('aria-expanded', false)); event.currentTarget.setAttribute('aria-expanded', true); } } mobileButtons.forEach(tab => tab.setAttribute('aria-expanded', false)); panels.find(panel => panel.classList.remove('active')); mobileButtons.forEach(tab => tab.addEventListener('click', handleTabClick)); mobileInitialized = true; } } initProductSearch(); window.onresize = lodash.debounce(initProductSearch, 400); }); </script></div><div data-civid="67ac6dfcd6fe353ee10a16eb" class="contentRender contentRender_23 contentRender_type_widget contentRender_name_plugins_collections_type_custom_slides contentRender_name_plugins_collections_template_custom_core_side_by_side_1_across" data-sv-time="124" data-sv-index="23" data-gtm-vars='{ "tCore" : { "contentNum" : "4" } }'> <style>.side-by-side-1-across .img-cont { aspect-ratio: 600 / 414; }@media (min-width: 640px) { .side-by-side-1-across .img-cont { aspect-ratio: 492 / 329; } }@media (min-width: 1024px) { .side-by-side-1-across .img-cont { aspect-ratio: 580 / 387; } }</style> <section class="ccl-widget core-side-by-side side-by-side-1-across slides-across-1" data-width="controlled" data-slides-across="1" data-guid="bb230ab2-834a-425b-8f94-9433a25b81ae" data-js="plugins_collections_custom_collection_default_package" data-gtm-vars='{ "tClient_ga4" : { "eventName" : "widget_interaction", "widgetName" : "Side by Side | 1 Across", "interactionSource" : "widget" } }' style="opacity: 0;" > <div class="slides slide-left " data-slides> <article class="slide "> <div class="inner" data-gtm-vars='{ "tClient_ga4" : { "interactionSource" : "widget", "itemName" : "Visit%20Manchester%20Well" } }'> <div class="slide-top"> <div class="blog-feed-header-mobile-container" aria-hidden="true"> </div> <div class="img-cont"> <a data-asset href="https://www.visitmanchester.com/visitor-information/visit-manchester-well/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Image", "interactionUrl" : "https://www.visitmanchester.com/visitor-information/visit-manchester-well/" } }'> <picture> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_387,q_65,w_580,x_1400,y_405/v1/clients/manchester/home_65a9dc7c-cd74-4d72-853e-6c8419a09515.jpg" media="screen and (min-width: 1024px)" type="image/avif" width="580" height="387" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_387,q_65,w_580,x_1400,y_405/v1/clients/manchester/home_65a9dc7c-cd74-4d72-853e-6c8419a09515.jpg" media="screen and (min-width: 1024px)" type="image/webp" width="580" height="387" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_387,q_65,w_580,x_1400,y_405/v1/clients/manchester/home_65a9dc7c-cd74-4d72-853e-6c8419a09515.jpg" media="screen and (min-width: 1024px)" type="image/jpeg" width="580" height="387" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_329,q_65,w_492,x_1400,y_405/v1/clients/manchester/home_65a9dc7c-cd74-4d72-853e-6c8419a09515.jpg" media="screen and (min-width: 640px)" type="image/avif" width="492" height="329" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_329,q_65,w_492,x_1400,y_405/v1/clients/manchester/home_65a9dc7c-cd74-4d72-853e-6c8419a09515.jpg" media="screen and (min-width: 640px)" type="image/webp" width="492" height="329" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_329,q_65,w_492,x_1400,y_405/v1/clients/manchester/home_65a9dc7c-cd74-4d72-853e-6c8419a09515.jpg" media="screen and (min-width: 640px)" type="image/jpeg" width="492" height="329" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,g_xy_center,h_414,q_65,w_600,x_1400,y_405/v1/clients/manchester/home_65a9dc7c-cd74-4d72-853e-6c8419a09515.jpg" type="image/avif" width="600" height="414" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,g_xy_center,h_414,q_65,w_600,x_1400,y_405/v1/clients/manchester/home_65a9dc7c-cd74-4d72-853e-6c8419a09515.jpg" type="image/webp" width="600" height="414" /> <img class="slide-img" src="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,g_xy_center,h_414,q_65,w_600,x_1400,y_405/v1/clients/manchester/home_65a9dc7c-cd74-4d72-853e-6c8419a09515.jpg" alt="Outside of HOME" loading="lazy" fetchpriority="low" width="600" height="414" onload="this.classList.add('loaded')" /> </picture> </a> </div> </div> <div class="content-section"> <div class="inner"> <div class="content-top"> <div class="heading-container"> <h2 class="slide-title"> <a href="https://www.visitmanchester.com/visitor-information/visit-manchester-well/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Title", "interactionUrl" : "https%3A%2F%2Fwww.visitmanchester.com%2Fvisitor-information%2Fvisit-manchester-well%2F", "interactionText" : "Visit%20Manchester%20Well" } }'>Visit Manchester Well</a> </h2> </div> <p>Discover how to make your visit to Manchester sustainable. Enjoy our walkable city, extensive public transport, farm-to-table dining, eco-friendly hotels, and local attractions. Find tips on sustainable travel, accommodations, and activities to help Manchester achieve its Net Zero target by 2038.</p> </div> <footer class="slide-footer" data-gtm-vars='{ "tClient_ga4" : { "itemName" : "Visit%20Manchester%20Well" } }'> <a class="read-more" href="https://www.visitmanchester.com/visitor-information/visit-manchester-well/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Read%20More", "interactionUrl" : "https%3A%2F%2Fwww.visitmanchester.com%2Fvisitor-information%2Fvisit-manchester-well%2F", "interactionText" : "Read%20More" } }'> Read More </a> </footer> </div> </div> </div> </article> </div> </section> </div><div data-civid="64d4b1b9938c6344c3e83a02" class="contentRender contentRender_24 contentRender_type_widget contentRender_name_plugins_common_embed" data-sv-time="39" data-sv-index="24" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'> <div class="custom-embed full" data-sv-embed-widget="true" data-guid="4950b50a-0d5b-4f96-b68e-4c89be39c898"> <div class="embed-container"> </div> </div> </div> </div> <div class="footer-container"> <div data-civid="64c7adda7bb02a0e877d05d5" class="contentRender contentRender_25 contentRender_type_panel contentRender_name_plugins_common_footer" data-sv-time="0" data-sv-index="25" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="sponsor-logos-container"> <div class="sponsor-logos"> <div data-civid="659a7653ce7a575babca106d" class="contentRender contentRender_38 contentRender_type_widget contentRender_name_plugins_common_sponsor_logos" data-sv-time="40" data-sv-index="38" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="sponsor-logos" data-guid="c82abd58-65c9-4162-b7f0-ef5f7c0dd1f0" data-gtm-vars='{ "tClient_ga4": { "eventName": "widget_interaction", "widgetName": "Logo | Sponsor", "interactionSource": "widget" } }'> <a href="https://www.cntraveller.com/article/best-places-to-go-in-uk-and-ireland-2024" target="_blank" aria-label="Marketing Manchester" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Best Places to go 2024 logo", "interactionUrl": "https://www.cntraveller.com/article/best-places-to-go-in-uk-and-ireland-2024" } }'> <img src="/includes/public/assets/shared/logos/logo_bestplacestogo.png" alt="Best Places to go 2024 logo" loading="lazy" width="102" height="102" /> </a> <a href="" target="" aria-label="Marketing Manchester" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Best of the World 2023 logo", "interactionUrl": "" } }'> <img src="/includes/public/assets/shared/logos/accolade_bestworld.png" alt="Best of the World 2023 logo" loading="lazy" width="113" height="103" /> </a> <a href="https://www.afar.com/magazine/where-to-go-2024" target="_blank" aria-label="Marketing Manchester" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Where to go 2024 logo", "interactionUrl": "https://www.afar.com/magazine/where-to-go-2024" } }'> <img src="/includes/public/assets/shared/logos/logo_wheretogo.png" alt="Where to go 2024 logo" loading="lazy" width="108" height="80" /> </a> </div></div> </div> <div class="footer-links"> <div data-civid="659a7653ce7a575babca106f" class="contentRender contentRender_39 contentRender_type_widget contentRender_name_plugins_common_footer_links" data-sv-time="40" data-sv-index="39" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="footer-links" data-guid="ce2a1b1a-f89c-4cab-b23a-b20835fd54e9"> <div class="TA"> <p>Ratings Powered by</p> <a class="tripAdvisor" href="https://www.tripadvisor.com/" target="" aria-label="Marketing Manchester"> <img src="/includes/public/assets/shared/logos/logo_tripadvisor.png" alt="Marketing Manchester" loading="lazy" width="140" height="40" /> </a> </div> <a class="dataThistle" href="https://www.datathistle.com/" target="" aria-label="Marketing Manchester"> <img src="/includes/public/assets/shared/logos/logo_datathistle.png" alt="Marketing Manchester" loading="lazy" width="140" height="40" /> </a> </div></div> </div> </div> <footer class="panel-footer" data-guid="44f4dd51-3018-4fc5-b303-a6253b46f04d"> <div class="footer-content-container"> <div class="footer-logo"> <div data-civid="659a7653ce7a575babca105b" class="contentRender contentRender_29 contentRender_type_widget contentRender_name_plugins_common_logo_footer" data-sv-time="40" data-sv-index="29" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'><div class="logo-footer" data-guid="35396f85-e2c6-474c-a2d9-10eed8f569b9" > <a href="" target="" aria-label="Visit Manchester Logo" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "eventName": "widget_interaction", "widgetName": "Logo | Footer", "interactionSource": "widget", "linkObject": "Visit%20Manchester%20Logo", "interactionUrl": "" } }'> <img src="https://assets.simpleviewinc.com/simpleview/image/upload/c_pad,h_30,q_75,w_234/v1/clients/manchester/logo_c3fd195c-4f61-4268-98f6-2de196faa506.png" srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_pad,h_30,q_75,w_234/v1/clients/manchester/logo_c3fd195c-4f61-4268-98f6-2de196faa506.png 1x, https://assets.simpleviewinc.com/simpleview/image/upload/c_pad,h_30,q_75,w_234/v1/clients/manchester/logo_c3fd195c-4f61-4268-98f6-2de196faa506.png 2x" alt="Visit Manchester Logo" loading="lazy" width="234" height="30" /> </a> </div></div> </div> <div class="cta-container"> <div data-civid="659a7653ce7a575babca1055" class="contentRender contentRender_26 contentRender_type_widget contentRender_name_plugins_common_call_to_action" data-sv-time="39" data-sv-index="26" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="call-to-action" data-guid="" data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "navType" : "Call to Action", "interactionSource" : "widget" } }'> <a href="https://www.visitmanchester.com/contact-us/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Get%20in%20Touch", "interactionUrl" : "https%3A%2F%2Fwww.visitmanchester.com%2Fcontact-us%2F", "interactionText" : "Get%20in%20Touch"} }'> <div class="inner"> <div class="content"> <h3 class="title">Get in Touch</h3> </div> </div> </a> </div> </div><div data-civid="659a7653ce7a575babca1057" class="contentRender contentRender_27 contentRender_type_widget contentRender_name_plugins_common_call_to_action" data-sv-time="39" data-sv-index="27" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'> <div class="call-to-action" data-guid="" data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "navType" : "Call to Action", "interactionSource" : "widget" } }'> <a href="https://www.visitmanchester.com/advertise-with-us/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Work%20With%20Us", "interactionUrl" : "https%3A%2F%2Fwww.visitmanchester.com%2Fadvertise-with-us%2F", "interactionText" : "Work%20With%20Us"} }'> <div class="inner"> <div class="content"> <h3 class="title">Work With Us</h3> </div> </div> </a> </div> </div><div data-civid="659a7653ce7a575babca1059" class="contentRender contentRender_28 contentRender_type_widget contentRender_name_plugins_common_call_to_action" data-sv-time="39" data-sv-index="28" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'> <div class="call-to-action" data-guid="" data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "navType" : "Call to Action", "interactionSource" : "widget" } }'> <a href="https://www.visitmanchester.com/enewsletter-sign-up/" target="_self" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "E-newsletter%20sign%20up", "interactionUrl" : "https%3A%2F%2Fwww.visitmanchester.com%2Fenewsletter-sign-up%2F", "interactionText" : "E-newsletter%20sign%20up"} }'> <div class="inner"> <div class="content"> <h3 class="title">E-newsletter sign up</h3> </div> </div> </a> </div> </div> </div> <div class="social-media"> <p class="subtitle"> Follow us</p> <div data-civid="659a7653ce7a575babca105f" class="contentRender contentRender_31 contentRender_type_widget contentRender_name_plugins_collections_type_custom_social_slides contentRender_name_plugins_collections_template_custom_social_links" data-sv-time="90" data-sv-index="31" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'> <ul class="social-links"> <li class="social-network"> <a class="social-link" href="https://www.tiktok.com/@visitmanchester" target="_blank" rel="noopener" title="Visit our tiktok page" aria-label="Visit our tiktok page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Tiktok", "interactionUrl" : "https%3A%2F%2Fwww.tiktok.com%2F%40visitmanchester", "interactionSource": "widget" } }' > <i class="social-icon fab fa-tiktok" aria-hidden="true" ></i> </a> </li> <li class="social-network"> <a class="social-link" href="https://www.youtube.com/user/visitmanchester" target="_blank" rel="noopener" title="Visit our youtube page" aria-label="Visit our youtube page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Youtube", "interactionUrl" : "https%3A%2F%2Fwww.youtube.com%2Fuser%2Fvisitmanchester", "interactionSource": "widget" } }' > <i class="social-icon fab fa-youtube" aria-hidden="true" ></i> </a> </li> <li class="social-network"> <a class="social-link" href="https://twitter.com/visit_mcr" target="_blank" rel="noopener" title="Visit our twitter page" aria-label="Visit our twitter page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Twitter", "interactionUrl" : "https%3A%2F%2Ftwitter.com%2Fvisit_mcr", "interactionSource": "widget" } }' > <i class="social-icon fab fa-twitter" aria-hidden="true" ></i> </a> </li> <li class="social-network"> <a class="social-link" href="https://www.instagram.com/visitmanchester/" target="_blank" rel="noopener" title="Visit our instagram page" aria-label="Visit our instagram page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Instagram", "interactionUrl" : "https%3A%2F%2Fwww.instagram.com%2Fvisitmanchester%2F", "interactionSource": "widget" } }' > <i class="social-icon fab fa-instagram" aria-hidden="true" ></i> </a> </li> <li class="social-network"> <a class="social-link" href="https://www.facebook.com/visitmanchester/" target="_blank" rel="noopener" title="Visit our facebook page" aria-label="Visit our facebook page" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "navigation_click", "navType" : "Social Links", "linkObject": "Social | Facebook", "interactionUrl" : "https%3A%2F%2Fwww.facebook.com%2Fvisitmanchester%2F", "interactionSource": "widget" } }' > <i class="social-icon fab fa-facebook" aria-hidden="true" ></i> </a> </li> </ul></div> </div> <div class="footer-nav"> <p class="subtitle"> Website Information</p> <div data-civid="659a7653ce7a575babca1061" class="contentRender contentRender_32 contentRender_type_widget contentRender_name_plugins_nav_footer" data-sv-time="51" data-sv-index="32" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <ul class="navigation-footer" data-gtm-vars='{ "tClient_ga4": { "eventName": "navigation_click", "navType": "Footer", "interactionSource": "navigation" } }' > <li class="item item-parent row-1"> <a href="/enewsletter-sign-up/" target="_self" class="" title="E-Newsletter Sign Up" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "E-Newsletter%20Sign%20Up", "interactionUrl": "%2Fenewsletter-sign-up%2F", "interactionText": "E-Newsletter%20Sign%20Up" } }' > E-Newsletter Sign Up </a> </li> <li class="item item-parent row-2"> <a href="/advertise-with-us/" target="_self" class="" title="Advertise With Us" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Advertise%20With%20Us", "interactionUrl": "%2Fadvertise-with-us%2F", "interactionText": "Advertise%20With%20Us" } }' > Advertise With Us </a> </li> <li class="item item-parent row-3"> <a href="https://www.visitmanchester.com/whats-on/submit-event/" target="_self" class="" title="Submit event" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Submit%20event", "interactionUrl": "https%3A%2F%2Fwww.visitmanchester.com%2Fwhats-on%2Fsubmit-event%2F", "interactionText": "Submit%20event" } }' > Submit event </a> </li> <li class="item item-parent row-4"> <a href="/contact-us/" target="_self" class="" title="Contact Us" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Contact%20Us", "interactionUrl": "%2Fcontact-us%2F", "interactionText": "Contact%20Us" } }' > Contact Us </a> </li> <li class="item item-parent row-5"> <a href="/terms-and-conditions/" target="_self" class="" title="Terms and Conditions" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Terms%20and%20Conditions", "interactionUrl": "%2Fterms-and-conditions%2F", "interactionText": "Terms%20and%20Conditions" } }' > Terms and Conditions </a> </li> <li class="item item-parent row-6"> <a href="https://www.growthco.uk/about-us/policies/privacy-policy/" target="_self" class="" title="Privacy Policy" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Privacy%20Policy", "interactionUrl": "https%3A%2F%2Fwww.growthco.uk%2Fabout-us%2Fpolicies%2Fprivacy-policy%2F", "interactionText": "Privacy%20Policy" } }' > Privacy Policy </a> </li> <li class="item item-parent row-7"> <a href="/cookies/" target="_self" class="" title="Cookies" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Cookies", "interactionUrl": "%2Fcookies%2F", "interactionText": "Cookies" } }' > Cookies </a> </li> <li class="item item-parent row-8"> <a href="/accessibility-statement/" target="_self" class="" title="Accessibility Statement" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Accessibility%20Statement", "interactionUrl": "%2Faccessibility-statement%2F", "interactionText": "Accessibility%20Statement" } }' > Accessibility Statement </a> </li> <li class="item item-parent row-9"> <a href="https://www.growthco.uk/about-us/policies/modern-slavery-and-human-trafficking-statement/" target="_self" class="" title="Modern Slavery and Human Trafficking Statement" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Modern%20Slavery%20and%20Human%20Trafficking%20Statement", "interactionUrl": "https%3A%2F%2Fwww.growthco.uk%2Fabout-us%2Fpolicies%2Fmodern-slavery-and-human-trafficking-statement%2F", "interactionText": "Modern%20Slavery%20and%20Human%20Trafficking%20Statement" } }' > Modern Slavery and Human Trafficking Statement </a> </li> <li class="item item-parent row-10"> <a href="/free-listing/" target="_self" class="" title="Free Listing" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Free%20Listing", "interactionUrl": "%2Ffree-listing%2F", "interactionText": "Free%20Listing" } }' > Free Listing </a> </li> <li class="item item-parent row-11 last"> <a href="/sitemap/" target="_self" class="" title="Sitemap" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Sitemap", "interactionUrl": "%2Fsitemap%2F", "interactionText": "Sitemap" } }' > Sitemap </a> </li> </ul> </div> </div> <div class="site-links-container"> <p class="subtitle"> Our websites</p> <div class="site-links-outer"> <div class="site-links-inner"> <div data-civid="659a7653ce7a575babca1063" class="contentRender contentRender_33 contentRender_type_widget contentRender_name_plugins_common_site_links" data-sv-time="92" data-sv-index="33" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="site-link" data-guid="440a55ac-806e-4786-8b0c-256575623684"> <a title="Visit" href="/" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "navType" : "Custom Site Links", "interactionSource" : "widget", "linkObject" : "Visit", "interactionUrl" : "%2F", "interactionText" : "Visit" } }'> Visit </a> </div></div><div data-civid="659a7653ce7a575babca1065" class="contentRender contentRender_34 contentRender_type_widget contentRender_name_plugins_common_site_links" data-sv-time="93" data-sv-index="34" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'> <div class="site-link" data-guid="0cea6a8f-072b-43cb-9717-873e6f4c0b49"> <a title="Meet" href="https://www.meetinmanchester.com/" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "navType" : "Custom Site Links", "interactionSource" : "widget", "linkObject" : "Meet", "interactionUrl" : "https%3A%2F%2Fwww.meetinmanchester.com%2F", "interactionText" : "Meet" } }'> Meet </a> </div></div><div data-civid="659a7653ce7a575babca1067" class="contentRender contentRender_35 contentRender_type_widget contentRender_name_plugins_common_site_links" data-sv-time="94" data-sv-index="35" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'> <div class="site-link" data-guid="b53e1c01-2768-4c9c-a880-90c6ba31e558"> <a title="Invest" href="https://www.investinmanchester.com/" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "navType" : "Custom Site Links", "interactionSource" : "widget", "linkObject" : "Invest", "interactionUrl" : "https%3A%2F%2Fwww.investinmanchester.com%2F", "interactionText" : "Invest" } }'> Invest </a> </div></div><div data-civid="659a7653ce7a575babca1069" class="contentRender contentRender_36 contentRender_type_widget contentRender_name_plugins_common_site_links" data-sv-time="93" data-sv-index="36" data-gtm-vars='{ "tCore" : { "contentNum" : "4" } }'> <div class="site-link" data-guid="9da3c053-b1e5-488e-bf12-8f7ea575c0aa"> <a title="Study" href="https://www.studyinmanchester.com/" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "eventName" : "navigation_click", "navType" : "Custom Site Links", "interactionSource" : "widget", "linkObject" : "Study", "interactionUrl" : "https%3A%2F%2Fwww.studyinmanchester.com%2F", "interactionText" : "Study" } }'> Study </a> </div></div> </div> </div> </div> <div class="footer-content"> <div data-civid="659a7653ce7a575babca105d" class="contentRender contentRender_30 contentRender_type_widget contentRender_name_plugins_core_textbox" data-sv-time="40" data-sv-index="30" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'><section data-sv-core-textbox data-guid="a208a13b-d46b-412e-a811-18d2a2b324ea"> <div class="address"> <p>Marketing Manchester Ltd</p> <p>Lee House</p> <p>90 Great Bridgewater Street</p> <p>Manchester</p> <p>M1 5JW</p> <p>Registered in England No: 031925892</p> <p>VAT No: 727102071</p> </div> <p>DISCLOSURE: We may earn commission when you buy tickets for an event, attraction or experience through visitmanchester.com.</p> </section></div> </div> </div> <div class="attributions"> <div class="attribution-content-container"> <p>&#169; Copyright Marketing Manchester. All Rights Reserved.</p> <a class="made-by-sv" href="https://www.simpleviewinc.com/our-services/creative-design/" target="_blank" rel="noopener" > <img src="/includes/public/assets/shared/made-by-sv-white.svg" alt="Made by Simpleview" loading="lazy" width="385" height="54" /> </a> </div> </div> <div class="mobile-fixed"> <div data-civid="659a7653ce7a575babca106b" class="contentRender contentRender_37 contentRender_type_widget contentRender_name_plugins_common_vancookietool" data-sv-time="40" data-sv-index="37" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <script type="text/javascript" src="https://svsharedimages.blob.core.windows.net/cookiebanner/CookieScript.js?v=1" async defer></script> <link rel="Stylesheet" type="text/css" href="https://svsharedimages.blob.core.windows.net/cookiebanner/CookieStyleFinal.css" media="screen" /></div> </div> </footer> </div> </div> </div> <div id="gallery-portal" data-gallery-portal></div> <div id="quickview-detail" data-quickview-detail></div></div> <!-- footer css bundles --> <!-- footer js bundles --> <script src="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/core/public/js/loginCheck.js"></script> <script src="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/js/shared_footer.js" defer></script> <script src="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/js/custom_forms.js" defer></script> <script src="/includes/public/managed/v_2c3233e6_9f02f395/core/plugins/common/virtuals/js/main.js" defer></script> <!-- bottomBody --> <script data-id="site_global_footer"> require(["sv_clientLib", "sv_load!plugins_dynamic_content"], function(clientLib) { clientLib._initLazy(); }); </script> <script type="text/javascript"> !function(){var b=function(){window.__AudioEyeSiteHash = "cb168926215e1f0cf16f931368c35d14"; var a=document.createElement("script");a.src="https://wsmcdn.audioeye.com/aem.js";a.type="text/javascript";a.setAttribute("async","");document.getElementsByTagName("body")[0].appendChild(a)};"complete"!==document.readyState?window.addEventListener?window.addEventListener("load",b):window.attachEvent&&window.attachEvent("onload",b):b()}(); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10