Error executing template "Designs/Alkmaar Marketing/_parsed/PoiLocation.parsed.cshtml"
System.AggregateException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> System.InvalidOperationException: Exception of type 'System.InvalidOperationException' was thrown.
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.VerifyIntegrity()
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.TryGetValue(TKey key, TValue& value)
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.GetValue(TKey key, CreateValueCallback createValueCallback)
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.GetOrCreateValue(TKey key)
   at Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode.GetStructure(SyntaxTrivia trivia)
   at Microsoft.CodeAnalysis.SyntaxTrivia.GetStructure()
   at Microsoft.CodeAnalysis.SyntaxNode.d__171.MoveNext()
   at Microsoft.CodeAnalysis.SyntaxNodeOrToken.GetDirectives[TDirective](SyntaxNode node, Func`2 filter, List`1& directives)
   at Microsoft.CodeAnalysis.SyntaxNodeOrToken.GetDirectives[TDirective](SyntaxNodeOrToken& node, Func`2 filter, List`1& directives)
   at Microsoft.CodeAnalysis.CSharp.Syntax.NullableContextStateMap.GetContexts(SyntaxTree tree, Boolean isGeneratedCode)
   at Microsoft.CodeAnalysis.CSharp.Syntax.NullableContextStateMap.Create(SyntaxTree tree, Boolean isGeneratedCode)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree.EnsureNullableContextMapInitialized()
   at Microsoft.CodeAnalysis.CSharp.Binder.AreNullableAnnotationsEnabled(SyntaxTree syntaxTree, Int32 position)
   at Microsoft.CodeAnalysis.CSharp.Binder.AreNullableAnnotationsEnabled(SyntaxToken token)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(IdentifierNameSyntax node, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved, Boolean suppressUseSiteDiagnostics, NamespaceOrTypeSymbol qualifierOpt)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeOrAliasSymbol(ExpressionSyntax syntax, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved, Boolean suppressUseSiteDiagnostics)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeSymbol(ExpressionSyntax syntax, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved, Boolean suppressUseSiteDiagnostics)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeSymbol(ExpressionSyntax syntax, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved)
   at Microsoft.CodeAnalysis.CSharp.Imports.FromSyntax(CSharpSyntaxNode declarationSyntax, InContainerBinder binder, ConsList`1 basesBeingResolved, Boolean inUsing)
   at Microsoft.CodeAnalysis.CSharp.InContainerBinder.<>c__DisplayClass6_0.<.ctor>b__0(ConsList`1 basesBeingResolved)
   at Microsoft.CodeAnalysis.CSharp.InContainerBinder.GetImports(ConsList`1 basesBeingResolved)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetImports(SingleNamespaceDeclaration declaration)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbol.ForceCompleteMemberByLocation(SourceLocation locationOpt, Symbol member, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.<>c__DisplayClass49_1.b__0(Int32 i)
   at Roslyn.Utilities.UICultureUtilities.<>c__DisplayClass6_0`1.b__0(T param)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.b__1()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbol.ForceCompleteMemberByLocation(SourceLocation locationOpt, Symbol member, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.<>c__DisplayClass49_1.b__0(Int32 i)
   at Roslyn.Utilities.UICultureUtilities.<>c__DisplayClass6_0`1.b__0(T param)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.b__1()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceModuleSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetSourceDeclarationDiagnostics(SyntaxTree syntaxTree, Nullable`1 filterSpanWithinTree, Func`4 locationFilterOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetDiagnostics(CompilationStage stage, Boolean includeEarlierStages, DiagnosticBag diagnostics, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(CommonPEModuleBuilder moduleBuilder, Boolean emittingPdb, Boolean emitMetadataOnly, Boolean emitTestCoverageData, DiagnosticBag diagnostics, Predicate`1 filterOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream metadataPEStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, CompilationTestData testData, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, Stream metadataPEStream, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, CancellationToken cancellationToken)
   at RazorEngine.Roslyn.CSharp.RoslynCompilerServiceBase.CompileType(TypeContext context)
   at RazorEngine.Templating.RazorEngineCore.CreateTemplateType(ITemplateSource razorTemplate, Type modelType)
   at RazorEngine.Templating.RazorEngineCore.Compile(ITemplateKey key, Type modelType)
   at RazorEngine.Templating.RazorEngineService.CompileAndCacheInternal(ITemplateKey key, Type modelType)
   at RazorEngine.Templating.RazorEngineService.GetCompiledTemplate(ITemplateKey key, Type modelType, Boolean compileOnCacheMiss)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, ITemplateSource templateSource, String name, Type modelType, Object model, DynamicViewBag viewBag)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\Agent\_work\169\s\06 - Dynamicweb Host\Dynamicweb\Dynamicweb-9.9\Dynamicweb\Rendering\Template.cs:line 902
---> (Inner Exception #0) System.AggregateException: One or more errors occurred. ---> System.InvalidOperationException: Exception of type 'System.InvalidOperationException' was thrown.
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.VerifyIntegrity()
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.TryGetValue(TKey key, TValue& value)
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.GetValue(TKey key, CreateValueCallback createValueCallback)
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.GetOrCreateValue(TKey key)
   at Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode.GetStructure(SyntaxTrivia trivia)
   at Microsoft.CodeAnalysis.SyntaxTrivia.GetStructure()
   at Microsoft.CodeAnalysis.SyntaxNode.d__171.MoveNext()
   at Microsoft.CodeAnalysis.SyntaxNodeOrToken.GetDirectives[TDirective](SyntaxNode node, Func`2 filter, List`1& directives)
   at Microsoft.CodeAnalysis.SyntaxNodeOrToken.GetDirectives[TDirective](SyntaxNodeOrToken& node, Func`2 filter, List`1& directives)
   at Microsoft.CodeAnalysis.CSharp.Syntax.NullableContextStateMap.GetContexts(SyntaxTree tree, Boolean isGeneratedCode)
   at Microsoft.CodeAnalysis.CSharp.Syntax.NullableContextStateMap.Create(SyntaxTree tree, Boolean isGeneratedCode)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree.EnsureNullableContextMapInitialized()
   at Microsoft.CodeAnalysis.CSharp.Binder.AreNullableAnnotationsEnabled(SyntaxTree syntaxTree, Int32 position)
   at Microsoft.CodeAnalysis.CSharp.Binder.AreNullableAnnotationsEnabled(SyntaxToken token)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(IdentifierNameSyntax node, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved, Boolean suppressUseSiteDiagnostics, NamespaceOrTypeSymbol qualifierOpt)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeOrAliasSymbol(ExpressionSyntax syntax, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved, Boolean suppressUseSiteDiagnostics)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeSymbol(ExpressionSyntax syntax, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved, Boolean suppressUseSiteDiagnostics)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeSymbol(ExpressionSyntax syntax, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved)
   at Microsoft.CodeAnalysis.CSharp.Imports.FromSyntax(CSharpSyntaxNode declarationSyntax, InContainerBinder binder, ConsList`1 basesBeingResolved, Boolean inUsing)
   at Microsoft.CodeAnalysis.CSharp.InContainerBinder.<>c__DisplayClass6_0.<.ctor>b__0(ConsList`1 basesBeingResolved)
   at Microsoft.CodeAnalysis.CSharp.InContainerBinder.GetImports(ConsList`1 basesBeingResolved)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetImports(SingleNamespaceDeclaration declaration)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbol.ForceCompleteMemberByLocation(SourceLocation locationOpt, Symbol member, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.<>c__DisplayClass49_1.b__0(Int32 i)
   at Roslyn.Utilities.UICultureUtilities.<>c__DisplayClass6_0`1.b__0(T param)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.b__1()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbol.ForceCompleteMemberByLocation(SourceLocation locationOpt, Symbol member, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.<>c__DisplayClass49_1.b__0(Int32 i)
   at Roslyn.Utilities.UICultureUtilities.<>c__DisplayClass6_0`1.b__0(T param)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.b__1()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )
---> (Inner Exception #0) System.InvalidOperationException: Exception of type 'System.InvalidOperationException' was thrown.
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.VerifyIntegrity()
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.TryGetValue(TKey key, TValue& value)
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.GetValue(TKey key, CreateValueCallback createValueCallback)
   at System.Runtime.CompilerServices.ConditionalWeakTable`2.GetOrCreateValue(TKey key)
   at Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.CSharpSyntaxNode.GetStructure(SyntaxTrivia trivia)
   at Microsoft.CodeAnalysis.SyntaxTrivia.GetStructure()
   at Microsoft.CodeAnalysis.SyntaxNode.d__171.MoveNext()
   at Microsoft.CodeAnalysis.SyntaxNodeOrToken.GetDirectives[TDirective](SyntaxNode node, Func`2 filter, List`1& directives)
   at Microsoft.CodeAnalysis.SyntaxNodeOrToken.GetDirectives[TDirective](SyntaxNodeOrToken& node, Func`2 filter, List`1& directives)
   at Microsoft.CodeAnalysis.CSharp.Syntax.NullableContextStateMap.GetContexts(SyntaxTree tree, Boolean isGeneratedCode)
   at Microsoft.CodeAnalysis.CSharp.Syntax.NullableContextStateMap.Create(SyntaxTree tree, Boolean isGeneratedCode)
   at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree.EnsureNullableContextMapInitialized()
   at Microsoft.CodeAnalysis.CSharp.Binder.AreNullableAnnotationsEnabled(SyntaxTree syntaxTree, Int32 position)
   at Microsoft.CodeAnalysis.CSharp.Binder.AreNullableAnnotationsEnabled(SyntaxToken token)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(IdentifierNameSyntax node, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved, Boolean suppressUseSiteDiagnostics, NamespaceOrTypeSymbol qualifierOpt)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeOrAliasSymbol(ExpressionSyntax syntax, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved, Boolean suppressUseSiteDiagnostics)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeSymbol(ExpressionSyntax syntax, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved, Boolean suppressUseSiteDiagnostics)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindNamespaceOrTypeSymbol(ExpressionSyntax syntax, DiagnosticBag diagnostics, ConsList`1 basesBeingResolved)
   at Microsoft.CodeAnalysis.CSharp.Imports.FromSyntax(CSharpSyntaxNode declarationSyntax, InContainerBinder binder, ConsList`1 basesBeingResolved, Boolean inUsing)
   at Microsoft.CodeAnalysis.CSharp.InContainerBinder.<>c__DisplayClass6_0.<.ctor>b__0(ConsList`1 basesBeingResolved)
   at Microsoft.CodeAnalysis.CSharp.InContainerBinder.GetImports(ConsList`1 basesBeingResolved)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.GetImports(SingleNamespaceDeclaration declaration)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.ForceComplete(SourceLocation locationOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbol.ForceCompleteMemberByLocation(SourceLocation locationOpt, Symbol member, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol.<>c__DisplayClass49_1.b__0(Int32 i)
   at Roslyn.Utilities.UICultureUtilities.<>c__DisplayClass6_0`1.b__0(T param)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.b__1()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.b__0(Object )<---
<---


1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb; 3 4 <!DOCTYPE html> 5 @{ 6 var httpdomain = Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain(); 7 var ogurl = string.Format("{0}{1}", httpdomain, GetGlobalValue("Global:Pageview.Url")); 8 var cultShort = GetString("Lang"); 9 } 10 <html lang="@cultShort"> 11 <head prefix="og: http://ogp.me/ns#"> 12 <meta charset="utf-8"> 13 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 14 @*<meta name="viewport" content="width=device-width, initial-scale=1">*@ 15 <meta name="viewport" content="width=device-width, initial-scale=1.0001, minimum-scale=1.0001, maximum-scale=1.0001"> 16 <meta name="theme-color" content="#fff"> 17 18 <meta property="og:site_name" content="Alkmaar Marketing"> 19 <meta property="og:url" content="@ogurl"> 20 21 @RenderSnippet("ogTags") 22 23 <title>@GetValue("Title")</title> 24 @GetValue("MetaTags") 25 @GetValue("CopyRightNotice") 26 27 <link href="//fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> 28 <link href="/Files/Templates/Designs/Alkmaar%20Marketing/dist/css/style.min.css?v=1.0.2" rel="stylesheet"> 29 <link rel="icon" href="/Files/Templates/Designs/Alkmaar%20Marketing/img/favicon.png" type="image/x-icon"> 30 31 32 @* <link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css"> *@ 33 34 @GetString("Item.Area.Custom_Html_Head") 35 36 @renderRichSnippet() 37 @renderReviewSnippet() 38 39 @GetValue("Stylesheets") 40 @GetValue("Javascripts") 41 </head> 42 43 <body> 44 @GetString("Item.Area.Google_Tag_Manager") 45 46 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 47 @using Dynamicweb; 48 @using Dynamicweb.Content; 49 @using System.Globalization; 50 @using System.Text.RegularExpressions; 51 <!-- Begin header --> 52 53 @{ 54 var introheader = GetString("Item.Page.Intro_Title"); 55 var introcontent = GetString("Item.Page.Intro_Content"); 56 var introbuttontext = GetString("Item.Page.Intro_Button_Text"); 57 var introbuttonlink = GetString("Item.Page.Intro_Button_Url"); 58 var introimg = GetString("Item.Page.Intro_Image"); 59 var vidUrl = GetString("Item.Page.Video_Url"); 60 var introimgMobile = GetString("Item.Page.Image_Mobile"); 61 var imgtag = !string.IsNullOrWhiteSpace(introimg) ? string.Format("background-image: url('{0}');", introimg) : ""; 62 var ishome = GetInteger("DwAreaFirstPageID") == GetInteger("Global.PageId"); 63 var homeheader = ishome ? "header--homepage" : ""; 64 var HideBanner = GetBoolean("Item.Page.HideBanner"); 65 var wave = HideBanner == false ? "wave" : ""; 66 67 var obj_pageViewCurrent = Dynamicweb.Frontend.PageView.Current(); 68 string areaID = obj_pageViewCurrent.AreaID.ToString(); 69 string countryCode = GetGlobalValue("Global:Area.Culture.CountryCode"); 70 71 CultureInfo cultureCurrent = CultureInfo.GetCultureInfo(Pageview.Area.Culture); 72 73 string currentCultureFlag = string.Format("/Admin/Images/Flags/flag_{0}.png", Pageview.Area.Culture.Substring(3, 2).ToLower()); 74 75 var staticLinks = GetLoop("Item.Area.StaticLinks"); 76 var languages = GetLoop("Languages").Where(x => !x.GetBoolean("IsCurrent")); 77 var listType = GetString("Item.Area.ListType"); 78 79 string defaultLogo = "/Files/Templates/Designs/Alkmaar Marketing/img/header__logo.png"; 80 string websiteLogo = !string.IsNullOrEmpty(GetString("Item.Area.Logo")) ? GetString("Item.Area.Logo") : defaultLogo; 81 var checkPageforPurpleWave = GetGlobalValue("Global:Page.ID") == "24375" ? "header--homepage" : ""; 82 83 string YoutubeId = null; 84 85 if (!string.IsNullOrWhiteSpace(GetString("Item.Page.Video_Url"))) 86 { 87 // regex for https://youtu.be/{videoid} 88 Regex regex = new Regex(@".be\/(.[^?]*)"); 89 Match match = regex.Match(GetString("Item.Page.Video_Url")); 90 if (match.Success) 91 { 92 YoutubeId = match.Groups[1].Value; 93 } 94 95 // regex for https://www.youtube.com/watch?v={videoid} 96 regex = new Regex(@"v=([^&]+)"); 97 match = regex.Match(this.GetString("Item.Page.Video_Url")); 98 if (match.Success) 99 { 100 YoutubeId = match.Groups[1].Value; 101 } 102 } 103 } 104 105 <header class="header @homeheader @checkPageforPurpleWave" style="@imgtag" data-mobileimg="@introimgMobile" data-introimg="@introimg"> 106 @if (!string.IsNullOrWhiteSpace(vidUrl) && string.IsNullOrWhiteSpace(introimg)) 107 { 108 <div class="video-background"> 109 <div class="video-background__container video-background__container--youtube"> 110 <iframe class="youtube-video" width="1800" height="500" src="https://www.youtube.com/embed/@YoutubeId?autoplay=1&mute=1&controls=0&loop=1&;playlist=@YoutubeId" title="YouTube video player" frameborder="0" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture"></iframe> 111 </div> 112 </div> 113 } 114 <section class="intro @wave"> 115 @if (HideBanner == false) 116 { 117 <div class="intro__content"> 118 @if (!string.IsNullOrWhiteSpace(introheader)) 119 { 120 <h1 class="intro__header">@introheader</h1>} 121 @if (!string.IsNullOrWhiteSpace(introcontent)) 122 { 123 <p>@introcontent</p>} 124 @if (!string.IsNullOrWhiteSpace(introbuttontext) && !string.IsNullOrWhiteSpace(introbuttonlink)) 125 { 126 <a href="@introbuttonlink" class="intro__cta">@introbuttontext</a>} 127 </div> 128 } 129 </section> 130 131 <section class="header__container header__container--sticky"> 132 <a href="/" class="header__logo"> 133 <figure class="header__logo-img"></figure> 134 </a> 135 136 <nav class="mainmenu"> 137 138 <div class="mainmenu__items"> 139 @if (ishome) 140 { 141 <ul class="mainmenu__list mainmenu__list--homemenu hidden-md-up"> 142 @GetValue("DwNavigation(homemenu)") 143 </ul> 144 } 145 <ul class="mainmenu__list"> 146 @GetValue("DwNavigation(mainmenu)") 147 </ul> 148 </div> 149 @{ 150 var searchpage = GetString("Item.Area.SearchPageID"); 151 var searchplaceholder = Translate("Search.PlaceholderText", "Waar bent u naar op zoek?"); 152 <section class="searchbox"> 153 <form class="searchbox__form" method="get" action="/Default.aspx"> 154 <input type="hidden" name="ID" value="@searchpage"> 155 <input type="text" name="q" value="" placeholder="@searchplaceholder" class="searchbox__input"> 156 <i class="searchbox__close hidden-md-up"></i> 157 </form> 158 <a href="#" class="mainmenu__searchtoggle"></a> 159 </section> 160 } 161 162 <div class="mainmenu__social"> 163 @{ 164 var fbLink = GetString("Item.Area.Facebook"); 165 var twitterLink = GetString("Item.Area.Twitter"); 166 var instagramLink = GetString("Item.Area.Instagram"); 167 168 if (!string.IsNullOrWhiteSpace(fbLink)) 169 { 170 <a href="@fbLink" target="_blank" title="Facebook" class="mainmenu__sociallink mainmenu__sociallink--fb"> 171 <img src="/Files/Templates/Designs/Alkmaar%20Marketing/img/socialmedia__icon--facebook.png"> 172 </a> 173 } 174 if (!string.IsNullOrWhiteSpace(twitterLink)) 175 { 176 <a href="@twitterLink" target="_blank" title="Twitter" class="mainmenu__sociallink mainmenu__sociallink--twitter"> 177 <img src="/Files/Templates/Designs/Alkmaar%20Marketing/img/socialmedia__icon--twitter.png"> 178 </a> 179 } 180 if (!string.IsNullOrWhiteSpace(instagramLink)) 181 { 182 <a href="@instagramLink" target="_blank" title="Instagram" class="mainmenu__sociallink mainmenu__sociallink--ig"> 183 <img src="/Files/Templates/Designs/Alkmaar%20Marketing/img/socialmedia__icon--instagram.png"> 184 </a> 185 } 186 } 187 </div> 188 </nav> 189 190 <ul class="mainmenu__buttons" data-test='@GetValue("Area.ID") @GetValue("DwAreaFirstPageID")'> 191 <!-- <li class="mainmenu__buttons-button"><a href="#" class="mainmenu__searchtoggle"></a></li> --> 192 <li class="mainmenu__buttons-button"> 193 <a href="#" id="language" class="mainmenu__languageswitch" style="background-image: url('@currentCultureFlag');"></a> 194 <ul id="languageDropdown" class="mainmenu__languageswitch--dropdown" role="menu" aria-labelledby="languageselect"> 195 @if ((listType == "all" || listType == "language") && languages.Any()) 196 { 197 foreach (var language in languages) 198 { 199 200 var homepage = language.GetInteger("FirstActivePageID"); 201 var name = language.GetString("Name"); 202 string languageCode = language.GetString("Culture").Substring(3, 2).ToLower(); 203 int firstPageID = language.GetInteger("FirstActivePageID"); 204 //int pageId = language.GetInteger("DwPageID"); 205 int pageId = language.GetInteger("PageID"); 206 int areaId = language.GetInteger("ID"); 207 string isCurrent = language.GetBoolean("IsCurrent") ? " selected " : ""; 208 bool isMaster = language.GetBoolean("IsMaster"); 209 210 //Page linkPage = Page.GetPageBySql("Select * from Page where PageAreaID = '" + areaID + "' and PageMasterPageID = '" + pageId + "'"); 211 string pageVersionID = pageId > 0 ? pageId.ToString() : firstPageID.ToString(); //isMaster && linkPage != null ? linkPage.ID.ToString() : masterPage.ToString(); 212 213 string pageUrl = "/Default.aspx?ID=" + pageVersionID; 214 var cultureFlag = string.Format("/Admin/Images/Flags/flag_{0}.png", languageCode); 215 216 217 218 219 //int localizedPageID = "1"; //pageId > 0 ? pageService.GetPageIDByMasterID(pageId, areaId) : homepage; 220 //pageId = localizedPageID == 0 ? pageId : localizedPageID; 221 //string pageUrl = "";// Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(pageId); 222 223 <li role="presentation" data-current="@isCurrent"> 224 <a role="menuitem" tabindex="-1" href='@pageUrl' title="@name" style="background-image: url(@cultureFlag);" class="mainmenu__languageswitch"></a> 225 </li> 226 227 } 228 } 229 @if ((listType == "all" || listType == "static") && staticLinks.Any()) 230 { 231 foreach (var staticLink in staticLinks) 232 { 233 var txt = staticLink.GetString("Item.Area.StaticLinks.Title"); 234 var link = staticLink.GetString("Item.Area.StaticLinks.Link"); 235 var icon = staticLink.GetString("Item.Area.StaticLinks.Icon"); 236 var flag = string.Format("/Admin/Images/Flags/flag_{0}.png", icon); 237 238 if (!string.IsNullOrWhiteSpace(txt) && !string.IsNullOrWhiteSpace(link)) 239 { 240 <li role="presentation"> 241 <a role="menuitem" tabindex="-1" href="@link" title="@txt" style="background-image: url(@flag);" target="_blank" class="mainmenu__languageswitch"></a> 242 </li> 243 } 244 } 245 } 246 247 </ul> 248 </li> 249 <li class="mainmenu__buttons-button"> 250 <a href="#" class="mainmenu__toggle"> 251 <div class="mainmenu__toggle__btn"></div> 252 <div class="mainmenu__placeholder"></div> 253 </a> 254 </li> 255 </ul> 256 <a href="https://www.alkmaarprachtstad.nl/vvv-alkmaar" target="_blank" class="header__vvv-logo"> 257 <img src="/Files/Images/vvv_los.png"> 258 </a> 259 </section> 260 </header> 261 <!-- End header --> 262 263 @if (GetInteger("DwAreaFirstPageID") == GetInteger("Global.PageId") && !(string.IsNullOrWhiteSpace(GetString("Item.Area.ShoutboxSubtitle.Value")) && string.IsNullOrWhiteSpace(GetString("Item.Area.ShoutboxTitle.Value")))) 264 { 265 var link = GetString("Item.Area.ShoutLink.Value"); 266 <div class="shoutbox"> 267 <a href="@link" class="shoutbox__link"> 268 <span class="shoutbox__date">@GetString("Item.Area.ShoutboxSubtitle.Value")</span> 269 <span class="shoutbox__title">@GetString("Item.Area.ShoutboxTitle.Value")</span> 270 </a> 271 </div> 272 } 273 274 @if (GetBoolean("Item.Page.ShowShoutbox")) 275 { 276 var link = GetString("Item.Page.ShoutboxLink"); 277 var text = GetString("Item.Page.ShoutboxText"); 278 bool isExternal = link.StartsWith("http"); 279 bool hasDefault = link.StartsWith("Default.aspx"); 280 var url = isExternal || hasDefault ? @link : "/Default.aspx?Id=" + @link; 281 var target = isExternal ? "_blank" : "_self"; 282 283 <div class="shoutbox shoutbox--custom"> 284 <a href="@url" class="shoutbox__link" target="@target"> 285 <span class="shoutbox__title">@text</span> 286 </a> 287 </div> 288 289 @SnippetStart("ShoutboxButton") 290 <div> 291 <a href="/Default.aspx?Id=@link" class="filters__input filters__input--diap">@text</a> 292 </div> 293 @SnippetEnd("ShoutboxButton") 294 } 295 296 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 297 @using Dynamicweb; 298 @using System.Linq; 299 @using Bluedesk.DynamicWeb.ExtensionMethods; 300 @using System.Text.RegularExpressions 301 @using Dynamicweb.Content; 302 @using Dynamicweb.Rendering; 303 @using Dynamicweb.Frontend; 304 @using Dynamicweb.Content.Items; 305 @using Dynamicweb.Content.Items.Rendering; 306 307 308 309 @SnippetStart("AddThis") 310 <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-58b57d1ac939fad1"></script> 311 @SnippetEnd("AddThis") 312 313 @{ 314 var _data = Bluedesk.DynamicWeb.ItemTypes.Poi.PoiLocation.CreateFrom(Pageview.Item.SerializeTo()); 315 var _domain = Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain(); 316 var _url = _domain + PageView.Current().SearchFriendlyUrl; 317 } 318 319 <section class="container-fluid"> 320 <div class="row no-gutter detailpage"> 321 <section class="col-xs-12 col-md-6 col-lg-5 col-lg-offset-1"> 322 <nav class="breadcrumbnav"> 323 <ol itemscope="" itemtype="http://schema.org/BreadcrumbList" class="breadcrumbnav__list" id="breadcrumblist"> 324 <li class="breadcrumbnav__home" itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem"> 325 <a class="breadcrumbnav__home-link" itemprop="item" href="/"> 326 <span itemprop="name">Home</span> 327 </a> 328 <meta itemprop="position" content="1"> 329 </li> 330 <li itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem" class="breadcrumbnav__item breadcrumbnav__item--active"> 331 <a itemprop="item" href="@_url"> 332 <span itemprop="name">@_data.Header</span> 333 </a> 334 <meta itemprop="position" content="2"> 335 </li> 336 </ol> 337 </nav> 338 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 339 @using Dynamicweb; 340 341 @{ 342 var title = _data.Header; //GetString("Item.Header"); 343 var date = GetDate("Item.PublishDate").ToString("dd-MM-yyyy"); ; //GetString("Item.PublishDate"); 344 var subtitle = _data.Subheader; // GetString("Item.Subheader"); 345 var content = _data.Content; //GetString("Item.Content"); 346 var btntext = _data.ButtonText;// GetString("Item.ButtonText"); 347 var btnurl = _data.ButtonLink;// GetString("Item.ButtonLink"); 348 var sale = GetString("Item.Actie"); 349 } 350 351 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 352 @using Dynamicweb; 353 354 @if (!GetBoolean("Item.Page.HideBreadcrumbs")) 355 { 356 <nav class="breadcrumbnav"> 357 @GetValue("DwNavigation(breadcrumblist)") 358 </nav> 359 } 360 361 <section class="detail"> 362 @{ 363 if (!string.IsNullOrWhiteSpace(title)) 364 { 365 <h1 class="detail__header">@title</h1> 366 } 367 if (!string.IsNullOrWhiteSpace(subtitle)) 368 { 369 <h2 class="detail__subheader">@subtitle</h2> 370 } 371 if (!string.IsNullOrWhiteSpace(date) && date != "01-01-0001") 372 { 373 <p class="detail__publish-date">@Translate("PublishedOn.News.Date", "Gepubliceerd op"): @date</p> 374 } 375 if (!string.IsNullOrWhiteSpace(content)) 376 { 377 <article class="detail__content"> 378 @content 379 </article> 380 } 381 if (!string.IsNullOrWhiteSpace(sale)) 382 { 383 <strong class="detail__sale">@sale</strong> 384 } 385 if (!string.IsNullOrWhiteSpace(btntext) && !string.IsNullOrWhiteSpace(btnurl)) 386 { 387 <footer class="detail__footer"> 388 <a href="@btnurl" class="detail__cta">@btntext</a> 389 </footer> 390 } 391 } 392 </section> 393 </section> 394 <aside class="meta col-xs-12 col-md-5 col-md-offset-1"> 395 396 <div class="row meta__content"> 397 <div class="col-xs-12 meta__info"> 398 @_data.AddressStreet @_data.AddressNumber, <br> 399 @_data.AddressZipcode @_data.AddressCity <br> 400 401 @if (!string.IsNullOrWhiteSpace(_data.ContactEmail)) 402 { 403 <a href="mailto:@_data.ContactEmail"><i class="far fa-envelope"></i> @_data.ContactEmail</a><br> 404 } 405 406 @if (!string.IsNullOrWhiteSpace(_data.ContactUrl)) 407 { 408 var url = _data.ContactUrl.Contains("http") ? _data.ContactUrl : string.Format("http://{0}", _data.ContactUrl); 409 <a href="@url" target="_blank"><i class="far fa-globe"></i> @_data.ContactUrl</a> <br> 410 } 411 412 @{ 413 var phonenumber = _data.ContactPhone; 414 phonenumber = Regex.Replace(phonenumber, @"[^\d]", ""); 415 } 416 417 <a href="tel:@phonenumber"> <i class="far fa-phone"></i> @_data.ContactPhone</a><br> 418 @_data.PhoneHours 419 420 421 </div> 422 <div class="col-xs-12"> 423 <strong>Openingstijden</strong> 424 <table> 425 @if (!string.IsNullOrWhiteSpace(_data.OfficeHoursMo)) 426 { 427 <tr> 428 <td>Maandag:</td> 429 <td>@_data.OfficeHoursMo</td> 430 </tr> 431 } 432 @if (!string.IsNullOrWhiteSpace(_data.OfficeHoursTu)) 433 { 434 <tr> 435 <td>Dinsdag: </td> 436 <td>@_data.OfficeHoursTu</td> 437 </tr> 438 } 439 @if (!string.IsNullOrWhiteSpace(_data.OfficeHoursWe)) 440 { 441 <tr> 442 <td>Woensdag: </td> 443 <td>@_data.OfficeHoursWe</td> 444 </tr> 445 } 446 @if (!string.IsNullOrWhiteSpace(_data.OfficeHoursTh)) 447 { 448 <tr> 449 <td>Donderdag: &nbsp;&nbsp;</td> 450 <td>@_data.OfficeHoursTh</td> 451 </tr> 452 } 453 @if (!string.IsNullOrWhiteSpace(_data.OfficeHoursFr)) 454 { 455 <tr> 456 <td>Vrijdag: </td> 457 <td>@_data.OfficeHoursFr</td> 458 </tr> 459 } 460 @if (!string.IsNullOrWhiteSpace(_data.OfficeHoursSa)) 461 { 462 <tr> 463 <td>Zaterdag: </td> 464 <td>@_data.OfficeHoursSa</td> 465 </tr> 466 } 467 @if (!string.IsNullOrWhiteSpace(_data.OfficeHoursSu)) 468 { 469 <tr> 470 <td>Zondag: </td> 471 <td>@_data.OfficeHoursSu</td> 472 </tr> 473 } 474 </table> 475 </div> 476 477 </div> 478 <div class="m-negative-custom"> 479 <figure class="meta__image" style="background-image: url('@_data.Image');"></figure> 480 </div> 481 </aside> 482 483 </div> 484 </section> 485 486 @*<section id="content">@GetValue("DwContent(content)")</section>*@ 487 488 489 @{ 490 var Recommendationid = GetInteger("Item.Area.RecommendationParagraph"); 491 var RecommendationTitle = GetInteger("Item.Area.RecommendationTitle"); 492 if (Recommendationid > 0 && RecommendationTitle > 0) 493 { 494 @RenderParagraphContent(RecommendationTitle) 495 @RenderParagraphContent(Recommendationid) 496 } 497 } 498 499 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 500 @using Dynamicweb; 501 502 @{ 503 var newsletterid = GetInteger("Item.Area.NewsletterSubscribeParagraph"); 504 if (newsletterid > 0) 505 { 506 @RenderParagraphContent(newsletterid) 507 } 508 } 509 510 <footer class="footer"> 511 512 <section class="footer__middle container"> 513 <div class="row"> 514 <div class="col-md-6"> 515 @{ 516 var footertitle = GetString("Item.Area.FooterContent_Title"); 517 var footerimg = GetString("Item.Area.FooterContent_Image"); 518 var footertext = GetString("Item.Area.FooterContent_Text"); 519 } 520 <h4 class="footer__subtitle">@footertitle</h4> 521 <div class="row"> 522 <div class="col-md-4"> 523 <img src="@footerimg" class="footer__img"> 524 </div> 525 <div class="col-md-5">@footertext</div> 526 </div> 527 </div> 528 529 <div class="col-md-6"> 530 <nav class="footer-nav row"> 531 @GetValue("DwNavigation(footernavigation)") 532 </nav> 533 </div> 534 </div> 535 536 537 </section> 538 <section class="footer__bottom container"> 539 <div class="row"> 540 <div class="footer__social col-xs-12 col-sm-6 col-lg-2"> 541 @{ 542 var fb = GetString("Item.Area.Facebook"); 543 var twitter = GetString("Item.Area.Twitter"); 544 var instagram = GetString("Item.Area.Instagram"); 545 546 if (!string.IsNullOrWhiteSpace(fb)) 547 { 548 <a href="@fb" target="_blank" title="Facebook" class="footer__sociallink footer__sociallink--fb"> 549 <img src="/Files/Templates/Designs/Alkmaar%20Marketing/img/socialmedia__icon--facebook.png"> 550 </a> 551 } 552 if (!string.IsNullOrWhiteSpace(twitter)) 553 { 554 <a href="@twitter" target="_blank" title="Twitter" class="footer__sociallink footer__sociallink--twitter"> 555 <img src="/Files/Templates/Designs/Alkmaar%20Marketing/img/socialmedia__icon--twitter.png"> 556 </a> 557 } 558 if (!string.IsNullOrWhiteSpace(instagram)) 559 { 560 <a href="@instagram" target="_blank" title="Instagram" class="footer__sociallink footer__sociallink--ig"> 561 <img src="/Files/Templates/Designs/Alkmaar%20Marketing/img/socialmedia__icon--instagram.png"> 562 </a> 563 } 564 } 565 </div> 566 567 <div class="wifi col-xs-12 col-sm-6 col-lg-5"> 568 <img src="/Files/Templates/Designs/Alkmaar%20Marketing/img/icon__wifi.png" class="wifi__img"> 569 <span class="wifi__content">@GetString("Item.Area.WIFI")</span> 570 </div> 571 572 <nav class="legal col-xs-12 col-lg-5"> 573 @GetValue("DwNavigation(bottomnavigation)") 574 </nav> 575 </div> 576 </section> 577 </footer> 578 579 @RenderSnippet("AddThis") 580 581 582 583 @*<script src="//maps.googleapis.com/maps/api/js"></script>*@ 584 <script type="text/javascript" src="/Files/Templates/Designs/Alkmaar%20Marketing/dist/js/main.min.js?v=1.0.1"></script> 585 586 </body> 587 </html> 588 @helper renderRichSnippet() 589 { 590 <script type="application/ld+json"> 591 [{ 592 "@@context": "http://schema.org", 593 "@@type": "Organization", 594 "name" : "@GetString("DwAreaName")", 595 "url": "@Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain()", 596 "sameAs" : "@GetString("Item.Area.Facebook")", 597 "logo": "@Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain()/Files/Templates/Designs/Alkmaar Marketing/img/header__logo.png", 598 "contactPoint" : [{ 599 "@@type" : "ContactPoint", 600 "telephone" : "@GetString("Item.Area.Phonenumber")", 601 "contactType" : "customer service" , 602 "@@context": "http://schema.org", 603 "@@id": "@Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain()", 604 "name": "@GetString("DwAreaName")", 605 "url": "@Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain()" 606 }], 607 "address": { 608 "@@type": "PostalAddress", 609 "streetAddress": "@GetString("Item.Area.StreetAddress")", 610 "addressLocality": "@GetString("Item.Area.AddressLocality")", 611 "addressRegion": "@GetString("Item.Area.AddressRegion")", 612 "postalCode": " @GetString("Item.Area.PostalCode")", 613 "addressCountry": "@GetString("Item.Area.AddressCountry")" 614 } 615 }, 616 { 617 "@@context": "http://schema.org", 618 "@@type": "WebSite", 619 "name" : "@GetString("DwAreaName")", 620 "alternateName" : "Alkmaar Marketing", 621 "url": "@Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain()", 622 "potentialAction": { 623 "@@type": "SearchAction", 624 "target": " @Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain()/default.aspx?id=@GetString("Item.Area.SearchPage")&q={search_term_string}", 625 "query-input": "required name=search_term_string" 626 } 627 }] 628 </script> 629 } 630 631 632 <!-- Structured Data JSON-LD --> 633 @helper renderReviewSnippet() 634 { 635 var reviewName = GetString("Item.Area.Review_Name") != null ? GetString("Item.Area.Review_Name") : ""; 636 var reviewBestRating = GetString("Item.Area.Review_Best_Rating") != null ? GetString("Item.Area.Review_Best_Rating") : ""; 637 var reviewWorstRating = GetString("Item.Area.Review_Worst_Rating") != null ? GetString("Item.Area.Review_Worst_Rating") : ""; 638 var reviewRatingValue = GetString("Item.Area.Review_Rating_Value") != null ? GetString("Item.Area.Review_Rating_Value") : ""; 639 var reviewCount = GetString("Item.Area.Review_Count") != null ? GetString("Item.Area.Review_Count") : ""; 640 var reviewUrl = GetString("Item.Area.Review_URL") != null ? GetString("Item.Area.Review_URL") : ""; 641 642 643 <script type="application/ld+json"> 644 { 645 "@@context": "http://schema.org", 646 "@@type": "Product", 647 "name": "@reviewName", 648 "url":"@reviewUrl", 649 "aggregateRating": { 650 "@@type": "AggregateRating", 651 "bestRating": "@reviewBestRating", 652 "worstRating": "@reviewWorstRating", 653 "ratingValue": "@reviewRatingValue", 654 "reviewCount": "@reviewCount" 655 } 656 } 657 </script> 658 }