Attract and retain essential expertise
Do you have the strategies in place to engage the skills you need and ensure they have a reason to stay?
ALERT: We have been made aware of instances where individuals/businesses are misrepresenting themselves as being associated with Hays Canada. Please note that we do not post job advertisements in local marketplace groups on Facebook, we do not contact applicants or conduct interviews via WhatsApp/SMS currently, and we will never ask for credit card or banking information for equipment purchase, nor do we charge fees to jobseekers.
If you are unsure an advertisement or contact is legitimate, please check the job postings on our site and local office contact information.
The following has evaluated to null or missing: ==> HeaderGlobalLabel [in template "20115#20151#T-HAYS-MEGA-MENU-WEB2" at line 53, column 14] ---- 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: #if HeaderGlobalLabel.getSiblings()?h... [in template "20115#20151#T-HAYS-MEGA-MENU-WEB2" at line 53, column 9] ----
1<#assign parentNodeId = "">
2<#assign siteSearchURL = "">
3<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")>
4<#assign haysLogo = "">
5<#assign pageNodeId = "">
6<#assign searchKey = (request.getParameter("searchParameters")??)?then(request.getParameter("searchParameters"), "") />
7<#if propsUtil.get("HAYS_LOGO")??>
8<#assign haysLogo = propsUtil.get("HAYS_LOGO")>
9</#if>
10<#if locale == "fr_CA" && propsUtil.get("HAYS_LOGO_FR")??>
11 <#assign haysLogo = propsUtil.get("HAYS_LOGO_FR")>
12</#if>
13<#assign siteGroupId = themeDisplay.getSiteGroupId()>
14<#assign siteSearchURL = "">
15<#assign searchLayouts = layoutLocalService.getLayouts(siteGroupId, false)>
16<#list searchLayouts as searchLayout>
17 <#if searchLayout.getExpandoBridge().getAttribute("NodeId") == "site-search" >
18 <#assign siteSearchURL = searchLayout.getGroup().getDisplayURL(themeDisplay) + searchLayout.getFriendlyURL(locale)>
19 <#break>
20 </#if>
21</#list>
22<#assign siteSearchURL = (siteSearchURL == "")?then(themeDisplay.getScopeGroup().getDisplayURL(themeDisplay) + "/site-search", siteSearchURL) />
23<#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] />
24<#assign countryCode = portalUtil.getSiteDefaultLocale(siteGroupId).getCountry() />
25<#assign countryCode = (countryCode == "GB")?then("UK", countryCode) />
26
27<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
28<#assign haysCountrySelectorArticleId = propsUtil.get("HAYS_COUNTRY_SELECTOR_ARTICLE_ID")!"47286981" />
29<#assign article = journalArticleLocalService.getLatestArticle(themeDisplay.getCompanyGroupId(), haysCountrySelectorArticleId) />
30<#assign document = saxReaderUtil.read(article.getContent()) >
31<#assign content = journalArticleLocalService.getArticleContent(article.getGroupId(),article.getArticleId(),article.getVersion(),null,article.getDDMTemplateKey(),themeDisplay.getLanguageId(),null,themeDisplay)/>
32
33<#assign minCharDiv = languageUtil.format(locale, "lr_SearchTextMinchar", "__")?replace('__', 3) />
34
35 <#if layout??>
36 <#assign parentPlId = layout.getParentPlid() />
37 <#assign pageNodeId = layout.getExpandoBridge().getAttribute("NodeId") />
38 <#assign currentUrl = layout.getFriendlyURL() />
39 <#assign haysAuthHost = propsUtil.get(locale+".Expert.SIGNIN")!"https://auth.hays.team">
40 <#assign haysWeb2Host = propsUtil.get(locale+".Expert.WEB2_Mobile_Hostname")!"www.hays.co.uk">
41 <#assign haysMyHaysProfileURL = haysWeb2Host+propsUtil.get(locale+".Expert.WEB2_Profile_URL")!"/my-account/profile">
42 <#assign haysMyHaysSpecCVURL = haysWeb2Host+propsUtil.get(locale+".Expert.WEB2_SendCV_URL")!"/account/send-cv">
43 <#assign haysMyHaysLoginURL = haysWeb2Host+propsUtil.get(locale+".Expert.WEB2_Login_URL")!"/account/login">
44 <#assign haysMyHaysLogoutURL = haysWeb2Host+propsUtil.get(locale+".Expert.WEB2_Logout_URL")!"/portal/auth?application=jobportal&client=hays&entityType=candidate&domain=gb&locale=en&hostname=web&action=logout&workFlow=">
45 <#assign haysMyHaysRegisterURL = haysWeb2Host+propsUtil.get(locale+".Expert.WEB2_Register_URL")!"/account/register">
46 <#assign friendlyURL = themeDisplay.getSiteGroup().getDisplayURL(themeDisplay) />
47 </#if>
48
49<navigation>
50 <nav class="d-none d-lg-block container-fluid bg-primary p-0">
51 <div class="container-page p-0">
52 <ul class="d-flex justify-content-end list-unstyled m-0">
53 <#if HeaderGlobalLabel.getSiblings()?has_content>
54 <#list HeaderGlobalLabel.getSiblings() as cur_HeaderGlobalLabel>
55 <#assign headerGlobalLinks = cur_HeaderGlobalLabel.HeaderGlobalLinks.getData() >
56 <#if headerGlobalLinks?index_of("/") == 0>
57 <#assign headerGlobalLinks = friendlyURL + headerGlobalLinks >
58 </#if>
59 <li>
60 <a class="d-block text-white text-center px-4 py-2 fs-300 fs-lg-400" href="${headerGlobalLinks}">${cur_HeaderGlobalLabel.getData()}</a>
61 </li>
62 </#list>
63 </#if>
64
65
66
67 <li class="d-flex">
68 <button class="nav-dropdown-button nav-dropdown-button--country d-flex align-items-center justify-items-center fs-400" type="button" data-js="nav-dropdown-country-toggle">${countryCode}</button>
69
70
71
72 </li>
73 <li class="d-flex">
74 <#assign languageEntryMap = {"portletSetupPortletDecoratorId": "barebone", "displayStyle" : "ddmTemplate_43966961","displayStyleGroupId": themeDisplay.getCompanyGroupId()}/>
75 <#assign languageEntry = freeMarkerPortletPreferences.getPreferences(languageEntryMap) />
76 <@liferay_portlet["runtime"]
77 defaultPreferences=languageEntry
78 portletProviderAction=portletProviderAction.VIEW
79 instanceId="header_lang"
80 portletProviderClassName="com.liferay.portal.kernel.servlet.taglib.ui.LanguageEntry" />
81 </li>
82
83
84
85 <!--SiteSearch-->
86 <li class="mr-lg-6">
87 <#if pageNodeId == "site-search">
88 <button disabled
89 <#else>
90 <button
91 </#if>
92 data-js="open-search"
93 class="nav-dropdown-search-open h-100 d-flex justify-items-center align-items-center reset-button text-white text-center px-4 py-2 fs-100 fs-lg-200">
94 <img src="/o/hays-web-branding-theme/images/svg/search/search-white.svg" class="nav-dropdown-search-icon-light w-16px h-16px" alt="Search">
95 <img src="/o/hays-web-branding-theme/images/svg/search/search.svg" class="nav-dropdown-search-icon-dark w-16px h-16px" alt="Search">
96 </button>
97 </li>
98 <!--SiteSearch-->
99
100 <#if SelectVisitor.getSiblings()?has_content>
101 <#assign css = "">
102 <#list SelectVisitor.getSiblings() as cur_SelectVisitor>
103 <#assign eventUrl ="">
104 <#assign currentFriendly ="">
105 <li>
106 <#assign visitorTypeLink ="${cur_SelectVisitor.VisitorTypeLink.getData()}">
107 <#assign eventUrl = friendlyURL+ visitorTypeLink>
108 <a class="font-weight-bold d-block text-center px-4 py-2 fs-300 fs-lg-400 text-decoration-none ${cur_SelectVisitor.getData()}-header" data-senna-off="true" href="${eventUrl}" >
109 ${cur_SelectVisitor.VisitorTypeLabel.getData()}
110 </a>
111 </li>
112 </#list>
113 </#if>
114 </ul>
115 </div>
116 </nav>
117 <div class="d-xs-none d-md-block d-lg-block"><#if content??>${content}</#if></div>
118
119
120
121 <!--SiteSearchArea-->
122 <div class="bg-neutral p-0 d-none" data-js="search">
123 <div class="container-page position-relative">
124 <button
125 data-js="close-search"
126 class="reset-button
127 position-absolute top-0 right-0 mr-6 mt-6
128 h-30px w-30px
129 rounded-circle border u-border-2 border-teal-dark
130 d-none d-lg-flex align-items-center justify-content-center
131 ">
132 <span class="cross cross--teal-dark"></span>
133 </button>
134 <form id="site_search" class="container-search d-flex px-5 px-lg-6 py-6 py-lg-6">
135 <input type="search" id="site_searchQueryText" name="site_searchQueryText"
136 class="form-text-field border-brand-blue w-100 pr-14"
137 placeholder="${languageUtil.get(locale, "SearchPlaceholderText")}" value="${searchKey}">
138 <label for="QueryText" generated="true" class="position-absolute mt-12 text-danger" style="display:none;" id ="siteSearchErrorLabel">${languageUtil.get(locale, "lr_Jsmandatory_msg_input")}</label>
139 <label for="QueryText" generated="true" class="position-absolute mt-12 text-danger" style="display:none;" id ="minCharErrorLabel">${minCharDiv}</label>
140 <button type="button" class="button button--no-style-teal-dark position-relative" id="analytic_site_srch_btn" onclick="searchkeywords('site_search')">
141 <svg class="feather-icon mr-3 mr-lg-5 position-absolute right-0">
142 <line x1="5" y1="12" x2="19" y2="12"></line>
143 <polyline points="12 5 19 12 12 19"></polyline>
144 </svg>
145 </button>
146 </form>
147 </div>
148</div>
149 <!--SiteSearchArea-->
150
151 <nav
152 class="nav-dropdown border border-grey-200 border-top-0 border-right-0 border-left-0">
153 <div class="container-page d-flex justify-content-between align-items-center">
154 <button
155 class="nav-dropdown-hamburger block d-lg-none"
156 data-js="nav-toggle"
157 >
158 <span></span>
159 <span></span>
160 <span></span>
161 </button>
162 <form
163 id="search"
164 class="nav-dropdown-search-field"
165 data-js="search-field"
166 name="search"
167 >
168 <input type="search" />
169 </form>
170 <#if parentPlId gt 0>
171 <#assign parentLayout = layoutLocalService.getLayout(parentPlId) />
172 <#assign parentNodeId = parentLayout.getExpandoBridge().getAttribute("NodeId") />
173 </#if>
174
175 <#if pageNodeId == "ITALY-HAYS-ADMIN-ARROW-LOGO" || parentNodeId == "ITALY-HAYS-ADMIN-ARROW-LOGO">
176 <a class="d-block p-2 p-lg-4" href="/">
177 <img src="/o/hays-web-branding-theme/images/italy-logo/ITALY-HAYS-ADMIN-ARROW-LOGO-STRAPLINE-COL-RGB.png" alt="Hays"/>
178 </a>
179 <#else>
180 <a class="logo d-block p-2 p-lg-4" href="/">
181 <img src="${haysLogo}" alt="Hays" />
182 </a>
183 </#if>
184 <#if pageNodeId == "site-search">
185 <button disabled
186 <#else>
187 <button
188 </#if>
189 class="nav-dropdown-search-button block d-lg-none h-24px hide"
190 data-js="open-search-mobile">
191 <svg class="feather-icon mr-3 mr-lg-5 text-primary">
192 <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
193 <circle cx="12" cy="7" r="4"></circle>
194 </svg>
195 </button>
196 <#--Mobile Site search-->
197 <div class="nav-dropdown-search-button block d-lg-none h-24px myAccMenu">
198 <svg class="feather-icon mr-3 mr-lg-5 text-primary">
199 <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path>
200 <circle cx="12" cy="7" r="4"></circle>
201 </svg>
202
203 <div class="my-account-menu">
204 <ul class="nav-dropdown-menu-list mb-0">
205
206 <li class="my-hays-login-box nav-dropdown-menu-item hays-login-show-mobile">
207 <a class="nav-dropdown-menu-item-link mb-5 hays-decorate" href="${haysMyHaysLoginURL}" data-senna-off="true">${languageUtil.get(locale, "lr_log_into_my_hays")}</a>
208 </li>
209
210 <li class="d-none my-hays-login-mobile nav-dropdown-menu-item hays-login-show-mobile">
211 <a class="my-hays-user-name nav-dropdown-menu-item-link mb-5" data-senna-off="true"> </a>
212 </li>
213
214
215 <#if SelectVisitor.getSiblings()?has_content>
216 <#list SelectVisitor.getSiblings() as cur_SelectVisitor>
217 <#if cur_SelectVisitor.SubHeaderLabel.getSiblings()?has_content>
218 <#list cur_SelectVisitor.SubHeaderLabel.getSiblings() as cur_SubHeaderLabel>
219 <#if cur_SubHeaderLabel.ShowHaysAccountSelect.getData()=="true">
220
221
222
223 <#if cur_SubHeaderLabel.ChildLevel1Label.getData()?has_content>
224 <#list cur_SubHeaderLabel.ChildLevel1Label.getSiblings() as cur_ChildLevel1Label>
225 <#if cur_ChildLevel1Label.getData()!="">
226
227 <#assign childLevel1Link = cur_ChildLevel1Label.ChildLevel1Link.getData() >
228 <#if childLevel1Link?index_of("/") == 0>
229 <#assign childLevel1Link = friendlyURL + childLevel1Link >
230 </#if>
231
232 <li class="nav-dropdown-menu-item ${cur_SelectVisitor.getData()}-cacheable-fix-li-level">
233 <a class="nav-dropdown-menu-item-link mb-5 no-link" data-senna-off="true" href="${childLevel1Link}">${cur_ChildLevel1Label.getData()}</a>
234 <#if cur_ChildLevel1Label.ChildLevel2Label.getSiblings()?has_content>
235
236 <#assign ChildLevel2LabelVal="">
237 <#assign ChildLevel2Counter=0>
238
239 <#list cur_ChildLevel1Label.ChildLevel2Label.getSiblings() as cur_ChildLevel2Label>
240 <#if cur_ChildLevel2Label.getData()!="">
241 <#assign ChildLevel2Label = cur_ChildLevel2Label.getData()>
242 <#assign ChildLevel2LabelVal=ChildLevel2Label>
243 <#assign ChildLevel2Counter++>
244 <#if (ChildLevel2Counter > 4)>
245 <#continue>
246 </#if>
247
248
249 <#assign childLevel2Link = cur_ChildLevel2Label.ChildLevel2Link.getData() >
250 <#if childLevel2Link?index_of("/") == 0>
251 <#assign childLevel2Link = friendlyURL + childLevel2Link >
252 </#if>
253
254
255 <ul class="nav-dropdown-menu-list-secondary">
256 <li class="mb-4">
257 <a class="nav-dropdown-menu-item-secondary" href="${childLevel2Link}" data-senna-off="true">${cur_ChildLevel2Label.getData()}</a>
258 </li>
259 </ul>
260
261 </li>
262 <#elseif cur_ChildLevel2Label.getData()=="">
263 <#assign ChildLevel2LabelVal="">
264 </#if>
265 </#list>
266 <#assign viewAllLabelValue=languageUtil.get(locale, "lr_ViewMore")!"View all" />
267 <#if (ChildLevel2Counter > 4)>
268 <li class="mb-4">
269 <a class="nav-dropdown-menu-item-secondary font-weight-semibold text-brand-teal" href="${cur_ChildLevel1Label.viewAllLink.getData()}">
270 ${viewAllLabelValue}
271 </a>
272 </li>
273 </#if>
274 </#if>
275 </li>
276 </#if>
277 </#list>
278 </#if>
279 </#if>
280 </#list>
281 </#if>
282
283 </#list>
284 </#if>
285
286 <li class="d-none my-hays-user-details nav-dropdown-menu-item hays-login-show-mobile">
287 <a class="nav-dropdown-menu-item-link mb-5" data-senna-off="true" href=${haysMyHaysProfileURL}>${languageUtil.get(locale, "lr_view_account")} </a>
288 </li>
289
290 <li class="d-none my-hays-user-details nav-dropdown-menu-item hays-login-show-mobile">
291 <a class="nav-dropdown-menu-item-link mb-5 hays-decorate" href="${haysMyHaysLogoutURL}" data-senna-off="true" >${languageUtil.get(locale, "lr_log_out")} </a>
292 </li>
293 </ul>
294 </div>
295
296
297 </div>
298 <#--Mobile Site search-->
299
300<#if SelectVisitor.getSiblings()?has_content>
301 <#list SelectVisitor.getSiblings() as cur_SelectVisitor>
302 <#if cur_SelectVisitor.SubHeaderLabel.getSiblings()?has_content>
303 <div class="nav-dropdown-list-wrap ${cur_SelectVisitor.getData()}-cacheable-nav" data-js="menu">
304 <ul class="nav-dropdown-list list-unstyled mb-0">
305 <#list cur_SelectVisitor.SubHeaderLabel.getSiblings() as cur_SubHeaderLabel>
306 <#assign onlink1 = "no-link">
307 <#assign iconlink = "">
308 <#assign myHays = "">
309 <#if cur_SubHeaderLabel.ShowHaysAccountSelect.getData()=="true">
310 <#assign myHays = "my-hays">
311 </#if>
312 <li class="nav-dropdown-trigger ${myHays}">
313 <#if cur_SubHeaderLabel.SubHeaderLink.getData()?has_content>
314 <#assign onlink1 = "">
315 </#if>
316 <#assign subHeaderLink = cur_SubHeaderLabel.SubHeaderLink.getData() >
317 <#if subHeaderLink?index_of("/") == 0>
318 <#assign subHeaderLink = friendlyURL + subHeaderLink >
319 </#if>
320 <#if cur_SubHeaderLabel.ChildLevel1Label.getData()?has_content>
321 <#if cur_SubHeaderLabel.ShowHaysAccountSelect.getData()=="true">
322 <#assign iconlink = "menu-user-icon">
323 </#if>
324 <a class="nav-dropdown-trigger-link ${onlink1} ${iconlink}" data-js="menu-dropdown-trigger">
325 <#else>
326 <a class="nav-dropdown-trigger-link ${onlink1}" data-senna-off="true" href="${subHeaderLink}">
327 </#if>
328
329 <span class="fs-600">${cur_SubHeaderLabel.getData()}</span>
330 </a>
331 <#assign width = "">
332 <#if cur_SubHeaderLabel.ChildLevel1Label.getSiblings()?has_content>
333 <div class="nav-dropdown-menu" data-js="menu-dropdown">
334 <#if cur_SubHeaderLabel.IntroImage.getData()?has_content || cur_SubHeaderLabel.ShowHaysAccountSelect.getData()=="true">
335 <#assign width = "nav-dropdown-menu-inner--with-aside">
336
337 </#if>
338
339
340 <div class=" nav-dropdown-menu-inner ${width}">
341 <ul class="nav-dropdown-menu-list">
342 <!--- Changes for 37756 --->
343 <#if cur_SubHeaderLabel.ShowHaysAccountSelect.getData()=="true">
344 <li class="my-hays-login-box nav-dropdown-menu-item hays-login-show-mobile">
345 <a class="nav-dropdown-menu-item-link mb-5" data-senna-off="true" href="${haysMyHaysLoginURL}">${languageUtil.get(locale, "lr_log_into_my_hays")}</a>
346 </li>
347 <li class="d-none my-hays-user-details nav-dropdown-menu-item hays-login-show-mobile">
348 <span class="my-hays-user-name nav-dropdown-menu-item-link mb-5 text-black font-weight-bold">${languageUtil.get(locale, "full-name")}</span>
349 </li>
350 </#if>
351 <#list cur_SubHeaderLabel.ChildLevel1Label.getSiblings() as cur_ChildLevel1Label>
352 <#assign onlink2 = "no-link">
353
354 <#if cur_ChildLevel1Label.getData()!="">
355 <li class="nav-dropdown-menu-item">
356 <#if cur_ChildLevel1Label.ChildLevel1Link.getData()?has_content>
357 <#assign onlink2 = "">
358 </#if>
359 <#assign childLevel1Link = cur_ChildLevel1Label.ChildLevel1Link.getData() >
360 <#if childLevel1Link?index_of("/") == 0>
361 <#assign childLevel1Link = friendlyURL + childLevel1Link >
362 </#if>
363
364 <a class="nav-dropdown-menu-item-link mb-5 ${onlink2}" data-senna-off="true" href="${childLevel1Link}">${cur_ChildLevel1Label.getData()}</a>
365
366 <#if cur_ChildLevel1Label.ChildLevel2Label.getSiblings()?has_content>
367 <ul class="nav-dropdown-menu-list-secondary">
368 <#assign ChildLevel2LabelVal="">
369 <#assign ChildLevel2Counter=0>
370
371 <#list cur_ChildLevel1Label.ChildLevel2Label.getSiblings() as cur_ChildLevel2Label>
372 <#if cur_ChildLevel2Label.getData()!="">
373 <#assign ChildLevel2Label = cur_ChildLevel2Label.getData()>
374 <#assign ChildLevel2LabelVal=ChildLevel2Label>
375 <#assign onlink3 = "no-link">
376 <#assign ChildLevel2Counter++>
377 <#if (ChildLevel2Counter > 4)>
378 <#continue>
379 </#if>
380
381 <li class="mb-4">
382 <#if cur_ChildLevel2Label.ChildLevel2Link.getData()?has_content>
383 <#assign onlink3 = "">
384 </#if>
385 <#assign childLevel2Link = cur_ChildLevel2Label.ChildLevel2Link.getData() >
386 <#if childLevel2Link?index_of("/") == 0>
387 <#assign childLevel2Link = friendlyURL + childLevel2Link >
388 </#if>
389 <a class="nav-dropdown-menu-item-secondary ${onlink3}" href="${childLevel2Link}">${cur_ChildLevel2Label.getData()}</a>
390
391 </li>
392 <#elseif cur_ChildLevel2Label.getData()=="">
393 <#assign ChildLevel2LabelVal="">
394 </#if>
395 </#list>
396 <#assign viewAllLabelValue=languageUtil.get(locale, "lr_ViewMore")!"View all" />
397 <#if (cur_ChildLevel1Label.viewAllLabel.getData())?? && ""!=cur_ChildLevel1Label.viewAllLabel.getData() >
398 <#assign viewAllLabelValue=cur_ChildLevel1Label.viewAllLabel.getData() />
399 </#if>
400 <#if ChildLevel2LabelVal?has_content && (cur_ChildLevel1Label.viewAllLink.getData())?? && ""!=cur_ChildLevel1Label.viewAllLink.getData() >
401 <#if (ChildLevel2Counter > 4)>
402 <li class="mb-4">
403 <a class="nav-dropdown-menu-item-secondary font-weight-semibold text-brand-teal" href="${cur_ChildLevel1Label.viewAllLink.getData()}">
404 ${viewAllLabelValue}
405 </a>
406 </li>
407 </#if>
408 </#if>
409 </ul>
410 </#if>
411 </li>
412 </#if>
413 </#list>
414 <!--- Changes for 37756 --->
415 <#if cur_SubHeaderLabel.ShowHaysAccountSelect.getData()=="true">
416 <li class="d-none my-hays-user-details nav-dropdown-menu-item hays-login-show-mobile">
417 <a class="nav-dropdown-menu-item-link mb-5" data-senna-off="true" href="${haysMyHaysProfileURL}">${languageUtil.get(locale, "lr_view_account")}</a>
418 </li>
419 <li class="d-none my-hays-user-details nav-dropdown-menu-item hays-login-show-mobile">
420 <a class="nav-dropdown-menu-item-link mb-5" data-senna-off="true" href="${haysMyHaysLogoutURL}">${languageUtil.get(locale, "lr_log_out")} </a>
421 </li>
422 </#if>
423 <!--- Todo for 143436 --->
424 <#if cur_SubHeaderLabel.CTALabel.getData()?has_content && cur_SubHeaderLabel.CTALink.getData()?has_content>
425 <#assign CTALink = cur_SubHeaderLabel.CTALink.getData() >
426 <#if CTALink?index_of("/") == 0>
427 <#assign CTALink = friendlyURL + CTALink >
428 </#if>
429 <li class="nav-dropdown-menu-item hays-login-show-mobile">
430 <a class="nav-dropdown-menu-item-link mb-5" href="${CTALink} " >
431 ${cur_SubHeaderLabel.CTALabel.getData()}<span class="triangle-5 bg-white"></span>
432 </a>
433 </li>
434 </#if>
435 </ul>
436
437 <#if cur_SubHeaderLabel.IntroImage.getData()?has_content>
438 <aside class="nav-dropdown-menu-aside">
439
440
441 <img
442 class="mb-5"
443 src="${cur_SubHeaderLabel.IntroImage.getData()}"
444 alt=""
445 />
446 </#if>
447
448 <!--Content-->
449 <#if cur_SubHeaderLabel.IntroText.getData()?has_content>
450 <p class="text-primary text-left">
451 ${cur_SubHeaderLabel.IntroText.getData()}
452 </p>
453 </#if>
454 <!--Content-->
455
456
457 <#if cur_SubHeaderLabel.CTALabel.getData()?has_content>
458 <#assign CTALink = cur_SubHeaderLabel.CTALink.getData() >
459 <#if CTALink?index_of("/") == 0>
460 <#assign CTALink = friendlyURL + CTALink >
461 </#if>
462 <a href="${CTALink} " class="button button--small button--arrow button--blue">
463 ${cur_SubHeaderLabel.CTALabel.getData()}
464 <span class="triangle-5 bg-white"></span>
465 </a>
466
467
468 </aside>
469 </#if>
470 <!-- 32636 My Hays Login button Start -->
471 <#if cur_SubHeaderLabel.ShowHaysAccountSelect.getData()=="true">
472 <aside class="nav-dropdown-menu-aside">
473 <div id="loginBoxId" class="my-hays-login-box bg-primary text-white px-5 py-5 rounded rounded-lg text-left">
474 <div class="rte-section pb-3 text-left">
475 <h4 class="fs-400 fs-lg-400 text-white font-weight-bold">${languageUtil.get(locale, "lr_log_in_account_title")}</h4>
476 </div>
477 <div class="text-left">
478 <a class="button button--medium button--white mb-2 px-7 w-100" data-senna-off="true" href=${haysMyHaysRegisterURL}>
479 ${languageUtil.get(locale, "lr_create_a_my_hays_account")}
480 </a>
481 </div>
482 <div>
483 <a class="button button--medium button--no-style-white button--no-style-white-border-white px-7 w-100 hays-decorate"
484 href="${haysMyHaysLoginURL}" data-senna-off="true" >
485 ${languageUtil.get(locale, "lr_log_into_my_hays")}
486 </a>
487 </div>
488
489 </div>
490 <div id="userDetailsId" class="d-none my-hays-user-details bg-primary text-white px-5 py-5 rounded rounded-lg text-left">
491 <div class="rte-section pb-3 text-left">
492 <h4 class="fs-400 fs-lg-400 text-white font-weight-bold">${languageUtil.get(locale, "lr_you_are_logged_in")}</h4>
493 </div>
494 <div class="rte text-left mb-5">
495 <p id="userFullNameId" class="my-hays-user-name fs-400 text-white font-weight-bold mb-0">${languageUtil.get(locale, "full-name")}</p>
496 </div>
497
498 <div class="rte d-flex justify-content-between">
499 <a class="text-white text-deco-line fs-300" data-senna-off="true" href=${haysMyHaysProfileURL}>${languageUtil.get(locale, "lr_view_account")}</a>
500 <a class="text-white text-deco-line fs-300 hays-decorate" href="${haysMyHaysLogoutURL}" data-senna-off="true" >
501 ${languageUtil.get(locale, "lr_log_out")}
502 </a>
503
504 </div>
505 </div>
506 </aside>
507 </#if>
508 <!-- 32636 My Hays Login button End -->
509
510 </div>
511
512 </div>
513 </#if>
514 </li>
515 </#list>
516 </ul>
517 <ul class="bg-primary list-unstyled m-0 d-lg-none d-flex flex-column pt-9 pb-14">
518 <div class="d-flex mb-9 px-7">
519
520 <#if SelectVisitor.getSiblings()?has_content>
521 <#list SelectVisitor.getSiblings() as cur_SelectVisitor>
522
523 <li class="w-50">
524 <a class="d-block font-weight-bold text-center px-4 py-2 fs-300 fs-lg-400 bg-white text-primary text-decoration-none ${cur_SelectVisitor.getData()}-header"
525 href="${cur_SelectVisitor.VisitorTypeLink.getData()}">
526 ${cur_SelectVisitor.VisitorTypeLabel.getData()}
527 </a>
528 </li>
529
530 </#list>
531 </#if>
532 </div>
533 <#if HeaderGlobalLabel.getSiblings()?has_content>
534 <#list HeaderGlobalLabel.getSiblings() as cur_HeaderGlobalLabel>
535 <li class="px-7">
536 <a class="d-block text-white text-left mb-5 fs-400"
537 href="${cur_HeaderGlobalLabel.HeaderGlobalLinks.getData()}">${cur_HeaderGlobalLabel.getData()}</a>
538 </li>
539 </#list>
540 </#if>
541 <li class="px-7 mb-6">
542 <button class="nav-dropdown-button nav-dropdown-button--country d-flex align-items-center justify-items-center fs-400" type="button" data-js="nav-dropdown-country-toggle">${countryCode}</button>
543 </li>
544 <li><#if content??>${content}</#if></li>
545 <li class="px-7 mb-6">
546 <#assign languageEntryMap={"portletSetupPortletDecoratorId": "barebone" , "displayStyle" : "ddmTemplate_43966961"
547 ,"displayStyleGroupId": themeDisplay.getCompanyGroupId()} />
548 <#assign languageEntry=freeMarkerPortletPreferences.getPreferences(languageEntryMap) />
549 <@liferay_portlet["runtime"] defaultPreferences=languageEntry portletProviderAction=portletProviderAction.VIEW
550 instanceId="header_lang" portletProviderClassName="com.liferay.portal.kernel.servlet.taglib.ui.LanguageEntry" />
551 </li>
552 <li class="px-7">
553 <a class="d-block text-white text-left mb-5 fs-400" href="${siteSearchURL}" data-senna-off="true">${languageUtil.get(locale, "lr_SiteSearchLabel")}</a>
554 </li>
555 <li> </li>
556 </ul>
557 </div>
558 </#if>
559 </#list>
560 </#if>
561
562 </div>
563 </nav>
564 </navigation>
565<style>
566 .nav-dropdown-menu {
567 display: none;
568 }
569
570 .nav-dropdown-menu.open {
571 display: block;
572 }
573
574 .my-account-menu{
575 display:none
576 }
577</style>
578<script>
579//START SCRIPT FOR A70503
580$(document).ready(function() {
581 const elementsToDecorate = $(".hays-decorate");
582 const setHrefInterval = setInterval(function() {
583 const shouldDecorate = !elementsToDecorate.attr("href").includes("_ga");
584 if (shouldDecorate) {
585 elementsToDecorate.each(function() {
586 $(this).attr("href", decorateUrl($(this).attr("href")));
587 });
588 } else {
589 clearInterval(setHrefInterval);
590 }
591 }, 500);
592});
593
594function decorateUrl(urlString) {
595 var ga = window[window['GoogleAnalyticsObject']];
596 if (ga && typeof ga.getAll === 'function') {
597 var tracker = ga.getAll()[0]; // Uses the first tracker created on the page
598 urlString = (new window.gaplugins.Linker(tracker)).decorate(urlString);
599 }
600 return urlString;
601}
602//END SCRIPT
603
604$("#analytic_site_srch_btn").click(()=>
605{
606console.log("Mega");
607})
608
609function searchkeywords(formName){
610var queryText=$("#"+formName+"QueryText").val();
611var currentUrl = "${siteSearchURL}";
612 if(queryText==""||queryText==null){
613 document.getElementById("minCharErrorLabel").style.display = "none";
614 document.getElementById("siteSearchErrorLabel").style.display = "block";
615 }else{
616 document.getElementById("siteSearchErrorLabel").style.display = "none";
617 if(queryText.length >= 3){
618 var searchUrl = new URL(currentUrl);
619 searchUrl.searchParams.set('searchParameters', queryText);
620 window.location.href = searchUrl.toString();
621
622 }else{
623 document.getElementById("minCharErrorLabel").style.display = "block";
624 }
625 }
626}
627
628
629
630
631
632<!-- 32636 My Hays Login button Start -->
633 function getCookie(c_name) {
634 var i,x,y,ARRcookies=document.cookie.split(";");
635 //console.log("ARRcookies:: "+ARRcookies);
636 for (i=0;i<ARRcookies.length;i++) {
637 x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
638 y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
639 x=x.replace(/^\s+|\s+$/g,"");
640 //console.log("x:: "+x);
641 if (x==c_name) {
642 return decodeURIComponent(y);
643 }
644 }
645 }
646
647 var username=getCookie("usrname");
648 //username = "Hays PLC";
649 console.log(" Cookie Username: " + username);
650 if (null != username && "" != username && typeof username != "undefined") {
651 console.log(" Inside IF Cookie Username: " + username);
652 /*$("#loginBoxId").addClass("d-none");
653 $("#userDetailsId").removeClass("d-none");
654 $("#userFullNameId").html(username);*/
655
656 $(".my-hays-login-box").addClass("d-none");
657 $(".my-hays-user-details").removeClass("d-none");
658 $(".my-hays-login-mobile").removeClass("d-none");
659 $(".my-hays-user-name").html(username);
660 }
661<!-- 32636 My Hays Login button End -->
662</script>
663
664<script data-senna-off="true">
665
666var hideHeaderType = 'business';
667if(hideHeaderType === headerType){
668 hideHeaderType = 'jobseeker'
669}
670console.log("hideHeaderType - " + hideHeaderType);
671
672$("[class*='"+hideHeaderType+"-cacheable-']").each(function(){$(this).remove()})
673$("."+hideHeaderType+"-header").removeClass('text-primary').removeClass('bg-white').addClass('text-white bg-teal-dark');
674$("."+headerType+"-header").removeClass('text-white').removeClass('bg-teal-dark').addClass('text-primary bg-white');
675</script>
676
677<script>
678
679const menuButtons = document.querySelectorAll('.nav-dropdown-trigger-link');
680const menus = document.querySelectorAll('.nav-dropdown-menu');
681
682
683
684menuButtons.forEach((button, index) => {
685 button.addEventListener('click', () => {
686 const isOpen = menus[index].classList.toggle('open');
687
688 menus.forEach((menu, i) => {
689 if (i !== index && isOpen) {
690 menu.classList.remove('open');
691 }
692 });
693 });
694});
695
696
697document.addEventListener('click', (event) => {
698 const target = event.target;
699
700 if (!target.matches('.nav-dropdown-trigger-link') && !target.matches('.nav-dropdown-menu')) {
701 menus.forEach(menu => {
702 menu.classList.remove('open');
703 });
704 }
705});
706
707
708$('.myAccMenu').click(function() {
709 $('.my-account-menu').toggleClass('d-flex')
710})
711</script>
The following has evaluated to null or missing: ==> Label [in template "20115#20151#T-HAYS-HERO-AREA-BANNER-WEB2" at line 26, column 22] ---- 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: #if Label.getSiblings()?has_content [in template "20115#20151#T-HAYS-HERO-AREA-BANNER-WEB2" at line 26, column 17] ----
1<div class="hero hero-extended d-flex position-relative">
2 <div class="hero-inner">
3 <div class="hero-title">
4 <div class="hero-content h-100 d-none d-lg-flex flex-column justify-content-center align-items-start">
5
6
7 <!-- <#if (Title.getData())??>
8 <h1 class="text-uppercase fs-800 fs-lg-900 font-weight-light text-primary section-heading">
9 <span class="d-block d-sm-inline">${Title.getData()?keep_before_last(" ")}</span>
10 <strong class="d-block font-weight-bold">${Title.getData()?keep_after_last(" ")}</strong>
11 </h1>
12 </#if> -->
13 <#if (HeroAreaTitle.getData())??>
14 <h1 class="text-uppercase fs-800 fs-lg-900 font-weight-light text-primary section-heading">
15 <span class="d-block d-sm-inline">${HeroAreaTitle.getData()}</span>
16 </h1>
17 </#if>
18
19 <#if (Description.getData())??>
20 <p class="fs-400 mb-4 mb-lg-5 lh-title">
21 ${Description.getData()}
22 </p>
23 </#if>
24
25
26 <#if Label.getSiblings()?has_content>
27 <#list Label.getSiblings() as cur_Label>
28 <a href="${cur_Label.Link.getData()}" class="button button--blue button--large" data-senna-off="true">${cur_Label.getData()}</a>
29 </#list>
30 </#if>
31
32 </div>
33 </div>
34 </div>
35 <#if (Image.getData())?? && Image.getData() != "">
36 <picture class="position-absolute u-pin h-100 mw-100">
37 <source srcset="${Image.getData()}" media="(min-width: 576px)">
38 <img src="${Image.getData()}" alt="${Image.getAttribute("alt")}" data-fileentryid="${Image.getAttribute("fileEntryId")}" class="mw-100 h-100 u-object-cover u-object-right" />
39 </picture>
40 </#if>
41
42 <span class="hero-triangle-1 triangle triangle-40 triangle-lg-75 bg-brand-green position-absolute rotate-135" aria-hidden="true"></span>
43 <span class="hero-triangle-2 triangle triangle-40 triangle-lg-60 bg-primary position-absolute d-sm-block" aria-hidden="true"></span>
44 <span class="hero-triangle-3 triangle triangle-60 bg-brand-mid-blue position-absolute rotate-315" aria-hidden="true"></span>
45 <span class="hero-triangle-4 triangle triangle-40 triangle-lg-75 bg-white position-absolute rotate-225" aria-hidden="true"></span>
46 <span class="hero-triangle-5 triangle triangle-30 triangle-lg-50 bg-brand-green position-absolute" aria-hidden="true"></span>
47 <span class="hero-triangle-7 triangle triangle-30 triangle-lg-50 bg-brand-green position-absolute rotate-135" aria-hidden="true"></span>
48</div>
49<div class="hero-content-mobile h-100 d-flex d-lg-none flex-column justify-content-center align-items-start">
50 <!-- <#if (Title.getData())??>
51 <h2 class="text-uppercase fs-800 fs-lg-900 font-weight-light text-primary section-heading">
52 <span class="d-block d-sm-inline">${Title.getData()}</span>
53 <strong class="d-block font-weight-semibold">Industry</strong>
54 </h2>
55 </#if> -->
56 <#if (HeroAreaTitle.getData())??>
57 <h2 class="text-uppercase fs-800 fs-lg-900 font-weight-light text-primary section-heading">
58 <span class="d-block d-sm-inline">${HeroAreaTitle.getData()}</span>
59 </h2>
60 </#if>
61
62 <#if (Description.getData())??>
63 <p class="fs-400 mb-4 mb-lg-5 lh-title">
64 ${Description.getData()}
65 </p>
66 </#if>
67
68 <#if Label.getSiblings()?has_content>
69 <#list Label.getSiblings() as cur_Label>
70 <a href="${cur_Label.Link.getData()}" class="button button--blue button--large">${cur_Label.getData()}</a>
71 </#list>
72 </#if>
73</div>
To meet ever-changing, fast-paced customer demands, discover how your organization can reach the most sought-after skilled marketing candidates. Keep your organization at the forefront of the latest trends and technologies.
Marketing experts are the key to your brand reaching and resonating with your customers. As demand for marketing talent peaks, finding the marketing professionals needed to propel your organization is where we come in.
We maintain unmatched talent networks to attract professionals across a range of industries and verticals from financial services, marketing agencies, retail, charities, and public sectors.
Whether your goal is to rebrand with experienced marketing directors, get the most out of your CRM system, or decipher data more effectively, we have the talent networks, latest technology and wealth of expertise needed to achieve your ambitions.
For more about how we can help you, get in contact today and speak to your very own marketing consultant.
Need new recruits? Look no further
Whether you’re seeking temp support or full-time employees, we have candidates in our database that are sure to fit the bill.
Access our talent networksA SOLUTION FOR EVERY WORKFORCE CHALLENGE
People power progress. Let's source the skills you need to evolve.
Do you have the strategies in place to engage the skills you need and ensure they have a reason to stay?
Circumstances change, priorities shift. Meet every challenge with an agile solution.
Access the knowledge, expertise and innovation you need to shape a holistic workforce strategy.
Hays’s recruiting consultants understand our hiring needs. They consistently respond in a timely fashion with highly-qualified candidates that have become valued members of our team. We recommend Hays to prospective clients who want professional recruitment consultants and superior results.
-Patricia Allen-Evans, Human Resources Manager, Moriyama Teshima ArchitectsTALK TO HAYS FIND OUT HOW WE CAN HELP
Today's solutions lay the foundation for pursuing tomorrow's opportunities. Aided by technology and automation, we make managing complex talent needs simpler and easier.
Discover how
Whether you’re seeking short-notice temp support or longer-term employees, we have candidates in our databases that are sure to fit the bill.