Fehler bei der Verarbeitung der Vorlage.
'article' parameter of getJsonFromArticle() was not a hash / object with member 'classPK' and also not an empty string (maybe you forgot a 'FrontendService.json.parseAsJson()' to deserialize json earlier?): {}

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #stop ("'article' parameter of getJso...  [in template "kas-de-theme_SERVLET_CONTEXT_/templates/functions/relatedContentUtil.ftl" in function "getJsonFromArticle" at line 244, column 5]
	- Reached through: #local ansprechpartnerContactJson = g...  [in template "kas-de-theme_SERVLET_CONTEXT_/templates/functions/content-functions/CFMarginalContent.ftl" in function "getMarginalContent" at line 331, column 13]
	- Reached through: #assign content = getMarginalContent(...  [in template "252001#252047#252853" at line 117, column 9]
----
1<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" /> 
2<#include "${fullTemplatesPath}/functions/freemarkerUtil.ftl" /> 
3<#include "${fullTemplatesPath}/macros/debugging.ftl" /> 
4<#include "${fullTemplatesPath}/functions/liferayServicesUtil.ftl" /> 
5 
6<#include "${fullTemplatesPath}/macros/page-modules/PMNavigation.ftl" /> 
7<#include "${fullTemplatesPath}/macros/page-modules/PMMarginalspalte.ftl" /> 
8<#include "${fullTemplatesPath}/macros/atomic-modules/AMVenue.ftl" /> 
9<#include "${fullTemplatesPath}/macros/atomic-modules/AMMarginalContent.ftl" /> 
10<#include "${fullTemplatesPath}/macros/atomic-modules/AMPricing.ftl" /> 
11<#include "${fullTemplatesPath}/macros/atomic-modules/AMPerson.ftl" /> 
12<#include "${fullTemplatesPath}/macros/atomic-modules/AMMediaElement.ftl" /> 
13<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" /> 
14<#include "${fullTemplatesPath}/macros/atomic-modules/AMMap.ftl" /> 
15<#include "${fullTemplatesPath}/macros/atomic-modules/AMMarginalLinks.ftl" /> 
16<#include "${fullTemplatesPath}/macros/atomic-modules/AMCollapsibleListItem.ftl" /> 
17 
18<#assign 
19    DLUtil = getDLUtil() 
20    JournalArticleLocalService = getJournalArticleLocalService() 
21       
22      
23 
24    themeDisplay = getThemeDisplay() 
25    languageId = themeDisplay.getLocale() 
26    editmode = FrontendService.user.isPrivilegedUser(themeDisplay) 
27 
28    groupId = themeDisplay.getScopeGroupId() 
29    currentUrl = themeDisplay.getURLCurrent() 
30 
31    layout = themeDisplay.getLayout() 
32    layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id") 
33 
34    isMicrosite = FrontendService.site.isMicrosite(groupId)!false 
35/> 
36 
37<#-- Veranstaltungen-Detail, Publikationen-Detail --> 
38<#if currentUrl?contains("/-/content") > 
39 
40    <#assign journalArticle = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! > 
41 
42    <#if journalArticle?has_content> 
43        <#if journalArticle.resourcePrimKey??> 
44            <#assign primaryKey = journalArticle.resourcePrimKey?number > 
45        <#elseif journalArticle.classPK??> 
46            <#assign primaryKey = journalArticle.classPK?number > 
47        </#if> 
48 
49        <#assign 
50            jsonString = FrontendService.article.getWebcontent(primaryKey) 
51            json = FrontendService.json.parseAsJson(jsonString) 
52        /> 
53 
54 
55        <@debugJsonString jsonString "ADT_KASDE_MARGINALSPALTE" /> 
56 
57        <#if hasContent('title', locale, json)> 
58            <#assign 
59                pageName = "" 
60                title = " - " + getValueForLanguage("title", languageId, json, "first") 
61            /> 
62            <#if isMicrosite > 
63                <#assign 
64                    pageGroup = layout.getGroup() 
65                    pageName = " - " + htmlUtil.escape(pageGroup.getDescriptiveName()) 
66                /> 
67            </#if> 
68            <script defer>document.title = 'Konrad-Adenauer-Stiftung${pageName}${title}'; </script> 
69        </#if> 
70 
71        <#assign content = getMarginalContent(json, locale, primaryKey, FrontendService, JournalArticleLocalService, themeDisplay) >  
72 
73 
74        <#if hasContent('ausgebucht', locale, json)> 
75            <#assign content = content + { "ausgebucht" : getValueForLanguage('ausgebucht', locale, json, "first") }> 
76        </#if> 
77 
78        <#if hasContent('storniert', locale, json)> 
79            <#assign content = content + { "storniert" : getValueForLanguage('storniert', locale, json, "first") }> 
80        </#if> 
81 
82        <#if hasContent('document_pdfDMTBASICDOCUMENT', locale, json)> 
83            <#assign 
84                pdfDocumentString = getValueForLanguage('document_pdfDMTBASICDOCUMENT', locale, json, "first") 
85                pdfDocument = FrontendService.json.parseAsJson(pdfDocumentString) 
86                fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, pdfDocument.groupId?number)!/> 
87            <#if fileEntry?has_content> 
88              <#assign 
89                  linkToThumbnail = DLUtil.getThumbnailSrc(fileEntry , themeDisplay) 
90                  covermedia = getDefaultMediaObject(linkToThumbnail, "pdf cover") 
91                  covermedia = covermedia + {"hrefSource" : content.pdfBasicDocumentUrl.url } 
92                  content = content + { "covermedia": covermedia } 
93              /> 
94            </#if> 
95        </#if> 
96 
97         <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
98            <#assign calendar = FrontendService.event.createCalendarFile(primaryKey, locale) /> 
99            <#assign content = content + {"calendar": calendar } /> 
100        </#if> 
101    <#elseif (editmode?? && editmode)> 
102        <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_MARGINALSPALTE" layouttpl /> 
103    </#if> 
104 
105<#-- Themen-Detail and others --> 
106<#else> 
107    <#-- content in marginalspalte --> 
108    <#if entries?has_content> 
109        <#assign 
110            entry = entries?first 
111            primaryKey = entry.classPK?number 
112 
113            jsonString = FrontendService.article.getWebcontent(primaryKey) 
114            json = FrontendService.json.parseAsJson(jsonString) 
115        /> 
116        <@debugJsonString jsonString "ADT_KASDE_MARGINALSPALTE" /> 
117        <#assign content = getMarginalContent(json, locale, primaryKey, FrontendService, JournalArticleLocalService, themeDisplay) > 
118    <#elseif (editmode?? && editmode)> 
119        <@errorMessage languageUtil.get(locale, "es.existieren.keine.entries") "ADT_KASDE_MARGINALSPALTE" layouttpl /> 
120    </#if> 
121</#if> 
122 
123 
124<#if content??> 
125    <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")> 
126        <#assign type = "veranstaltung" /> 
127 
128    <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")> 
129        <#assign type = "publikation" /> 
130    <#elseif layouttpl?contains("LAYOUT_KASDE_THEMEN_DETAIL")> 
131        <#assign type = "thema" /> 
132    <#else /> 
133        <#assign type = "default" /> 
134    </#if> 
135 
136    <#assign content = content + {"type": type } /> 
137 
138    <@PMMarginalspalte "ADT_KASDE_MARGINALSPALTE" content AMArticle AMPerson AMVenue AMPricing AMMediaElement AMDatetime AMMap AMMarginalContent AMMarginalLinks/> 
139<#elseif (editmode?? && editmode)> 
140    <@errorMessage languageUtil.get(locale, "entries.enthalten.keinen.content") "ADT_KASDE_MARGINALSPALTE" layouttpl /> 
141</#if>