Business collections

Collections of semantic assets linked to concrete projects give an easy overview of the applied vocabularies and provide an introductory platform for authors to present their projects.
Възникна грешка при обработка на шаблона.
The following has evaluated to null or missing:
==> curEntry.getAssetRenderer().getArticle [in template "10157#10197#6686865" at line 10, column 54]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
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 docXml = saxReaderUtil.read(c... [in template "10157#10197#6686865" at line 10, column 17]
----
1<#assign liferay_ui = PortletJspTagLibs["/META-INF/liferay-ui.tld"] />
2<div class="container bc-page card-content-t-1">
3<div class="row">
4
5 <#list entries as curEntry>
6 <#assign curEntry = curEntry />
7 <#assign assetRenderer = curEntry.getAssetRenderer() />
8 <#assign className = assetRenderer.getClassName() >
9
10 <#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContent()) />
11 <#assign rootElement = docXml.getRootElement() />
12 <#assign availableLocales = rootElement.attribute("available-locales").getText() />
13 <#assign defaultLocale = rootElement.attribute("default-locale").getText() />
14
15
16 <#if (availableLocales?contains(locale)) >
17 <#assign CardTitle = docXml.valueOf("//dynamic-element[@name='CardTitle']/dynamic-content[@language-id='"+locale+"']/text()") />
18 <#assign CardDescription = docXml.valueOf("//dynamic-element[@name='CardDescription']/dynamic-content[@language-id='"+locale+"']/text()") />
19 <#assign LearnMoreLink = docXml.valueOf("//dynamic-element[@name='LearnMoreLink']/dynamic-content[@language-id='"+locale+"']/text()") />
20 <#else>
21 <#assign CardTitle = docXml.valueOf("//dynamic-element[@name='CardTitle']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
22 <#assign CardDescription = docXml.valueOf("//dynamic-element[@name='CardDescription']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
23 <#assign LearnMoreLink = docXml.valueOf("//dynamic-element[@name='LearnMoreLink']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
24 </#if>
25
26 <#assign LearnMoreLink = docXml.valueOf("//dynamic-element[@name='LearnMoreLink']/dynamic-content[@language-id='"+defaultLocale+"']/text()") />
27
28 <div class="col-xl-4 col-md-6 col-sm-12 card-content-page d-flex">
29 <div class="card flex-fill" onclick="document.location='${LearnMoreLink}'">
30 <div class="card-header bg-transparent">${CardTitle}</div>
31 <div class="card-body">
32 ${CardDescription}
33 </div>
34 <div class="card-footer bg-transparent"><a aria-label="Learn more about ${CardTitle}" href="${LearnMoreLink}">Learn more</a><i class="arrow right"></i></div>
35 </div>
36 </div>
37 </#list>
38
39</div>
40</div>
41
42<style>
43.portlet-asset-publisher {
44 height: auto;
45}
46.container.bc-page .card-body p {
47 margin: 0;
48 color: #666666;
49 line-height: 1.5;
50}
51
52.container.bc-page .card-body {
53 flex: 1 1 auto;
54 margin: 0.5rem 1.25rem 3.75rem 1.25rem;
55 padding: 0;
56 height: 100px;
57 display: -webkit-box;
58 -webkit-line-clamp: 5;
59 -webkit-box-orient: vertical;
60 overflow: hidden;
61 text-overflow: ellipsis;
62}
63.container.bc-page .card{
64 min-height: unset;
65 cursor: pointer;
66}
67.container.bc-page .card:hover{
68 border: 1px solid #5599FF;
69 box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.1);
70}
71.container.bc-page .card-header {
72 font-size: 16px;
73 line-height: 23px;
74 color: #112250;
75 font-weight: bold;
76 margin: 0.75rem 0 0 0;
77 padding: 0 1.25rem;
78 border-bottom: 0;
79}
80.card-footer {
81 position: absolute;
82 width: 100%;
83 bottom: 0;
84}
85.card-footer a{
86 font-weight: bold;
87}
88
89</style>