Nav

Mob Nav

Location content

Location

York is the largest city in North Yorkshire and has close connection with the many towns, villages and industries that make up the county.

Whoever you are and whatever you love to do, York is a special place to make home.

York is an incredible and inspiring city in which to live, learn and work. Long- established as one of the country’s favourite tourist destinations, it was also named the most popular city in the UK by YouGov in 2021.

These accolades reflect high levels of employment, outstanding schools, a strong sense of community and positive levels of health and well-being.

York is also one of the most well- connected places in the country. Our location means we are just 20 minutes from Leeds by train and 90 minutes from Manchester, with just a short extra journey to Manchester International Airport. London is less than two hours away and Edinburgh is two and a half hours away. Flexible working is supported and we welcome candidates that may not wish to commute to York daily, but are happy to do so on a flexible basis.

View Campus Map

Footer

An error occurred while processing the template.
The following has evaluated to null or missing:
==> propsUtil.get(ucmLocaleKey)  [in template "64056#64102#365043" at line 28, column 19]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign locale = propsUtil.get(ucmLoc...  [in template "64056#64102#365043" at line 28, column 1]
----
1<div id="outer-footer" class="updatedFooter" style="padding-left: 0px; width: 1640px;"> 
2	 <div id="inner-footer-expert" class=""> 
3					<div id="footerLogo"> 
4					<#--<#if FooterLogo.getData()?? && FooterLogo.getData() != ""> 
5					<#assign footerLogoHTML = "${FooterLogo.getData()}"/> 
6					<#if (footerLogoHTML?length > 0)> 
7					${footerLogoHTML} 
8					<#else> 
9						<img src="https://www/hays.co.uk/cs/HaysMicroSites/assets/img/hayslogo.gif" id="defaultLogo" alt="Hays  
10							footer logo"> 
11					</#if> 
12					</#if>--> 
13					<#assign haysLogo = propsUtil.get("HAYS_LOGO")/> 
14					<img src="${haysLogo}" id="defaultLogo" alt="Hays  
15							footer logo" style="max-width:200px!important;margin:0px 15px;"> 
16					</div> 
17					<div id="footerLogo-Links"> 
18					<#if Link.getSiblings()?has_content> 
19							<#list Link.getSiblings() as cur_Link> 
20							<#if cur_Link.getData()?? && cur_Link.getData() != ""> 
21									<#assign linkData = "${cur_Link.getData()}"/> 
22												${linkData} 
23							</#if> 
24							</#list> 
25						</#if> 
26					</div> 
27					<#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale"> 
28<#assign locale = propsUtil.get(ucmLocaleKey)/> 
29<#assign apiUrl = propsUtil.get("WEB72_API_DOMAIN")/> 
30 
31<#assign lr74CutoverCountryCode = propsUtil.get("LR74_CUTOVER_COUNTRY_CODE")/> 
32<#if lr74CutoverCountryCode??> 
33<#list lr74CutoverCountryCode?split(",") as countryCode> 
34 <#if countryCode = themeDisplay.getLocale()?keep_after_last("_") > 
35    <#assign apiUrl = propsUtil.get("API_DOMAIN")/> 
36 </#if> 
37</#list> 
38</#if> 
39 
40<#attempt> 
41 
42<#if httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)??> 
43<#assign response = httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)> 
44<#assign responseObj = jsonFactoryUtil.createJSONObject(response)> 
45<#assign getResponseResultArray = responseObj.getJSONArray("results")> 
46<div id="footer-bottom"> 
47 <#if getResponseResultArray.length() gt 0> 
48 <#assign siteUrl = getResponseResultArray.get(0).siteUrl> 
49  
50 <#if getResponseResultArray.get(0).getJSONArray("GroupHeading")?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length()?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length() gt 1> 
51  
52 <#assign groupHeadingArr = getResponseResultArray.get(0).getJSONArray("GroupHeading")> 
53 	<div class="row single-col gpHeading"> 
54	 <div class="col col-12">   
55		 <nav> 
56			<ul> 
57			<#list 0 ..< groupHeadingArr.length()?number as i> 
58			    <#if groupHeadingArr.get(i).Link?starts_with("/")> 
59			     <#assign linkUrl = siteUrl + groupHeadingArr.get(i).Link> 
60					<li> 
61						<a href="${linkUrl}" target="">${groupHeadingArr.get(i).GroupHeading}</a> 
62					</li> 
63				<#else> 
64				    <li> 
65						<a href="${groupHeadingArr.get(i).Link}" target="">${groupHeadingArr.get(i).GroupHeading}</a> 
66					</li> 
67				</#if> 
68			</#list> 
69			</ul> 
70		  </nav> 
71		 </div> 
72	  </div> 
73	 <#elseif getResponseResultArray.get(0).getJSONArray("FooterLink")??> 
74	 <#assign FooterLinkArr = getResponseResultArray.get(0).getJSONArray("FooterLink")> 
75	 <div class="row single-col"> 
76		<div class="col col-12">   
77		 <nav> 
78			<ul> 
79			<#list 0 ..< FooterLinkArr.length()?number as i> 
80			     <#assign linkUrl = FooterLinkArr.get(i).FooterLink?replace("href=\"/", "href=\""+siteUrl+"/" ) > 
81					<li> 
82						${linkUrl} 
83					</li> 
84			</#list> 
85			</ul> 
86		  </nav> 
87		 </div> 
88	  </div> 
89	  
90	 </#if> 
91		<div class="row single-col"> 
92			<div class="col col-12"> 
93	    	<p class="last">${getResponseResultArray.get(0).CopyrightHTML}</p> 
94			</div> 
95		</div> 
96	</#if> 
97</div> 
98</#if> 
99<#recover> 
100 
101</#attempt> 
102 
103					<div id="copyright-text"> 
104						 <#if CopyrightText?? && CopyrightText.getData()?? && CopyrightText.getData() != ""> 
105				${CopyrightText.getData()} 
106				</#if> 
107					</div> 
108	</div> 
109</div> 
110<script> 
111$(document).ready(function(){ 
112    if((Liferay.ThemeDisplay.getLanguageId() != "en_GB") && (location.href.indexOf("/web/") != -1)) { 
113	console.log("link update required on the site"); 
114	$('a').each(function(index) { 
115		var layoutRelativeUrl = Liferay.ThemeDisplay.getLayoutRelativeURL(); 
116        var getSiteUrl = layoutRelativeUrl.substring(0, layoutRelativeUrl.lastIndexOf("/")); 
117		var linkVal = $(this).attr("href"); 
118		if((typeof linkVal !== "undefined") && linkVal.indexOf("https") == -1 && linkVal.indexOf("/")!= -1 && (linkVal.indexOf("/") === linkVal.lastIndexOf("/"))){ 
119		var updatedLink = getSiteUrl + linkVal ; 
120		$(this).attr("href", updatedLink) 
121		console.log("link updated - " + updatedLink); 
122
123	}); 
124
125}); 
126</script>