Virhe tapahtui prosessoidessa esitysmallia.
The following has evaluated to null or missing:
==> webArticleHelper  [in template "43104#43145#3611149" at line 8, column 20]

----
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 article = webArticleHelper.ge...  [in template "43104#43145#3611149" at line 8, column 1]
----
1<#-- Use UTF-8 charset for URL escaping --> 
2<#setting url_escaping_charset="UTF-8"> 
3 
4<#assign scopeGroupTreePath = themeDisplay.getScopeGroup().treePath?split('/') /> 
5<#assign pirhaGroupId = scopeGroupTreePath[1]?number /> 
6 
7<#assign articleId = .vars["reserved-article-id"].data/> 
8<#assign article = webArticleHelper.getJournalArticle(articleId, groupId)/> 
9 
10<#assign typeCategories = webArticleHelper.getAssetCategoriesForArticleInVocabulary(article, pirhaGroupId, "Tyyppi") /> 
11<#assign topics = webArticleHelper.getAssetCategoriesForArticleInVocabulary(article, themeDisplay.getCompany().getGroup().groupId, "Ajankohtaissisältöjen aiheet") /> 
12 
13<#assign displayDate = dateTimeHelper.getFormattedDate(.vars["reserved-article-display-date"].data)/> 
14<#assign modifiedDate = dateTimeHelper.getFormattedDate(.vars["reserved-article-modified-date"].data)/> 
15 
16<#assign i18n = { 
17    "fi": { 
18        "kb":"kt", 
19        "mb": "mt", 
20        "text":"Teksti", 
21        "modified":"Päivitetty", 
22        "archivePageURL": "/ajankohtaista/uutiset-ja-artikkelit" 
23    }, 
24    "en": { 
25        "kb":"kb", 
26        "mb":"mb", 
27        "text":"Text", 
28        "modified":"Modified", 
29        "archivePageURL": "/ajankohtaista/uutiset-ja-artikkelit" 
30
31} /> 
32 
33<#function Translate word> 
34    <#return i18n[locale.language][word] /> 
35</#function> 
36 
37<#function si num> 
38    <#assign order = num?round?c?length /> 
39    <#assign thousands = ((order - 1) / 3)?floor /> 
40    <#if (thousands < 0)><#assign thousands = 0 /></#if> 
41    <#assign siMap = [ {"factor": 1, "unit": ""}, {"factor": 1000, "unit": "${Translate('kb')}"}, {"factor": 1000000, "unit": "${Translate('mb')}"}, {"factor": 1000000000, "unit":"G"}, {"factor": 1000000000000, "unit": "T"} ]/> 
42    <#assign siStr = (num / (siMap[thousands].factor))?string("0.#") + siMap[thousands].unit /> 
43    <#return siStr /> 
44</#function> 
45 
46<div class="pirha-2-news-and-article mb-5"> 
47    <#if (pirha_article_data.title.getData())??> 
48        <h1>${pirha_article_data.title.getData()}</h1> 
49    </#if> 
50    <#if (pirha_article_data.lead.getData())??> 
51        <p class="lead">${pirha_article_data.lead.getData()}</p> 
52    </#if> 
53    <#if typeCategories?has_content> 
54        <div class="row no-gutters"> 
55            <#list typeCategories as category> 
56						    <#if category.getTitle('fi_FI') == 'Uutinen'> 
57                    <#assign categoryColor = 'color--orange-dark' /> 
58                <#elseif category.getTitle('fi_FI') == 'Blogi'> 
59                    <#assign categoryColor = 'color--violet' /> 
60                <#else> 
61                    <#assign categoryColor = 'color--blue' /> 
62                </#if> 
63 
64                <div class="col-auto"> 
65                    <span class="category-name ${categoryColor}"> 
66                        ${category.getTitle(locale)} 
67                    </span> 
68                </div> 
69            </#list> 
70        </div> 
71    </#if> 
72    <#if modifiedDate??> 
73        <div class="row no-gutters"> 
74            <div class="col-auto"> 
75                <p class="article-date">${displayDate}</p> 
76            </div> 
77            <div class="col-auto"> 
78                <p class="article-date modified-date">${Translate("modified")} ${modifiedDate}</p> 
79            </div> 
80        </div> 
81    <#else> 
82        <div class="row no-gutters"> 
83            <div class="col-auto"> 
84                <p class="article-date">${displayDate}</p> 
85            </div> 
86        </div> 
87    </#if> 
88 
89    <#if !getterUtil.getBoolean(pirha_article_image.hideMainImage.getData())> 
90      <#if (pirha_article_image.mainImage.getData())?? && pirha_article_image.mainImage.getData() != ""> 
91        <div class="row no-gutters"> 
92            <div class="col"> 
93                <img alt="${pirha_article_image.mainImage.getAttribute("alt")}" 
94                     data-fileentryid="${pirha_article_image.mainImage.getAttribute("fileEntryId")}" 
95                     src="${pirha_article_image.mainImage.getData()}"/> 
96            </div> 
97        </div> 
98      </#if> 
99      <#if (pirha_article_image.main_image_caption.getData())??> 
100        <div class="row no-gutters"> 
101            <div class="col"> 
102                <p class="image_caption">${pirha_article_image.main_image_caption.getData()}</p> 
103            </div> 
104        </div> 
105      </#if> 
106		</#if> 
107			 
108    <#if (pirha_article_data.content.getData())??> 
109        <div class="article-content"> 
110            ${pirha_article_data.content.getData()} 
111        </div> 
112    </#if> 
113		 
114		<#if pirha_article_data.webArticle?? && pirha_article_data.webArticle.getData()?has_content> 
115        <div class="my-2"> 
116            <#assign embedWebContentData = jsonFactoryUtil.createJSONObject(pirha_article_data.webArticle.getData()) /> 
117            <#assign embedArticleId = webArticleHelper.getJournalArticleId(embedWebContentData.getLong("classPK")) /> 
118            <@liferay_journal["journal-article"] articleId=embedArticleId groupId=groupId /> 
119        </div> 
120    </#if> 
121 
122    <#if pirha_article_data.contentSection2?? && pirha_article_data.contentSection2.getData()?has_content> 
123        ${pirha_article_data.contentSection2.getData()} 
124    </#if> 
125		 
126    <#if pirha_article_attachments_list.attachment.getSiblings()?has_content> 
127        <div class="attachments pt-3"> 
128            <#list pirha_article_attachments_list.attachment.getSiblings() as attachment> 
129                 
130                <#assign has_attachment_file = (attachment.attachments_file.getData())?? && attachment.attachments_file.getData() != ""/> 
131                <#assign has_attachment_link = (attachment.attachments_external_link.getData())?? && (attachment.attachments_external_link.getData()) != ""/> 
132                <#if has_attachment_file || has_attachment_link> 
133										<div class="row no-gutters mb-2"> 
134                        <div class="col-auto"> 
135                            <span role="presentation" class="pirha-icon pirha-icon--attachment mr-2"></span> 
136                        </div> 
137                        <div class="col"> 
138                            <#if (attachment.attachments_name.getData())?? && (attachment.attachments_name.getData() != "")> 
139                                <#assign link_name = attachment.attachments_name.getData()/> 
140                            </#if> 
141                            <#if (attachment.attachments_description.getData())?? && (attachment.attachments_description.getData() != "")> 
142                                <#assign attachment_description = attachment.attachments_description.getData()/> 
143                            </#if> 
144                            <#if has_attachment_file> 
145                                <div class="row no-gutters"> 
146                                    <div class="col"> 
147                                        <a class="pirha-button attachment" 
148                                           href="${attachment.attachments_file.getData()}"> 
149                                            <#assign 
150                                            link=attachment.attachments_file 
151                                            link_url_parts = link.getData()?split("/") 
152                                            file_uuid = link_url_parts[5]?keep_before("?") 
153																						file_group_id = link_url_parts[2]?number 
154                                            file = DLAppLocalServiceHelper.getFileEntryByUuidAndGroupId(file_uuid?string,file_group_id?long) 
155                                            />${link_name}, ${file.getExtension()}, ${si(file.getSize())} 
156                                        </a> 
157                                    </div> 
158                                </div> 
159                            <#elseif has_attachment_link> 
160                                <a target="_blank" class="pirha-button attachment" 
161                                   href="${attachment.attachments_external_link.getData()}"> 
162                                    ${link_name} 
163                                </a> 
164                            </#if> 
165                            <#if attachment_description??> 
166                                <div class="row no-gutters"> 
167                                    <div class="col"> 
168                                        <p class="py-0"> 
169                                            ${attachment_description} 
170                                        </p> 
171                                    </div> 
172                                </div> 
173                            </#if> 
174                        </div> 
175										</div> 
176                </#if>                 
177            </#list> 
178        </div> 
179    </#if> 
180    <#if pirha_article_linklist.linksField.getSiblings()?has_content> 
181        <div class="mb-3"> 
182            <div class="row no-gutters"> 
183                <#list pirha_article_linklist.linksField.getSiblings() as cur_pirha_article_linklist_fields> 
184                    <div class="col-auto mb-2 mr-2"> 
185                        <#if cur_pirha_article_linklist_fields.linklist_name.getData()?? && cur_pirha_article_linklist_fields.linklist_name.getData() != ""> 
186                            <#assign link_name= cur_pirha_article_linklist_fields.linklist_name.getData()/> 
187                        </#if> 
188                        <#if cur_pirha_article_linklist_fields.linklist_external_link.getData()?? && cur_pirha_article_linklist_fields.linklist_external_link.getData() != ""> 
189                            <a class="pirha-button-link" 
190                               href="${cur_pirha_article_linklist_fields.linklist_external_link.getData()}"> 
191                                <span role="presentation" class="pirha-icon pirha-icon--link-external"></span> 
192                                ${link_name} 
193                            </a> 
194                        <#elseif cur_pirha_article_linklist_fields.linklist_link_to_page.getFriendlyUrl()?? && cur_pirha_article_linklist_fields.linklist_link_to_page.getFriendlyUrl() != ""> 
195                            <a class="pirha-button-link" 
196                               href="${cur_pirha_article_linklist_fields.linklist_link_to_page.getFriendlyUrl()}"> 
197                                <span role="presentation" class="pirha-icon pirha-icon--arrow-right"></span> 
198                                ${link_name} 
199                            </a> 
200                        </#if> 
201                    </div> 
202                </#list> 
203            </div> 
204        </div> 
205    </#if> 
206    <#if pirha_article_data.creator?? && pirha_article_data.creator.getData()?has_content> 
207        <p class="mb-3">${Translate("text")}: <span class="font-weight-bold">${pirha_article_data.creator.getData()}</span></p> 
208    </#if> 
209    <#if topics?has_content> 
210        <div class="pt-2"> 
211				    <hr> 
212            <div class="row no-gutters"> 
213                <#list topics as topic> 
214                    <div class="col-auto mr-3"> 
215                        <a href="${Translate('archivePageURL')}?topic=${topic.getTitle(locale)?url}" class="pirha-button-link button-xs"> 
216                            ${topic.getTitle(locale)} 
217                        </a> 
218                    </div> 
219                </#list> 
220            </div> 
221        </div> 
222    </#if> 
223</div> 

Tuoreimmat ajankohtaiset

Virhe tapahtui prosessoidessa esitysmallia.
The following has evaluated to null or missing:
==> webArticleHelper  [in template "43104#43145#2794043" at line 18, column 30]

----
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 title = webArticleHelper.getA...  [in template "43104#43145#2794043" at line 18, column 13]
----
1<#assign 
2    pageUrl = "" 
3    headingSize = 3 
4/> 
5 
6<#assign scopeGroupTreePath = themeDisplay.getScopeGroup().treePath?split('/') /> 
7<#assign pirhaGroupId = scopeGroupTreePath[1]?number /> 
8 
9<#assign isAssetDisplayPage = themeDisplay.getLayout().type == "asset_display"  /> 
10 
11<#if entries?has_content> 
12    <div class="pirha-news-list list-simple"> 
13        <#list entries as curEntry> 
14            <#assign assetRenderer = curEntry.getAssetRenderer() /> 
15            <#assign className = assetRenderer.getClassName() /> 
16            <#assign article = assetRenderer.getArticle() /> 
17 
18            <#assign title = webArticleHelper.getArticleFieldValue(article, "title") /> 
19            <#assign lead = webArticleHelper.getArticleFieldValue(article, "lead") /> 
20            <#assign content = webArticleHelper.getArticleFieldValue(article, "content") /> 
21            <#assign image = webArticleHelper.getArticleFieldValue(article, "main_image") /> 
22            <#assign publishDate = curEntry.publishDate?string('d.M.yyyy') /> 
23					  <#assign publishDateISO = curEntry.publishDate?string("yyyy-MM-dd") /> 
24 
25            <#assign pageUrl = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, entry, true)> 
26            <#assign articleDDMStructure = article.getDDMStructure() />		 
27            <#assign typeCategories = webArticleHelper.getAssetCategoriesForArticleInVocabulary(article, pirhaGroupId, "Tyyppi") /> 
28							 
29						<#assign blogThemeName = '' /> 
30 
31            <#if isAssetDisplayPage> 
32                <#assign blogTheme = webArticleHelper.getAssetCategoriesForArticleInVocabulary(article, themeDisplay.getCompany().getGroup().getGroupId(), "Blogien aihealueet") /> 
33 
34                <#list blogTheme as bTheme> 
35                    <#if bTheme?has_content> 
36                        <#assign blogThemeName = bTheme.name /> 
37                        <#if bTheme?index == 1> 
38                            <#break> 
39                        </#if> 
40                    </#if> 
41                </#list> 
42            </#if> 
43 
44            <div class="item mb-4" data-article-id="${article.id}"> 
45                <h${headingSize} class="heading"><a href="${pageUrl}">${title}</a></h${headingSize}> 
46 
47                <div class="meta"> 
48                    <#if typeCategories?has_content> 
49                        <#list typeCategories as category> 
50                            <#if category.getTitle('fi_FI') == 'Uutinen'> 
51                                <#assign categoryColor = 'color--orange-dark' /> 
52														<#elseif category.getTitle('fi_FI') == 'Blogi'> 
53                                <#assign categoryColor = 'color--violet' /> 
54                            <#else> 
55                                <#assign categoryColor = 'color--blue' /> 
56                            </#if> 
57 
58                            <span class="meta-text category ${categoryColor}">${category.getTitle(locale)}</span> 
59                        </#list>                     
60                    </#if> 
61 
62                    <span data-date="${publishDateISO}">${publishDate}</span> 
63										<#if blogThemeName?has_content> 
64                        <div class="blog-theme-name">${blogThemeName}</div> 
65                    </#if> 
66 
67                </div> 
68            </div> 
69        </#list> 
70    </div> 
71</#if> 
72							 
73<#if themeDisplay.getLayout().type == "asset_display"> 
74<style> 
75    .display-page--main-content .component-heading{ 
76        margin-bottom: 1.5rem !important; 
77
78    .display-page--main-content .blog-theme-name{ 
79        font-size: 16px; 
80        color: var(--pirha-black-transparent-70); 
81
82</style> 
83</#if>