CINXE.COM

Direct Flights to and from Manchester Airport

<!doctype html> <html lang='en-us'> <head> <!-- meta --> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta charset="utf-8" /> <title>Direct Flights to and from Manchester Airport</title> <link rel="canonical" href="https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/" /> <meta name="description" content="Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year." /> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1" /> <meta name="sv-nav-properties" content="{&quot;title&quot;:&quot;Direct Flights to and from Manchester Airport&quot;,&quot;id&quot;:&quot;668bde21b5f2c298fad696b4&quot;,&quot;parents_ids&quot;:[&quot;6525e38d58d8a262bf5e744f&quot;,&quot;6525e3a758d8a262bf5e9033&quot;,&quot;6525e3ce58d8a262bf5ebc9f&quot;],&quot;site_name&quot;:&quot;primary&quot;,&quot;section&quot;:&quot;main&quot;,&quot;folderHref&quot;:&quot;/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/&quot;}" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="referrer" content="always" /> <meta property="og:title" content="Direct Flights to and from Manchester Airport" /> <meta property="og:url" content="https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/" /> <meta property="og:description" content="Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year." /> <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/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg" /> <meta property="og:image:width" content="750" /> <meta property="og:image:height" content="430" /> <meta property="og:type" content="website" /> <!-- head css bundles --> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/tripbuilder/virtuals/css/shared.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/common/virtuals/css/widget_pagetitle.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/common/virtuals/css/widget_embed.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/common/virtuals/css/widget_call_to_action.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/common/virtuals/css/widget_sponsor_logos.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/common/virtuals/css/widget_footer_links.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/nav/virtuals/css/shared.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/nav/virtuals/css/widget_main_dropdown.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/nav/virtuals/css/widget_footer.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_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_79065520_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_79065520_9f02f395/core/plugins/common/virtuals/css/widget_site_links.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/nav/virtuals/css/widget_breadcrumb.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_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="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_79065520_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_79065520_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_79065520_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_79065520_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_79065520_9f02f395/core/plugins/collections/virtuals/css/ccl/slider/shared_structure.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/collections/virtuals/css/ccl/slider/shared_theme.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/collections/virtuals/css/ccl/slider/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_79065520_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_79065520_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_79065520_9f02f395/core/plugins/collections/virtuals/css/ccl/side_by_side/variants/1_across_fullwidth.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/collections/virtuals/css/widget_template_custom_social_links.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_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_79065520_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_79065520_9f02f395/core/plugins/collections/virtuals/css/widget_template_custom_navigation_list.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/collections/virtuals/css/ccl/hero_slideshow/shared_structure.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_9f02f395/core/plugins/collections/virtuals/css/ccl/hero_slideshow/shared_theme.css" media="print" onload="this.onload=null;this.media='all'" class="preloaded-css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_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_79065520_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_79065520_9f02f395/core/plugins/collections/virtuals/css/widget_template_custom_navigation_card.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_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_79065520_9f02f395/core/plugins/common/virtuals/css/panel_snapwidget.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_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_79065520_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_79065520_9f02f395/core/plugins/common/virtuals/css/reboot.css"/> <link rel="stylesheet" href="/includes/public/managed/v_79065520_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_79065520_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_79065520_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_79065520_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_79065520_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_79065520_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_79065520_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_79065520_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_79065520_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_79065520_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_79065520_9f02f395/core/libs/sv/requirejs/public/require.js" data-ot-ignore></script> <script src="/requirejs_config_79065520_9f02f395.js" data-ot-ignore></script> <script src="/includes/public/managed/v_79065520_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="669fb1db7ddf29fdd567dc9d" class="contentRender contentRender_0 contentRender_type_panel contentRender_name_plugins_common_page" data-sv-time="7" 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="f67bf695-9913-4e07-a419-9555a357fe80" > <div class="primary-content-container"> <div data-civid="66e1621861c952fb532c625d" class="contentRender contentRender_2 contentRender_type_widget contentRender_name_plugins_common_logo" data-sv-time="21" data-sv-index="2" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="logo" data-guid="48d63039-d38c-4e25-bd8b-dd2b584d169d" > <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="22" data-sv-index="3" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div data-guid="73eee025-d1b1-452d-84ed-dcbc5a33e690"></div> <script> require(['site_tripbuilder'], function(tripbuilder) { if (!tripbuilder.enabled) return; const root = document.querySelector('[data-guid="73eee025-d1b1-452d-84ed-dcbc5a33e690"]'); 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}" data-gtm-click data-gtm-vars='{ "tClient_ga4" : {"eventName" : "widget_interaction", "widgetName" : "Tripbuilder Counter", "linkObject" : "Button", "interactionSource" : "widget", "interactionUrl" : "${tripbuilder.path}", "interactionText" : "${tripbuilder.getTotalCount()}"}}'> <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="94" data-sv-index="5" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="search-cont" data-guid="72c0de0a-3b00-4e8f-bd56-67ff6378f62e"> <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="72c0de0a-3b00-4e8f-bd56-67ff6378f62e"]'); 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="109" 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="d201e1d1-4479-494c-8c0d-ecf5b72350a6" 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="36" data-sv-index="8" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="nav-container" data-guid="d4fbf699-c0e3-454d-bbb0-6e7139264247" 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="d4fbf699-c0e3-454d-bbb0-6e7139264247"]'); 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="130" 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="10078b84-7a26-4a83-8d2f-3a31d37d8be8" 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="f67bf695-9913-4e07-a419-9555a357fe80"]`), body: document.body, toggleBtn: document.querySelector('[data-guid="f67bf695-9913-4e07-a419-9555a357fe80"] [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="669fb1db7ddf29fdd567dcad" class="contentRender contentRender_9 contentRender_type_widget contentRender_name_plugins_collections_type_custom_header_slides contentRender_name_plugins_collections_template_custom_core_hero_slideshow" data-sv-time="116" data-sv-index="9" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <style>.hero-slideshow .img-cont { aspect-ratio: 640 / 412; }@media (min-width: 375px) { .hero-slideshow .img-cont { aspect-ratio: 640 / 412; } }@media (min-width: 412px) { .hero-slideshow .img-cont { aspect-ratio: 640 / 412; } }@media (min-width: 425px) { .hero-slideshow .img-cont { aspect-ratio: 640 / 412; } }@media (min-width: 640px) { .hero-slideshow .img-cont { aspect-ratio: 768 / 375; } }@media (min-width: 768px) { .hero-slideshow .img-cont { aspect-ratio: 1024 / 500; } }@media (min-width: 1024px) { .hero-slideshow .img-cont { aspect-ratio: 1440 / 702; } }@media (min-width: 1440px) { .hero-slideshow .img-cont { aspect-ratio: 1920 / 936; } }</style> <section class="ccl-widget core-hero-slideshow hero-slideshow " data-guid="8f7ca8e5-880f-4b58-aa05-f5620cb4ba4e" data-js="plugins_collections_custom_collection_default_slider_package" data-gtm-vars='{ "tClient_ga4" : { "eventName" : "widget_interaction", "widgetName" : "Hero Slideshow", "itemType" : "slides", "interactionSource" : "widget" } }' style="opacity: 0;" data-slides-to-show="1" > <script type="text/template" data-slider-options>{"perView":1,"gap":0,"transition":"fade"}</script> <div class="slider-cont glide fade" data-glide-slider> <div class="glide__track" data-glide-el="track"> <div class="glide__slides" data-slides> <article class="slide overlap-image glide__slide "> <div class="inner" data-gtm-vars='{ "tClient_ga4" : { "interactionSource" : "widget", "itemName" : "Super%20Duper%20Family%20Festival" } }'> <div class="img-cont" data-img-cont> <a href="" target="" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Image", "interactionUrl" : "" } }' > <picture> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_avif,h_936,q_65,w_1920/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_936,q_65,w_1920/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_936,q_65,w_1920/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_702,q_65,w_1440/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_702,q_65,w_1440/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_702,q_65,w_1440/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_500,q_65,w_1024/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_500,q_65,w_1024/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_500,q_65,w_1024/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_375,q_65,w_768/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_375,q_65,w_768/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_375,q_65,w_768/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" 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,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" type="image/avif" width="640" height="412" /> <source srcset="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_webp,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" type="image/webp" width="640" height="412" /> <img class="slide-img" src="https://assets.simpleviewinc.com/simpleview/image/upload/c_fill,f_jpg,h_412,q_65,w_640/v1/clients/manchester/CC_HalfTermFest_VM_Banner_1920x1080px_03_2_79a7df49-2618-45bb-8961-50db86a19211.png" alt="Super Duper Family Festival" loading="eager" fetchpriority="high" width="640" height="412" onload="this.classList.add('loaded')" /> </picture> </a> </div> <div class="content-section"> <h2 class="slide-title"> <a href="" target="" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Title", "interactionUrl" : "", "interactionText" : "Super%20Duper%20Family%20Festival" } }'>Super Duper Family Festival</a> </h2> </div> </div> </article> </div> </div> <div class="arrows-cont"> <div class="glide__arrows" data-glide-el="controls"> <button class="glide__arrow glide__arrow--left" aria-label="previous slide" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Slider | Previous Slide", "interactionText" : "<" } }' data-glide-dir="<" > <i class="fas fa-angle-left" aria-hidden="true"></i> </button> <button class="glide__arrow glide__arrow--right" aria-label="next slide" data-gtm-click data-gtm-vars='{ "tClient_ga4" : { "linkObject" : "Slider | Next Slide", "interactionText" : ">" } }' data-glide-dir=">" > <i class="fas fa-angle-right" aria-hidden="true"></i> </button> </div> </div> </div> </section> </div> </div> <div id="main-content" class="content"> <div data-civid="669fb1db7ddf29fdd567dcaf" class="contentRender contentRender_10 contentRender_type_widget contentRender_name_plugins_nav_breadcrumb" data-sv-time="87" data-sv-index="10" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <nav class="nav-list" role="navigation" aria-label="Breadcrumb" data-guid="81c8f077-7398-4bc2-ba0c-479b13a85228" 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="6525e38d58d8a262bf5e744f"> <a href="/visitor-information/" target="_self" title="" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Visitor%20Information", "interactionUrl": "%2Fvisitor-information%2F", "interactionText": "Visitor%20Information" } }' > Visitor Information </a> </li> <li class="item" data-id="6525e3a758d8a262bf5e9033"> <a href="/visitor-information/travel-information/" target="_self" title="" data-gtm-click data-gtm-vars='{ "tClient_ga4": { "linkObject": "Travel%20Information", "interactionUrl": "%2Fvisitor-information%2Ftravel-information%2F", "interactionText": "Travel%20Information" } }' > Travel Information </a> </li> <li class="item" data-id="6525e3ce58d8a262bf5ebc9f"> <a href="/visitor-information/travel-information/manchester-airport/" target="_self" title="" 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> </li> <li class="item current" data-id="668bde21b5f2c298fad696b4"> <a href="/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/" target="_self" aria-current="page" title="" 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> </li> </ul> </nav></div><div data-civid="669fb1db7ddf29fdd567dcb1" class="contentRender contentRender_11 contentRender_type_widget contentRender_name_plugins_common_pagetitle" data-sv-time="19" data-sv-index="11" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="page-title" data-guid="c9c22ddd-af56-4ee0-80a7-c1d471320600"> <h1> Direct Flights to and from Manchester Airport </h1> </div></div><div data-civid="669fb1db7ddf29fdd567dcb3" class="contentRender contentRender_12 contentRender_type_widget contentRender_name_plugins_core_textbox" data-sv-time="20" data-sv-index="12" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'><section data-sv-core-textbox data-guid="b33cd8ff-9ebb-48e0-b834-94d7260ac359"> <p>Do you love travelling but dislike taking multiple flights to reach your destination? Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year. These direct connections will save you time and make your trip more efficient, allowing you to spend more time exploring and less time travelling. Here&#39;s the full list of direct flights to and from Manchester, along with their duration.</p> </section></div><div data-civid="669fb1db7ddf29fdd567dcb5" class="contentRender contentRender_13 contentRender_type_widget contentRender_name_plugins_core_textbox" data-sv-time="19" data-sv-index="13" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'><section data-sv-core-textbox data-guid="5014dbb0-6b71-4e63-97d2-bb6508372e89"> <h2>Europe</h2> <h3>United Kingdom</h3> <ul> <li>Aberdeen: 1 hour 20 minutes</li> <li>Belfast George Best City: 1 hour</li> <li>Belfast International: 1 hour</li> <li>Derry: 1 hour 15 minutes</li> <li>Guernsey: 1 hour 30 minutes</li> <li>Inverness: 1 hour 30 minutes</li> <li>Isle of Man: 55 minutes</li> <li>Jersey: 1 hour 20 minutes</li> <li>London Heathrow: 1 hour 5 minutes</li> <li>Newquay: 1 hour 15 minutes</li> </ul> <h3>Ireland</h3> <ul> <li>Cork: 1 hour 15 minutes</li> <li>Kerry: 1 hour 25 minutes</li> <li>Knock: 1 hour 10 minutes</li> <li>Shannon: 1 hour 25 minutes</li> </ul> <h3>France</h3> <ul> <li>Beziers: 2 hours 10 minutes</li> <li>Bordeaux: 1 hour 50 minutes</li> <li>Carcassonne: 2 hours 10 minutes</li> <li>Chambery: 1 hour 45 minutes</li> <li>Limoges: 1 hour 55 minutes</li> <li>Lyon: 1 hour 50 minutes</li> <li>Marseille: 2 hours 5 minutes</li> <li>Nantes: 1 hour 40 minutes</li> <li>Nice: 2 hours 10 minutes</li> <li>Paris Beauvais: 1 hour 25 minutes</li> <li>Paris Charles de Gaulle: 1 hour 25 minutes</li> <li>Paris Orly: 1 hour 25 minutes</li> <li>Toulouse: 1 hour 55 minutes</li> </ul> <h3>Germany&nbsp;</h3> <ul> <li>Berlin: 2 hours 5 minutes</li> <li>Cologne/Bonn: 1 hour 40 minutes</li> <li>D&uuml;sseldorf: 1 hour 35 minutes</li> <li>Frankfurt: 1 hour 45 minutes</li> <li>Hamburg: 1 hour 40 minutes</li> <li>Memmingen: 2 hours</li> <li>Munich: 2 hours 5 minutes</li> <li>Stuttgart: 2 hours</li> </ul> <h3>Spain&nbsp;</h3> <ul> <li>Alicante: 2 hours 40 minutes</li> <li>Almeria: 2 hours 55 minutes</li> <li>Barcelona: 2 hours 25 minutes</li> <li>Bilbao: 2 hours 10 minutes</li> <li>Fuerteventura: 4 hours 10 minutes</li> <li>Girona: 2 hours 15 minutes</li> <li>Gran Canaria: 4 hours 25 minutes</li> <li>Ibiza: 2 hours 30 minutes</li> <li>Lanzarote: 4 hours 15 minutes</li> <li>Madrid: 2 hours 30 minutes</li> <li>Malaga: 2 hours 55 minutes</li> <li>Menorca: 2 hours 30 minutes</li> <li>Murcia: 2 hours 40 minutes</li> <li>Palma de Mallorca: 2 hours 30 minutes</li> <li>Reus: 2 hours 20 minutes</li> <li>Santa Cruz de La Palma: 4 hours 30 minutes</li> <li>Seville: 2 hours 45 minutes</li> <li>Valencia: 2 hours 35 minutes</li> </ul> <h3>Italy</h3> <ul> <li>Bologna: 2 hours 15 minutes</li> <li>Brindisi: 3 hours</li> <li>Catania: 3 hours 30 minutes</li> <li>Genoa: 2 hours 15 minutes</li> <li>Lamezia Terme: 3 hours 15 minutes</li> <li>Milan Bergamo: 2 hours 5 minutes</li> <li>Milan Malpensa: 2 hours</li> <li>Naples: 2 hours 50 minutes</li> <li>Olbia: 2 hours 40 minutes</li> <li>Pisa: 2 hours 20 minutes</li> <li>Reggio Calabria: 3 hours 20 minutes</li> <li>Rome Ciampino: 2 hours 45 minutes</li> <li>Rome Fiumicino: 2 hours 50 minutes</li> <li>Trapani: 3 hours 15 minutes</li> <li>Turin: 2 hours 10 minutes</li> <li>Venice: 2 hours 15 minutes</li> <li>Verona: 2 hours 10 minutes</li> </ul> <h3>Greece</h3> <ul> <li>Athens: 4 hours</li> <li>Chania: 4 hours</li> <li>Heraklion: 4 hours 10 minutes</li> <li>Kavala: 3 hours 50 minutes</li> <li>Kefalonia: 3 hours 45 minutes</li> <li>Kos: 4 hours 10 minutes</li> <li>Mitilini: 4 hours</li> <li>Mykonos: 4 hours</li> <li>Preveza/Lefkada: 3 hours 45 minutes</li> <li>Rhodes: 4 hours 10 minutes</li> <li>Skiathos: 3 hours 45 minutes</li> <li>Thessaloniki: 3 hours 50 minutes</li> <li>Zakynthos: 3 hours 55 minutes</li> </ul> <h3>Portugal&nbsp;</h3> <ul> <li>Faro: 2 hours 55 minutes</li> <li>Funchal: 3 hours 55 minutes</li> <li>Lisbon: 2 hours 40 minutes</li> <li>Porto: 2 hours 30 minutes</li> </ul> <h3>Netherlands</h3> <ul> <li>Amsterdam: 1 hour 25 minutes</li> <li>Eindhoven: 1 hour 30 minutes</li> </ul> <h3>Belgium&nbsp;</h3> <ul> <li>Brussels to Manchester: 1 hour 30 mins</li> <li>Charleroi to Manchester: 1 hour 25 mins</li> </ul> <h3>Switzerland</h3> <ul> <li>Basel: 1 hour 45 minutes</li> <li>Geneva: 1 hour 45 minutes</li> <li>Zurich: 2 hours</li> </ul> <h3>Austria</h3> <ul> <li>Innsbruck to Manchester: 1 hour 50 mins</li> <li>Salzburg to Manchester: 3 hours</li> <li>Vienna to Manchester: 2 hours 30 mins</li> </ul> <h3>Denmark</h3> <ul> <li>Billund to Manchester: 2 hours 5 mins</li> <li>Copenhagen to Manchester: 1 hour 55 mins</li> </ul> <h3>Norway</h3> <ul> <li>Bergen: 2 hours</li> <li>Oslo Gardermoen: 2 hours 10 minutes</li> <li>Oslo Sandefjord/Torp: 2 hours</li> </ul> <h3>Sweden</h3> <ul> <li>Gothenburg to Manchester: 1 hour 55 mins</li> <li>Stockholm to Manchester: 2 hours 25 mins</li> </ul> <h3>Finland</h3> <ul> <li>Helsinki-Vantaa to Manchester: 3 hours 5 minutes</li> <li>Kuusamo to Manchester:&nbsp;3 hours 30 minutes</li> <li>Rovaniemi to Manchester:&nbsp;3 hours&nbsp; 30 minutes</li> <li>Kittila to Manchester:&nbsp;3 hours 20 minutes</li> </ul> <h3>Poland</h3> <ul> <li>Gdansk: 2 hours 25 minutes</li> <li>Katowice: 2 hours 40 minutes</li> <li>Krakow: 2 hours 45 minutes</li> <li>Warsaw: 2 hours 30 minutes</li> <li>Wroclaw: 2 hours 20 minutes</li> </ul> <h3>Hungary</h3> <ul> <li>Budapest to Manchester: 2 hours 50 mins</li> </ul> <h3>Czech Republic</h3> <ul> <li>Prague to Manchester: 2 hours 15 mins</li> </ul> <h3>Slovakia</h3> <ul> <li>Bratislava to Manchester: 2 hours 30 mins</li> </ul> <h3>Romania</h3> <ul> <li>Bucharest to Manchester: 3 hours 10 mins</li> </ul> <h3>Bulgaria</h3> <ul> <li>Burgas: 3 hours 35 minutes</li> <li>Plovdiv: 3 hours 30 minutes</li> <li>Sofia: 3 hours 25 minutes</li> <li>Varna: 3 hours 30 minutes</li> </ul> <h3>Cyprus</h3> <ul> <li>Larnaca to Manchester: 4 hours 50 mins</li> <li>Paphos to Manchester: 4 hours 45 mins</li> </ul> <h3>Turkey</h3> <ul> <li>Antalya: 4 hours 30 minutes</li> <li>Bodrum: 4 hours 15 minutes</li> <li>Dalaman: 4 hours 20 minutes</li> <li>Istanbul Airport: 4 hours 10 minutes</li> <li>Istanbul Sabiha Gokcen: 4 hours 15 minutes</li> <li>Izmir: 4 hours 10 minutes</li> </ul> <h3>Malta</h3> <ul> <li>Malta to Manchester: 3 hours 30 mins</li> </ul> <h3>North Macedonia</h3> <ul> <li> <p>Ohrid: 3 hours 10 minutes</p> </li> </ul> <h3>Montenegro</h3> <ul> <li>Podgorica: 3 hours</li> <li>Tivat: 3 hours</li> </ul> <h3>Iceland</h3> <ul> <li>Reykjavik to Manchester: 3 hours 30 mins</li> </ul> <h3>Croatia</h3> <ul> <li>Dubrovnik: 3 hours</li> <li>Pula: 2 hours 45 minutes</li> <li>Split: 2 hours 55 minutes</li> <li>Zadar: 2 hours 45 minutes</li> <li>Zagreb: 2 hours 35 minutes</li> </ul> <h3>Latvia</h3> <ul> <li>Riga to Manchester: 2 hours 30 mins</li> </ul> <h3>Estonia</h3> <ul> <li>Tallinn to Manchester: 2 hours 50 mins</li> </ul> <h3>Luxembourg</h3> <ul> <li>Luxembourg to Manchester: 1 hour 35 mins</li> </ul> <h3>Slovenia</h3> <ul> <li>Ljubljana to Manchester: 2 hours 20 mins</li> </ul> <h3>Russia</h3> <ul> <li> <p>Moscow to Manchester: 3 hours 55 mins</p> </li> </ul> </section></div><div data-civid="669fb1db7ddf29fdd567dcb7" class="contentRender contentRender_14 contentRender_type_widget contentRender_name_plugins_core_textbox" data-sv-time="19" data-sv-index="14" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'><section data-sv-core-textbox data-guid="2b1e16f6-6433-45b4-bc76-883529821437"> <h2>Asia</h2> <h3>Israel</h3> <ul> <li>Tel Aviv: 5 hours 25 minutes</li> </ul> <h3>China</h3> <ul> <li>Beijing: 10 hours 10 minutes</li> <li>Hong Kong: 11 hours 30 minutes</li> <li>Shanghai: 11 hours 15 minutes</li> </ul> <h3>Qatar</h3> <ul> <li>Doha: 7 hours 20 minutes</li> </ul> <h3>UAE</h3> <ul> <li> <p>Dubai: 7 hours 25 minutes</p> </li> </ul> <p>Thailand</p> <ul> <li> <p>Phuket: 13 hours 30 minutes</p> </li> </ul> <h3>Singapore</h3> <ul> <li>Singapore: 13 hours 20 minutes</li> </ul> <h3>Jordan</h3> <ul> <li>Amman: 5 hours 25 minutes</li> </ul> <h3>India</h3> <ul> <li>Goa: 9 hours 40 minutes</li> </ul> </section></div><div data-civid="669fb1db7ddf29fdd567dcb9" class="contentRender contentRender_15 contentRender_type_widget contentRender_name_plugins_core_textbox" data-sv-time="19" data-sv-index="15" data-gtm-vars='{ "tCore" : { "contentNum" : "4" } }'><section data-sv-core-textbox data-guid="135080cb-0e40-456c-a481-b9c19a3f3bbb"> <h2>Africa</h2> <h3>Morocco</h3> <ul> <li> <p>Agadir to Manchester: 4 hours</p> </li> <li> <p>Casablanca to Manchester: 3 hours 35 minutes</p> </li> <li> <p>Marrakech to Manchester: 3 hours 50 minutes</p> </li> <li> <p>Tangier to Manchester: 3 hours 30 minutes</p> </li> </ul> <h3>Egypt</h3> <ul> <li> <p>Cairo International to Manchester: 5 hours 30 minutes</p> </li> <li> <p>Hurghada to Manchester: 5 hours 35 minutes</p> </li> <li> <p>Sharm El-Sheikh to Manchester: 5 hours 45 minutes</p> </li> </ul> <h3>Gambia</h3> <ul> <li> <p>Banjul to Manchester: 6 hours 20 minutes</p> </li> </ul> <h3>Tunisia</h3> <ul> <li> <p>Enfidha to Manchester: 3 hours</p> </li> </ul> </section></div><div data-civid="669fb1db7ddf29fdd567dcbb" class="contentRender contentRender_16 contentRender_type_widget contentRender_name_plugins_core_textbox" data-sv-time="19" data-sv-index="16" data-gtm-vars='{ "tCore" : { "contentNum" : "5" } }'><section data-sv-core-textbox data-guid="e50e86e7-758b-4bf8-9adf-14d3208c6f07"> <h2>North America</h2> <h3>USA</h3> <ul> <li>Atlanta to Manchester: 8 hours</li> <li>Boston to Manchester: 7 hours 30 mins</li> <li>Charlotte to Manchester: 8 hours 20 mins</li> <li>Chicago to Manchester: 8 hours 20 mins</li> <li>Los Angeles to Manchester: 10 hours 45 mins</li> <li>New York to Manchester: 8 hours</li> <li>Orlando to Manchester: 9 hours</li> <li>Philadelphia to Manchester: 8 hours 30 mins</li> <li>San Francisco to Manchester: 11 hours</li> <li>Seattle to Manchester: 9 hours</li> </ul> <h3>Canada</h3> <ul> <li> <p>Toronto: 8 hours</p> </li> </ul> <h3>Barbados</h3> <ul> <li>Barbados: 8 hours 40 minutes</li> </ul> <h3>Jamaica</h3> <ul> <li>Montego Bay: 9 hours 20 minutes</li> </ul> <h3>Mexico</h3> <ul> <li>Cancun: 10 hours 10 minutes</li> </ul> <p>&nbsp;</p> </section></div><div data-civid="669fb1db7ddf29fdd567dcbd" class="contentRender contentRender_17 contentRender_type_widget contentRender_name_plugins_core_textbox" data-sv-time="18" data-sv-index="17" data-gtm-vars='{ "tCore" : { "contentNum" : "6" } }'><section data-sv-core-textbox data-guid="2c9e5a4d-4ead-4af2-9565-dd69affa7e73"> <h2>South America</h2> <h3>Colombia</h3> <ul> <li>Bogota to Manchester: 10 hours 20 mins</li> </ul> <h3>Brazil</h3> <ul> <li>Rio de Janeiro to Manchester: 11 hours 40 mins</li> </ul> </section></div><div data-civid="669fb1db7ddf29fdd567dcbf" class="contentRender contentRender_18 contentRender_type_widget contentRender_name_plugins_collections_type_custom_slides contentRender_name_plugins_collections_template_custom_core_slider_preview_4_across_fullwidth" data-sv-time="92" data-sv-index="18" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'> <style>.preview-slider-4-across-fullwidth whitebg .img-cont { aspect-ratio: 390 / 555; }@media (min-width: 640px) { .preview-slider-4-across-fullwidth whitebg .img-cont { aspect-ratio: 394 / 561; } }@media (min-width: 1024px) { .preview-slider-4-across-fullwidth whitebg .img-cont { aspect-ratio: 394 / 561; } }@media (min-width: 1440px) { .preview-slider-4-across-fullwidth whitebg .img-cont { aspect-ratio: 394 / 561; } }</style> <!-- no slides selected --> </div><div data-civid="64d4b19e938c6344c3e839fe" class="contentRender contentRender_19 contentRender_type_widget contentRender_name_plugins_common_embed" data-sv-time="18" data-sv-index="19" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="custom-embed full" data-sv-embed-widget="true" data-guid="e48a420e-7fdd-4141-9b43-2f947fd857ef"> <div class="embed-container"> </div> </div> </div><div data-civid="669fb1db7ddf29fdd567dcc1" class="contentRender contentRender_20 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="92" data-sv-index="20" data-gtm-vars='{ "tCore" : { "contentNum" : "4" } }'> <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="6525b28c58d8a262bf5e696d" class="contentRender contentRender_21 contentRender_type_panel contentRender_name_plugins_common_product_search_container" data-sv-time="0" data-sv-index="21" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <section class="product-search" data-guid="cf3bda11-bf44-4747-97c7-4150061e07b0"> <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="659bca9dce7a575babca7df6" class="contentRender contentRender_22 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="82" data-sv-index="22" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <button role="tab" aria-controls="panel-4e875367-684b-48c1-87f2-9536211c5817" id="tab-4e875367-684b-48c1-87f2-9536211c5817" class="mobile-tab" >Things to do <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="4e875367-684b-48c1-87f2-9536211c5817" data-product-search="Things to do" data-default-selected="closed" role="tabpanel" id="panel-4e875367-684b-48c1-87f2-9536211c5817" aria-labelledby="tab-4e875367-684b-48c1-87f2-9536211c5817" class="ps-panel" > <div id="ps_4e875367-684b-48c1-87f2-9536211c5817"> <script id="ps_data_4e875367-684b-48c1-87f2-9536211c5817" type="text/template">{"sections":{},"data":{"title":"Things to do","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155111","155131","155121","155071","155031","155011","155051","154101","155061","154141","154171","155081","155161","155141","155151","155171","155331","155181","155041"],"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":"6526428258d8a262bf5ece3e","type":"plugins_nav_navitem_primary_main"},"link":{"id":"6526428258d8a262bf5ece3e","url":"https://www.visitmanchester.com/things-to-see-and-do/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_6526428258d8a262bf5ece3e"}},"guid":"4e875367-684b-48c1-87f2-9536211c5817","customSettings":{},"widgetArgs":{"nav":{"_id":"668bde21b5f2c298fad696b4","sortorder":0,"title":"Direct Flights to and from Manchester Airport","folder":"direct-flights-to-and-from-manchester-airport","section":"main","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-08T12:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"668bdfe2b5f2c298fad69ab8","meta_title":"Direct Flights to and from Manchester Airport","meta_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","open_graph_title":"Direct Flights to and from Manchester Airport","open_graph_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","parent_id":"6525e3ce58d8a262bf5ebc9f","parents_ids":["6525e38d58d8a262bf5e744f","6525e3a758d8a262bf5e9033","6525e3ce58d8a262bf5ebc9f"],"version_id":"669fb28e7ddf29fdd567ddba","created":"2024-07-08T12:40:01.376Z","content_owner":"default","site_name":"primary","updated":"2025-01-30T09:58:03.046Z","title_sort":"direct flights to and from manchester airport","site_section":"primary.main","published":true,"amp":false,"cms_title":"Direct Flights to and from Manchester Airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","cms_title_sort":"direct flights to and from manchester airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","folderHref":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","image":{"_id":"668bdfe2b5f2c298fad69ab8","original_public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","title":"Manchester","resource_raw":{"asset_id":"e22239f77b362a4f76d1d5f4e46eb467","public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","version":1720442808,"version_id":"81cd49ff94414489cd6441075175d38f","signature":"ec0e30df094895d63e89aa5e16f568c9d21dd5d2","width":750,"height":430,"format":"jpg","resource_type":"image","created_at":"2024-07-08T12:46:48.000Z","pages":1,"bytes":70482,"type":"upload","etag":"4cbc915e5121200da49fb6985578acf5","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"file","api_key":"756897581616859"},"categories_ids":["6527f6e340495a2d33807492"],"alt_text_raw":"Manchester Skyline","content_owner":"default","title_sort":"manchester","updated":"2024-07-08T12:47:30.632Z","private":false,"deleted":false,"created":"2024-07-08T12:47:30.632Z","resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7"}},"id":"668bdfe2b5f2c298fad69ab8","type":"image","inAssetRequest":false,"alt_text":"Manchester Skyline","expired":false},"locale_count":0,"id":"668bde21b5f2c298fad696b4","parent_id_string":"6525e3ce58d8a262bf5ebc9f","version_id_string":"669fb28e7ddf29fdd567ddba","href":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteFolderHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","metaTitle":"Direct Flights to and from Manchester Airport","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":22,"guid":"4e875367-684b-48c1-87f2-9536211c5817","data":{"title":"Things to do","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155111","155131","155121","155071","155031","155011","155051","154101","155061","154141","154171","155081","155161","155141","155151","155171","155331","155181","155041"],"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":"6526428258d8a262bf5ece3e","type":"plugins_nav_navitem_primary_main"},"link":{"id":"6526428258d8a262bf5ece3e","url":"https://www.visitmanchester.com/things-to-see-and-do/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_6526428258d8a262bf5ece3e"}},"civ":{"instance":{"type":"widget","name":"plugins_common_product_search","site_name":"primary","saved":false,"created":"2024-01-08T10:14:56.048Z","updated":"2024-01-08T10:14:56.048Z","deleted":false,"id":"659bca9dce7a575babca7df6","version_id_string":"659bca9dce7a575babca7df7"},"version":{"data":{"title":"Things to do","default_selected":"false","type":"listings","use_cat_groups":"on","categorygroups":["155111","155131","155121","155071","155031","155011","155051","154101","155061","154141","154171","155081","155161","155141","155151","155171","155331","155181","155041"],"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":"6526428258d8a262bf5ece3e","type":"plugins_nav_navitem_primary_main"},"link":{"id":"6526428258d8a262bf5ece3e","url":"https://www.visitmanchester.com/things-to-see-and-do/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_6526428258d8a262bf5ece3e"}},"created":"2024-01-08T10:14:56.051Z","id":"659bca9dce7a575babca7df7","instance_id_string":"659bca9dce7a575babca7df6"},"onTrunk":true,"civid":"659bca9dce7a575babca7df6"},"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_4e875367-684b-48c1-87f2-9536211c5817').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_4e875367-684b-48c1-87f2-9536211c5817'), 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="659bca9dce7a575babca7df8" class="contentRender contentRender_23 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="76" data-sv-index="23" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'> <button role="tab" aria-controls="panel-8a2dac87-5610-4746-8f93-ad1695ecb0c3" id="tab-8a2dac87-5610-4746-8f93-ad1695ecb0c3" class="mobile-tab" >What's On <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="8a2dac87-5610-4746-8f93-ad1695ecb0c3" data-product-search="What's On" data-default-selected="defaultSelected" role="tabpanel" id="panel-8a2dac87-5610-4746-8f93-ad1695ecb0c3" aria-labelledby="tab-8a2dac87-5610-4746-8f93-ad1695ecb0c3" class="ps-panel" > <div id="ps_8a2dac87-5610-4746-8f93-ad1695ecb0c3"> <script id="ps_data_8a2dac87-5610-4746-8f93-ad1695ecb0c3" type="text/template">{"sections":{},"data":{"title":"What's On","default_selected":"true","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"},"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"]}],"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"}},"guid":"8a2dac87-5610-4746-8f93-ad1695ecb0c3","customSettings":{},"widgetArgs":{"nav":{"_id":"668bde21b5f2c298fad696b4","sortorder":0,"title":"Direct Flights to and from Manchester Airport","folder":"direct-flights-to-and-from-manchester-airport","section":"main","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-08T12:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"668bdfe2b5f2c298fad69ab8","meta_title":"Direct Flights to and from Manchester Airport","meta_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","open_graph_title":"Direct Flights to and from Manchester Airport","open_graph_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","parent_id":"6525e3ce58d8a262bf5ebc9f","parents_ids":["6525e38d58d8a262bf5e744f","6525e3a758d8a262bf5e9033","6525e3ce58d8a262bf5ebc9f"],"version_id":"669fb28e7ddf29fdd567ddba","created":"2024-07-08T12:40:01.376Z","content_owner":"default","site_name":"primary","updated":"2025-01-30T09:58:03.046Z","title_sort":"direct flights to and from manchester airport","site_section":"primary.main","published":true,"amp":false,"cms_title":"Direct Flights to and from Manchester Airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","cms_title_sort":"direct flights to and from manchester airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","folderHref":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","image":{"_id":"668bdfe2b5f2c298fad69ab8","original_public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","title":"Manchester","resource_raw":{"asset_id":"e22239f77b362a4f76d1d5f4e46eb467","public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","version":1720442808,"version_id":"81cd49ff94414489cd6441075175d38f","signature":"ec0e30df094895d63e89aa5e16f568c9d21dd5d2","width":750,"height":430,"format":"jpg","resource_type":"image","created_at":"2024-07-08T12:46:48.000Z","pages":1,"bytes":70482,"type":"upload","etag":"4cbc915e5121200da49fb6985578acf5","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"file","api_key":"756897581616859"},"categories_ids":["6527f6e340495a2d33807492"],"alt_text_raw":"Manchester Skyline","content_owner":"default","title_sort":"manchester","updated":"2024-07-08T12:47:30.632Z","private":false,"deleted":false,"created":"2024-07-08T12:47:30.632Z","resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7"}},"id":"668bdfe2b5f2c298fad69ab8","type":"image","inAssetRequest":false,"alt_text":"Manchester Skyline","expired":false},"locale_count":0,"id":"668bde21b5f2c298fad696b4","parent_id_string":"6525e3ce58d8a262bf5ebc9f","version_id_string":"669fb28e7ddf29fdd567ddba","href":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteFolderHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","metaTitle":"Direct Flights to and from Manchester Airport","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":23,"guid":"8a2dac87-5610-4746-8f93-ad1695ecb0c3","data":{"title":"What's On","default_selected":"true","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"},"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"]}],"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"}},"civ":{"instance":{"type":"widget","name":"plugins_common_product_search","site_name":"primary","saved":false,"created":"2024-01-08T10:14:56.052Z","updated":"2024-01-08T10:14:56.052Z","deleted":false,"id":"659bca9dce7a575babca7df8","version_id_string":"659bca9dce7a575babca7df9"},"version":{"data":{"title":"What's On","default_selected":"true","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"},"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"]}],"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"}},"created":"2024-01-08T10:14:56.054Z","id":"659bca9dce7a575babca7df9","instance_id_string":"659bca9dce7a575babca7df8"},"onTrunk":true,"civid":"659bca9dce7a575babca7df8"},"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_8a2dac87-5610-4746-8f93-ad1695ecb0c3').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_8a2dac87-5610-4746-8f93-ad1695ecb0c3'), 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="659bca9dce7a575babca7dfa" class="contentRender contentRender_24 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="77" data-sv-index="24" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'> <button role="tab" aria-controls="panel-4adca630-884c-434d-9017-cd2a48c9b7aa" id="tab-4adca630-884c-434d-9017-cd2a48c9b7aa" class="mobile-tab" >Accommodation <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="4adca630-884c-434d-9017-cd2a48c9b7aa" data-product-search="Accommodation" data-default-selected="closed" role="tabpanel" id="panel-4adca630-884c-434d-9017-cd2a48c9b7aa" aria-labelledby="tab-4adca630-884c-434d-9017-cd2a48c9b7aa" class="ps-panel" > <div id="ps_4adca630-884c-434d-9017-cd2a48c9b7aa"> <script id="ps_data_4adca630-884c-434d-9017-cd2a48c9b7aa" type="text/template">{"sections":{},"data":{"title":"Accommodation","default_selected":"false","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":"4adca630-884c-434d-9017-cd2a48c9b7aa","customSettings":{},"widgetArgs":{"nav":{"_id":"668bde21b5f2c298fad696b4","sortorder":0,"title":"Direct Flights to and from Manchester Airport","folder":"direct-flights-to-and-from-manchester-airport","section":"main","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-08T12:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"668bdfe2b5f2c298fad69ab8","meta_title":"Direct Flights to and from Manchester Airport","meta_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","open_graph_title":"Direct Flights to and from Manchester Airport","open_graph_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","parent_id":"6525e3ce58d8a262bf5ebc9f","parents_ids":["6525e38d58d8a262bf5e744f","6525e3a758d8a262bf5e9033","6525e3ce58d8a262bf5ebc9f"],"version_id":"669fb28e7ddf29fdd567ddba","created":"2024-07-08T12:40:01.376Z","content_owner":"default","site_name":"primary","updated":"2025-01-30T09:58:03.046Z","title_sort":"direct flights to and from manchester airport","site_section":"primary.main","published":true,"amp":false,"cms_title":"Direct Flights to and from Manchester Airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","cms_title_sort":"direct flights to and from manchester airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","folderHref":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","image":{"_id":"668bdfe2b5f2c298fad69ab8","original_public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","title":"Manchester","resource_raw":{"asset_id":"e22239f77b362a4f76d1d5f4e46eb467","public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","version":1720442808,"version_id":"81cd49ff94414489cd6441075175d38f","signature":"ec0e30df094895d63e89aa5e16f568c9d21dd5d2","width":750,"height":430,"format":"jpg","resource_type":"image","created_at":"2024-07-08T12:46:48.000Z","pages":1,"bytes":70482,"type":"upload","etag":"4cbc915e5121200da49fb6985578acf5","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"file","api_key":"756897581616859"},"categories_ids":["6527f6e340495a2d33807492"],"alt_text_raw":"Manchester Skyline","content_owner":"default","title_sort":"manchester","updated":"2024-07-08T12:47:30.632Z","private":false,"deleted":false,"created":"2024-07-08T12:47:30.632Z","resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7"}},"id":"668bdfe2b5f2c298fad69ab8","type":"image","inAssetRequest":false,"alt_text":"Manchester Skyline","expired":false},"locale_count":0,"id":"668bde21b5f2c298fad696b4","parent_id_string":"6525e3ce58d8a262bf5ebc9f","version_id_string":"669fb28e7ddf29fdd567ddba","href":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteFolderHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","metaTitle":"Direct Flights to and from Manchester Airport","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":24,"guid":"4adca630-884c-434d-9017-cd2a48c9b7aa","data":{"title":"Accommodation","default_selected":"false","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-08T10:14:56.055Z","updated":"2024-01-08T10:14:56.055Z","deleted":false,"id":"659bca9dce7a575babca7dfa","version_id_string":"659bca9dce7a575babca7dfb"},"version":{"data":{"title":"Accommodation","default_selected":"false","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-08T10:14:56.056Z","id":"659bca9dce7a575babca7dfb","instance_id_string":"659bca9dce7a575babca7dfa"},"onTrunk":true,"civid":"659bca9dce7a575babca7dfa"},"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_4adca630-884c-434d-9017-cd2a48c9b7aa').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_4adca630-884c-434d-9017-cd2a48c9b7aa'), 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="659bca9dce7a575babca7dfc" class="contentRender contentRender_25 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="78" data-sv-index="25" data-gtm-vars='{ "tCore" : { "contentNum" : "4" } }'> <button role="tab" aria-controls="panel-b14718b0-29ba-4764-8ce9-2498f49db061" id="tab-b14718b0-29ba-4764-8ce9-2498f49db061" class="mobile-tab" >Shopping <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="b14718b0-29ba-4764-8ce9-2498f49db061" data-product-search="Shopping" data-default-selected="closed" role="tabpanel" id="panel-b14718b0-29ba-4764-8ce9-2498f49db061" aria-labelledby="tab-b14718b0-29ba-4764-8ce9-2498f49db061" class="ps-panel" > <div id="ps_b14718b0-29ba-4764-8ce9-2498f49db061"> <script id="ps_data_b14718b0-29ba-4764-8ce9-2498f49db061" 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":"b14718b0-29ba-4764-8ce9-2498f49db061","customSettings":{},"widgetArgs":{"nav":{"_id":"668bde21b5f2c298fad696b4","sortorder":0,"title":"Direct Flights to and from Manchester Airport","folder":"direct-flights-to-and-from-manchester-airport","section":"main","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-08T12:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"668bdfe2b5f2c298fad69ab8","meta_title":"Direct Flights to and from Manchester Airport","meta_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","open_graph_title":"Direct Flights to and from Manchester Airport","open_graph_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","parent_id":"6525e3ce58d8a262bf5ebc9f","parents_ids":["6525e38d58d8a262bf5e744f","6525e3a758d8a262bf5e9033","6525e3ce58d8a262bf5ebc9f"],"version_id":"669fb28e7ddf29fdd567ddba","created":"2024-07-08T12:40:01.376Z","content_owner":"default","site_name":"primary","updated":"2025-01-30T09:58:03.046Z","title_sort":"direct flights to and from manchester airport","site_section":"primary.main","published":true,"amp":false,"cms_title":"Direct Flights to and from Manchester Airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","cms_title_sort":"direct flights to and from manchester airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","folderHref":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","image":{"_id":"668bdfe2b5f2c298fad69ab8","original_public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","title":"Manchester","resource_raw":{"asset_id":"e22239f77b362a4f76d1d5f4e46eb467","public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","version":1720442808,"version_id":"81cd49ff94414489cd6441075175d38f","signature":"ec0e30df094895d63e89aa5e16f568c9d21dd5d2","width":750,"height":430,"format":"jpg","resource_type":"image","created_at":"2024-07-08T12:46:48.000Z","pages":1,"bytes":70482,"type":"upload","etag":"4cbc915e5121200da49fb6985578acf5","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"file","api_key":"756897581616859"},"categories_ids":["6527f6e340495a2d33807492"],"alt_text_raw":"Manchester Skyline","content_owner":"default","title_sort":"manchester","updated":"2024-07-08T12:47:30.632Z","private":false,"deleted":false,"created":"2024-07-08T12:47:30.632Z","resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7"}},"id":"668bdfe2b5f2c298fad69ab8","type":"image","inAssetRequest":false,"alt_text":"Manchester Skyline","expired":false},"locale_count":0,"id":"668bde21b5f2c298fad696b4","parent_id_string":"6525e3ce58d8a262bf5ebc9f","version_id_string":"669fb28e7ddf29fdd567ddba","href":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteFolderHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","metaTitle":"Direct Flights to and from Manchester Airport","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":25,"guid":"b14718b0-29ba-4764-8ce9-2498f49db061","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-08T10:14:56.058Z","updated":"2024-01-08T10:14:56.058Z","deleted":false,"id":"659bca9dce7a575babca7dfc","version_id_string":"659bca9dce7a575babca7dfd"},"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-08T10:14:56.059Z","id":"659bca9dce7a575babca7dfd","instance_id_string":"659bca9dce7a575babca7dfc"},"onTrunk":true,"civid":"659bca9dce7a575babca7dfc"},"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_b14718b0-29ba-4764-8ce9-2498f49db061').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_b14718b0-29ba-4764-8ce9-2498f49db061'), 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="659bca9dce7a575babca7dfe" class="contentRender contentRender_26 contentRender_type_widget contentRender_name_plugins_common_product_search" data-sv-time="79" data-sv-index="26" data-gtm-vars='{ "tCore" : { "contentNum" : "5" } }'> <button role="tab" aria-controls="panel-44c5c7ae-c895-4d8c-b73e-2ed83741e3d7" id="tab-44c5c7ae-c895-4d8c-b73e-2ed83741e3d7" class="mobile-tab" >Food & Drink <img src="/includes/public/assets/shared/arrows/arrow_right.svg" alt="Arrow down"></i></button> <div data-guid="44c5c7ae-c895-4d8c-b73e-2ed83741e3d7" data-product-search="Food & Drink" data-default-selected="closed" role="tabpanel" id="panel-44c5c7ae-c895-4d8c-b73e-2ed83741e3d7" aria-labelledby="tab-44c5c7ae-c895-4d8c-b73e-2ed83741e3d7" class="ps-panel" > <div id="ps_44c5c7ae-c895-4d8c-b73e-2ed83741e3d7"> <script id="ps_data_44c5c7ae-c895-4d8c-b73e-2ed83741e3d7" 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":"44c5c7ae-c895-4d8c-b73e-2ed83741e3d7","customSettings":{},"widgetArgs":{"nav":{"_id":"668bde21b5f2c298fad696b4","sortorder":0,"title":"Direct Flights to and from Manchester Airport","folder":"direct-flights-to-and-from-manchester-airport","section":"main","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-08T12:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"668bdfe2b5f2c298fad69ab8","meta_title":"Direct Flights to and from Manchester Airport","meta_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","open_graph_title":"Direct Flights to and from Manchester Airport","open_graph_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","parent_id":"6525e3ce58d8a262bf5ebc9f","parents_ids":["6525e38d58d8a262bf5e744f","6525e3a758d8a262bf5e9033","6525e3ce58d8a262bf5ebc9f"],"version_id":"669fb28e7ddf29fdd567ddba","created":"2024-07-08T12:40:01.376Z","content_owner":"default","site_name":"primary","updated":"2025-01-30T09:58:03.046Z","title_sort":"direct flights to and from manchester airport","site_section":"primary.main","published":true,"amp":false,"cms_title":"Direct Flights to and from Manchester Airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","cms_title_sort":"direct flights to and from manchester airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","folderHref":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","image":{"_id":"668bdfe2b5f2c298fad69ab8","original_public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","title":"Manchester","resource_raw":{"asset_id":"e22239f77b362a4f76d1d5f4e46eb467","public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","version":1720442808,"version_id":"81cd49ff94414489cd6441075175d38f","signature":"ec0e30df094895d63e89aa5e16f568c9d21dd5d2","width":750,"height":430,"format":"jpg","resource_type":"image","created_at":"2024-07-08T12:46:48.000Z","pages":1,"bytes":70482,"type":"upload","etag":"4cbc915e5121200da49fb6985578acf5","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"file","api_key":"756897581616859"},"categories_ids":["6527f6e340495a2d33807492"],"alt_text_raw":"Manchester Skyline","content_owner":"default","title_sort":"manchester","updated":"2024-07-08T12:47:30.632Z","private":false,"deleted":false,"created":"2024-07-08T12:47:30.632Z","resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7"}},"id":"668bdfe2b5f2c298fad69ab8","type":"image","inAssetRequest":false,"alt_text":"Manchester Skyline","expired":false},"locale_count":0,"id":"668bde21b5f2c298fad696b4","parent_id_string":"6525e3ce58d8a262bf5ebc9f","version_id_string":"669fb28e7ddf29fdd567ddba","href":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteFolderHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","metaTitle":"Direct Flights to and from Manchester Airport","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":26,"guid":"44c5c7ae-c895-4d8c-b73e-2ed83741e3d7","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-08T10:14:56.061Z","updated":"2024-01-08T10:14:56.061Z","deleted":false,"id":"659bca9dce7a575babca7dfe","version_id_string":"659bca9dce7a575babca7dff"},"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-08T10:14:56.062Z","id":"659bca9dce7a575babca7dff","instance_id_string":"659bca9dce7a575babca7dfe"},"onTrunk":true,"civid":"659bca9dce7a575babca7dfe"},"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_44c5c7ae-c895-4d8c-b73e-2ed83741e3d7').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_44c5c7ae-c895-4d8c-b73e-2ed83741e3d7'), 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="cf3bda11-bf44-4747-97c7-4150061e07b0"]'); 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="669fb1db7ddf29fdd567dccd" class="contentRender contentRender_27 contentRender_type_widget contentRender_name_plugins_collections_type_custom_slides contentRender_name_plugins_collections_template_custom_core_slider_4_across_fullwidth" data-sv-time="92" data-sv-index="27" data-gtm-vars='{ "tCore" : { "contentNum" : "5" } }'> <style>.slider-4-across-fullwidth .img-cont { aspect-ratio: 394 / 547; }@media (min-width: 640px) { .slider-4-across-fullwidth .img-cont { aspect-ratio: 394 / 547; } }@media (min-width: 1024px) { .slider-4-across-fullwidth .img-cont { aspect-ratio: 394 / 547; } }@media (min-width: 1440px) { .slider-4-across-fullwidth .img-cont { aspect-ratio: 394 / 547; } }</style> <!-- no slides selected --> </div><div data-civid="669fb1db7ddf29fdd567dccf" class="contentRender contentRender_28 contentRender_type_widget contentRender_name_plugins_collections_type_custom_slides contentRender_name_plugins_collections_template_custom_core_side_by_side_1_across_fullwidth" data-sv-time="92" data-sv-index="28" data-gtm-vars='{ "tCore" : { "contentNum" : "6" } }'> <style>.side-by-side-1-across-fullwidth .img-cont { aspect-ratio: 289 / 164; }@media (min-width: 640px) { .side-by-side-1-across-fullwidth .img-cont { aspect-ratio: 620 / 388; } }@media (min-width: 1024px) { .side-by-side-1-across-fullwidth .img-cont { aspect-ratio: 902 / 564; } }@media (min-width: 1440px) { .side-by-side-1-across-fullwidth .img-cont { aspect-ratio: 902 / 564; } }</style> <!-- no slides selected --></div><div data-civid="669fb1db7ddf29fdd567dcd1" class="contentRender contentRender_29 contentRender_type_widget contentRender_name_plugins_common_events_index" data-sv-time="80" data-sv-index="29" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div id="layoutjs_f12eb7ec-c990-4ac4-92ea-6b5b431bad57" class="layoutjsContainer" data-gtm-vars='{ "tCore" : { "category" : "layoutjs_plugins_common_events_index" } }'> <script id="ljs_data_f12eb7ec-c990-4ac4-92ea-6b5b431bad57" type="text/template"> {"sections":{},"data":{"show_search_box":"true","show_region":"true","show_date":"on","date_range":"month","calendar":"1","use_cat_groups":"off","default_view":"grid"},"guid":"f12eb7ec-c990-4ac4-92ea-6b5b431bad57","customSettings":{},"widgetArgs":{"nav":{"_id":"668bde21b5f2c298fad696b4","sortorder":0,"title":"Direct Flights to and from Manchester Airport","folder":"direct-flights-to-and-from-manchester-airport","section":"main","type":"page","active":true,"show_on_nav":true,"publish_start":"2024-07-08T12:00:00.000Z","searchable":"yes","locale_code":"en-us","new_window":false,"image_id":"668bdfe2b5f2c298fad69ab8","meta_title":"Direct Flights to and from Manchester Airport","meta_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","open_graph_title":"Direct Flights to and from Manchester Airport","open_graph_description":"Manchester Airport offers over 170 direct flights to and from cities across the globe throughout the year.","parent_id":"6525e3ce58d8a262bf5ebc9f","parents_ids":["6525e38d58d8a262bf5e744f","6525e3a758d8a262bf5e9033","6525e3ce58d8a262bf5ebc9f"],"version_id":"669fb28e7ddf29fdd567ddba","created":"2024-07-08T12:40:01.376Z","content_owner":"default","site_name":"primary","updated":"2025-01-30T09:58:03.046Z","title_sort":"direct flights to and from manchester airport","site_section":"primary.main","published":true,"amp":false,"cms_title":"Direct Flights to and from Manchester Airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","cms_title_sort":"direct flights to and from manchester airport - /visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","folderHref":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","image":{"_id":"668bdfe2b5f2c298fad69ab8","original_public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","title":"Manchester","resource_raw":{"asset_id":"e22239f77b362a4f76d1d5f4e46eb467","public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7","version":1720442808,"version_id":"81cd49ff94414489cd6441075175d38f","signature":"ec0e30df094895d63e89aa5e16f568c9d21dd5d2","width":750,"height":430,"format":"jpg","resource_type":"image","created_at":"2024-07-08T12:46:48.000Z","pages":1,"bytes":70482,"type":"upload","etag":"4cbc915e5121200da49fb6985578acf5","placeholder":false,"url":"http://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","secure_url":"https://res.cloudinary.com/simpleview/image/upload/v1720442808/clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7.jpg","folder":"clients/manchester","access_mode":"public","original_filename":"file","api_key":"756897581616859"},"categories_ids":["6527f6e340495a2d33807492"],"alt_text_raw":"Manchester Skyline","content_owner":"default","title_sort":"manchester","updated":"2024-07-08T12:47:30.632Z","private":false,"deleted":false,"created":"2024-07-08T12:47:30.632Z","resource":{"raw":{"resource_type":"image","format":"jpg","pages":1,"public_id":"clients/manchester/71624000013149004_zc_v1_1717086051964_treehouse_26d0f5f7-4cde-495d-a8fd-e8aafc1da0a7"}},"id":"668bdfe2b5f2c298fad69ab8","type":"image","inAssetRequest":false,"alt_text":"Manchester Skyline","expired":false},"locale_count":0,"id":"668bde21b5f2c298fad696b4","parent_id_string":"6525e3ce58d8a262bf5ebc9f","version_id_string":"669fb28e7ddf29fdd567ddba","href":"/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","absoluteFolderHref":"https://www.visitmanchester.com/visitor-information/travel-information/manchester-airport/direct-flights-to-and-from-manchester-airport/","metaTitle":"Direct Flights to and from Manchester Airport","rootCmsUrl":"/nav/sitemap/site_primary/section_main/"},"num":29,"guid":"f12eb7ec-c990-4ac4-92ea-6b5b431bad57","data":{"show_search_box":"true","show_region":"true","show_date":"on","date_range":"month","calendar":"1","use_cat_groups":"off","default_view":"grid"},"civ":{"instance":{"type":"widget","name":"plugins_common_events_index","site_name":"primary","saved":false,"created":"2024-07-23T13:39:26.922Z","updated":"2024-07-23T13:39:26.922Z","deleted":false,"id":"669fb1db7ddf29fdd567dcd1","version_id_string":"669fb1db7ddf29fdd567dcd2"},"version":{"data":{"show_search_box":"true","show_region":"true","show_date":"on","date_range":"month","calendar":"1","use_cat_groups":"off","default_view":"grid"},"created":"2024-07-23T13:39:26.925Z","id":"669fb1db7ddf29fdd567dcd2","instance_id_string":"669fb1db7ddf29fdd567dcd1"},"onTrunk":true,"civid":"669fb1db7ddf29fdd567dcd1"},"name":"plugins_common_events_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"}}} </script> </div> <script> require([ 'jquery', 'plugins_core/main', 'sv_site', 'sv_clientMoment', 'plugins_common_custom_layoutjs', 'plugins_common_custom_lazyload', 'plugins_common_custom_ui_watcher', 'sv_clientLib', 'plugins_common_custom_utils', ], function( $, core, site, clientMoment, layoutjs, lazyload, UIWatcher, clientLib, utils, ) { init(); async function init() { const dataString = document.querySelector('#ljs_data_f12eb7ec-c990-4ac4-92ea-6b5b431bad57').textContent; const widget = JSON.parse(dataString); const { allRegions, validRegions, allChannels, validChannels } = await setup(widget); const searchDate = (widget?.data?.show_date ?? 'off') === 'on'; const searchRegion = (widget?.data?.show_region ?? 'false') === 'true'; const { validCats } = await setup(widget); const categories = validCats; const hasCatGroups = widget?.data?.use_cat_groups === 'on' && !!widget.data.cat_groups; const catGroups = hasCatGroups ? widget.data.cat_groups.map(cg =>({ label: cg.title, value: cg.cats.join(',') })) : []; console.log({hasCatGroups, catGroups}) const regions = validRegions.map(region => ({ label: region.region, value: region.regionid.toString() })); const regionsChosen = !!widget?.data?.regions; const limit = 15; let xhr; let widgetStartDate = clientMoment(); let widgetEndDate; const controller = new AbortController; const signal = controller.signal; const defaultHooks = []; const defaultView = widget?.data?.default_view ? widget.data.default_view : 'grid'; const t = { leo: widget.translations['translations.static.leo'], events: widget.translations['translations.static.events'], }; 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; // If no dates selected in url set date based on widget drop if (widget.data.date_range == "day") { widgetEndDate = clientMoment(); } else if (widget.data.date_range == "month") { widgetEndDate = clientMoment().add(1, "months"); } else if (widget.data.date_range == "year") { widgetEndDate = clientMoment().add(1, "year"); } else if (widget.data.date_range == "weekend") { widgetStartDate = clientMoment().day(5); widgetEndDate = clientMoment().day(7); } else { widgetEndDate = clientMoment().add(6, "days"); } if (widget.data.date_range == "custom") { if (widget.data.from_date !== undefined) { widgetStartDate = clientMoment(widget.data.from_date); } if (widget.data.to_date !== undefined) { widgetEndDate = clientMoment(widget.data.to_date); } } if (widget?.data?.detail_type) { defaultHooks.push({ name : 'afterFind_custom_detail_type', args : { detail_type : widget.data.detail_type } }); } // remove timestamps + format widgetStartDate = widgetStartDate.format("YYYY-MM-DD"); widgetEndDate = widgetEndDate.format("YYYY-MM-DD"); console.log(widgetEndDate); let allFilterCatItems; if (hasCatGroups) { allFilterCatItems = widget.data.cat_groups.map(cg => cg.cats).flat(); } else { allFilterCatItems = categories.map(cat => cat.value); } // 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 = { active : true, $and : [ { "categories.catId" : { $in : allFilterCatItems } } ] } baseFilter.$and.push({ "custom.channels.channelkey" : { $in:[ 148441 ]} }); if (restrictRanks) { baseFilter.$and.push({ "custom.rankid": { $in : widget.data.rank_filter } }); } if (restrictChannels) { baseFilter.$and.push({ "custom.channels.channelkey": { $in: widget.data.channel_filter.map(channelkey => Number(channelkey)) } }); } if (regionsChosen) { baseFilter['udfs_object.11.value_raw.listid'] = { $in : regions.map(function(val) { return Number(val.value) }) } } const geoSettings = { maxRangeMiles : site.siteConfig.maxRangeMiles, clientLat : site.siteConfig.latitude, clientLong : site.siteConfig.longitude, } const vue = layoutjs.getVue({ rootNode : $('#layoutjs_f12eb7ec-c990-4ac4-92ea-6b5b431bad57'), type : 'events', view : defaultView, limit : limit, sort : 'date', translations : t.leo, rssUrl : '/event/rss/', // 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 : 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 : 'daterange', label : t.events.dates, type : 'daterange', reset : false, show: searchDate, initialValue : { start : widgetStartDate, end : widgetEndDate }, typeExtra : { dateFormat : 'MMM Do' }, toFilter : function(value, filter, context) { if (context === 'query') { filter.date_range = { start : { $date : clientMoment(value.start).toISOString() }, end : { $date : clientMoment(value.end).toISOString() } }; } else if (context === 'runCounts') { filter['dates'] = { $elemMatch : { eventDate : { $gte : { $date : clientMoment(value.start).toISOString() }, $lte : { $date : clientMoment(value.end).add(1, 'day').subtract(1, 'second').toISOString() } } } } } return filter; } }, ( hasCatGroups ? { name : 'cat_groups', label : t.leo.categories, show : catGroups.length > 1, type : 'checkbox', typeExtra : { options : catGroups, }, toFilter : function(value, filter, context) { const items = value .map(catList => catList.split(',')) .flat(); filter['categories.catId'] = { $in : items.map(function(val) { return Number(val) }) }; return filter; } } : { name : 'categories', label : t.leo.categories, // since we implicitly filter on available categories, we hide the checkboxes if there is one or less options show : categories.length > 1, type : 'checkbox', typeExtra : { options : categories, countArgs : { watchFilters : ['daterange', 'regions'], unsupportedFilters : ['keyword'], field : 'categories.catId', unwind : 'categories', model : 'plugins_events_events', sort : true } }, toFilter : function(value, filter, context) { filter['categories.catId'] = { $in : value.map(function(val) { return Number(val) }) }; 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 ? ['cat_groups', 'daterange'] : ['subcats'], unsupportedFilters : ['keyword'], field : 'udfs_object.11.value_raw.listid', unwind: 'udfs_object.11.value_raw', model : 'plugins_events_events', sort : true } }, toFilter : function(value, filter, context) { filter.$and.push({ "udfs_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 ? ['cat_groups', 'daterange'] : ['subcats'], 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; } }, ], sortOptions : [ { value : 'date', label : t.leo.recommended }, { value : 'distance', label : t.leo.near_me } ], maxRangeMiles : geoSettings.maxRangeMiles, latitude : geoSettings.clientLat, longitude : geoSettings.clientLong, data : {}, // computed allows the passing of computed and method properties, in cases where they may need to be unique to the template computed : {}, methods : {}, watch : { docs: function() { 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 : { _id : 1, // Added to maintian solr distance search, do not remove. location : 1, "udfs_object.24.value_raw" : 1, "udfs_object.25.value_raw" : 1, date : 1, startDate: 1, endDate: 1, recurrence: 1, recurType: 1, latitude : 1, longitude : 1, media_raw : 1, recid : 1, type: 1, dates : 1, title : 1, url : 1, accountId : 1, city : 1, "udfs_object.12.value" : 1, region : 1, "udfs_object.20.value_string" : 1, "udfs_object.26.value_string" : 1, "custom.rankname" : 1, "listing.recid" : 1, "listing.acctid" : 1, "listing.region" : 1, "listing.city" : 1, "listing.primary_category" : 1, "listing.rankname" : 1, "listing.listingudfs_object.26.value_string" : 1, "udfs.find(udfs => udfs.fieldid === 24).value": 1, "udfs.find(udfs => udfs.fieldid === 25).value": 1, "listing.title" : 1, "listing.url" : 1, "udfs_object.2.value" : 1, "custom.rankid" : 1, "custom.channels.channelkey": 1, categories : 1, }, hooks : defaultHooks }; if (self.sort === 'pan') { options.sort = { date : 1, rank : 1, "udfs_object.15.value": 1, title_sort : 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 === 'date') { options.sort = { date : 1, rank : 1, "udfs_object.15.value": 1, title_sort : 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(); } const rtn = await data(); return cb(null, rtn); async function data() { xhr = utils.call(fetch(utils.getAPIUrl('/includes/rest_v2/plugins_events_events_by_date/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, docs : res.docs.docs.slice(0, self.args.limit) }; returnData.docs = returnData.docs.map(function(val, index) { return { recid : val.recid, type: val.type, title : val.title, crmc : val.categories?.[0]?.catName, acctid : val.accountId, city : val.udfs_object?.[20]?.value_string ?? val.city, region : val.region, rankname: val.custom.rankname, price: val.admission ?? val.udfs_object?.[26]?.value_string, index: (index + (options.skip || 0)) ?? undefined, image_url : val.media_raw ? val.media_raw[0].mediaurl : site.siteConfig.custom[site.site].defaultImageUrl, url : val.url, locations : [{ title : val.listing !== undefined && val.location === undefined ? val.listing.title : val.location, itemName : val.listing !== undefined ? val.listing.title : undefined, url : val.listing !== undefined ? val.listing.url : undefined, crmc : val.listing !== undefined ? val.listing.primary_category.catname : undefined, crmsc : val.listing !== undefined ? val.listing.primary_category.subcatname : undefined, recid : val.listing !== undefined ? val.listing.recid : undefined, acctid : val.listing !== undefined ? val.listing.acctid : undefined, region : val.listing !== undefined ? val.listing.region : undefined, city : val.listing !== undefined ? val.listing.city : undefined, rankname: val.listing !== undefined ? val.listing.rankname : undefined, price: val.listing !== undefined ? val.listing.listingudfs_object?.[26]?.value_string : undefined, }], // set event location udfs : val.udfs, udfs_object : val.udfs_object, channels: val.custom.channels.channelkey, //latitude: val.udfs ? val.udfs.find(udfs => udfs.fieldid === 24).value : undefined, //longitude: val.udfs ? val.udfs.find(udfs => udfs.fieldid === 25).value : undefined, latitude: val.udfs_object?.[24]?.value_raw ?? undefined, longitude: val.udfs_object?.[25]?.value_raw ?? undefined, date : new Date(val.date), start_date : val.startDate ? new Date(val.startDate) : undefined, end_date : val.endDate ? new Date(val.endDate) : undefined, recurrence: val.recurrence, recur_type: val.recurType, categories: val.categories, button : { title: t.leo.read_more, weburl: val.weburl, url: val.url } } }); returnData.itemType = 'events'; returnData.itemListName = 'Events 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: 'Events' }); } async function setup(widget) { 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 } }, options: { castDocs:false, fields: { label: 1, value: 1 } } }), token: core.simpleToken }))); if (allCatsErr) return new Error(allCatsErr); const validCats = !!widget?.data?.cats ? allCats.docs.filter(cat => widget.data.cats.indexOf(cat.value.toString()) !== -1) : allCats.docs; const [allRegions, allRegionErr] = await utils.call(fetch(utils.getAPIUrl( '/includes/rest_v2/plugins_events_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 [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; return {validCats, allRegions, validRegions, allChannels, validChannels}; } } }); </script></div><div data-civid="6502d3e2524531454d9a8f72" class="contentRender contentRender_30 contentRender_type_panel contentRender_name_plugins_common_snapwidget" data-sv-time="1" data-sv-index="30" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="panel-snapwidget"> <div class="title"> <i class="social-icon fab fa-instagram"></i> <h2 class="panel-title">Share and follow Visit Manchester on Instagram</h2> </div> <div data-civid="6526645758d8a262bf5ed62d" class="contentRender contentRender_31 contentRender_type_widget contentRender_name_plugins_common_embed" data-sv-time="19" data-sv-index="31" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'> <div class="custom-embed full" data-sv-embed-widget="true" data-guid="cfed4e8f-0b25-4e37-806d-f6daf1db2a76"> <div class="embed-container"> <!-- SnapWidget --> <script src="https://snapwidget.com/js/snapwidget.js"></script> <iframe src="https://snapwidget.com/embed/277452" class="snapwidget-widget" allowTransparency="true" frameborder="0" scrolling="no" style="border:none; overflow:hidden; width:100%; "></iframe> </div> </div> </div> <div class="tagline"> Follow us everywhere <div data-civid="6526645758d8a262bf5ed62f" class="contentRender contentRender_32 contentRender_type_widget contentRender_name_plugins_collections_type_custom_social_slides contentRender_name_plugins_collections_template_custom_social_links" data-sv-time="96" data-sv-index="32" 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> </div><div data-civid="64d4b1b9938c6344c3e83a02" class="contentRender contentRender_33 contentRender_type_widget contentRender_name_plugins_common_embed" data-sv-time="20" data-sv-index="33" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'> <div class="custom-embed full" data-sv-embed-widget="true" data-guid="6b9f7093-248d-4ebe-9ffd-aac416d0d955"> <div class="embed-container"> </div> </div> </div> </div> <div class="footer-container"> <div data-civid="64c7adda7bb02a0e877d05d5" class="contentRender contentRender_34 contentRender_type_panel contentRender_name_plugins_common_footer" data-sv-time="0" data-sv-index="34" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="sponsor-logos-container"> <div class="sponsor-logos"> <div data-civid="659a7653ce7a575babca106d" class="contentRender contentRender_47 contentRender_type_widget contentRender_name_plugins_common_sponsor_logos" data-sv-time="22" data-sv-index="47" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="sponsor-logos" data-guid="b624d8ce-0772-40b9-945c-77f48a5fb509" 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_48 contentRender_type_widget contentRender_name_plugins_common_footer_links" data-sv-time="22" data-sv-index="48" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="footer-links" data-guid="967ff54f-ffed-467e-a661-357abcaec445"> <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="ea9c0322-1ccf-4f38-916c-f3e5ae1ae03c"> <div class="footer-content-container"> <div class="footer-logo"> <div data-civid="659a7653ce7a575babca105b" class="contentRender contentRender_38 contentRender_type_widget contentRender_name_plugins_common_logo_footer" data-sv-time="20" data-sv-index="38" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'><div class="logo-footer" data-guid="9ddb56d8-6d47-406d-92e3-22532f013720" > <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_35 contentRender_type_widget contentRender_name_plugins_common_call_to_action" data-sv-time="19" data-sv-index="35" 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_36 contentRender_type_widget contentRender_name_plugins_common_call_to_action" data-sv-time="19" data-sv-index="36" 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_37 contentRender_type_widget contentRender_name_plugins_common_call_to_action" data-sv-time="19" data-sv-index="37" 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_40 contentRender_type_widget contentRender_name_plugins_collections_type_custom_social_slides contentRender_name_plugins_collections_template_custom_social_links" data-sv-time="92" data-sv-index="40" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'> <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_41 contentRender_type_widget contentRender_name_plugins_nav_footer" data-sv-time="32" data-sv-index="41" 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_42 contentRender_type_widget contentRender_name_plugins_common_site_links" data-sv-time="78" data-sv-index="42" data-gtm-vars='{ "tCore" : { "contentNum" : "1" } }'> <div class="site-link" data-guid="5274c166-d989-44fb-81e1-5a4b9f18a0fa"> <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_43 contentRender_type_widget contentRender_name_plugins_common_site_links" data-sv-time="80" data-sv-index="43" data-gtm-vars='{ "tCore" : { "contentNum" : "2" } }'> <div class="site-link" data-guid="0f96bfa7-ecb5-4c43-b31d-c2e6e94fdb73"> <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_44 contentRender_type_widget contentRender_name_plugins_common_site_links" data-sv-time="81" data-sv-index="44" data-gtm-vars='{ "tCore" : { "contentNum" : "3" } }'> <div class="site-link" data-guid="8d998b5f-a5fd-4d25-a7dc-97fff8a1f93d"> <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_45 contentRender_type_widget contentRender_name_plugins_common_site_links" data-sv-time="81" data-sv-index="45" data-gtm-vars='{ "tCore" : { "contentNum" : "4" } }'> <div class="site-link" data-guid="58a9e3d5-b183-48d0-906c-753de6fd74d4"> <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_39 contentRender_type_widget contentRender_name_plugins_core_textbox" data-sv-time="20" data-sv-index="39" data-gtm-vars='{ "tCore" : { "contentNum" : "7" } }'><section data-sv-core-textbox data-guid="abdfec52-ea57-42a3-b393-ad4774a045aa"> <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_46 contentRender_type_widget contentRender_name_plugins_common_vancookietool" data-sv-time="21" data-sv-index="46" 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_79065520_9f02f395/core/plugins/core/public/js/loginCheck.js"></script> <script src="/includes/public/managed/v_79065520_9f02f395/core/plugins/common/virtuals/js/shared_footer.js" defer></script> <script src="/includes/public/managed/v_79065520_9f02f395/core/plugins/common/virtuals/js/custom_forms.js" defer></script> <script src="/includes/public/managed/v_79065520_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