null Công đoàn ngành Giáo dục Tỉnh hưởng ứng Tháng công nhân năm 2022 với nhiều hoạt động thiết thực

Er trad een fout op tijdens de verwerking van de sjabloon.
The following has evaluated to null or missing:
==> layoutService.fetchLayout(plidlayout?number)  [in template "34201#34227#989033" at line 127, column 19]

----
Tip: If the failing expression is known to be 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 layout = layoutService.fetchL...  [in template "34201#34227#989033" at line 127, column 1]
----
1<script src="https://dongthap.gov.vn/documents/938809/954379/news.js"></script> 
2<style> 
3	.other-news { 
4        color: #cb373b; 
5        font-weight: bold; 
6        margin-top: 5px; 
7        margin-bottom: 3px; 
8        overflow: hidden; 
9
10    .other-news:after { 
11        content:""; 
12        display: inline-block; 
13        height: 0.5em; 
14        vertical-align: bottom; 
15        width: 100%; 
16        margin-right: -100%; 
17        margin-left: 10px; 
18        border-top: 1px solid #cb373b; 
19
20	.date-span { 
21        color: #888888; 
22        font-size: 14px; 
23        font-weight: normal; 
24
25	.limit-tit { 
26        display: block; 
27        text-overflow: ellipsis; 
28        word-wrap: break-word; 
29        overflow: hidden; 
30        max-height: 6em; 
31        display: -webkit-box; 
32        -webkit-line-clamp: 2; 
33        -webkit-box-orient: vertical; 
34        margin: 0; 
35
36	@media only screen and (min-width: 768px) { 
37		.other-imgs { 
38			height: 60px; 
39
40
41	@media only screen and (max-width: 500px) { 
42		.curPage-title { 
43			display: none; 
44
45		.title-divvv { 
46			text-align: justify; 
47    		margin-top: 50px; 
48
49
50	.pagination2 { 
51		display: inline-block; 
52
53 
54	.pagination2 a { 
55	    cursor: pointer; 
56		color: black; 
57		float: left; 
58		padding: 8px 16px; 
59		text-decoration: none; 
60		transition: background-color .3s; 
61		border: 1px solid #ddd; 
62		margin: 0 4px; 
63
64 
65	.pagination2 a.active { 
66		background-color: #4CAF50; 
67		color: white; 
68		border: 1px solid #4CAF50; 
69
70 
71	.pagination2 a:hover:not(.active) { 
72		background-color: #ddd; 
73
74	.tieuDe-asset::after { 
75		position: absolute; 
76		content: ""; 
77		left: 94px; 
78		top: -6px; 
79		border-top: 14px solid transparent; 
80		border-bottom: 15px solid transparent; 
81		border-left: 13px solid darkgray; 
82
83	.component-title 
84
85	display: none; 
86
87	.metadata-author 
88
89	display: none; 
90
91</style> 
92<#assign  
93    title = .vars['reserved-article-title'].data 
94	portalURL = themeDisplay.getPortalURL()  
95	currentUrl = portalURL + themeDisplay.getURLCurrent()  
96	imageUrl = portalURL + .vars['reserved-article-small-image-url'].data  
97	srcfb = "https://www.facebook.com/plugins/like.php?href=${currentUrl}&width=172&layout=button_count&action=like&size=small&share=true&height=46&appId"  
98	displayDate = .vars['reserved-article-display-date'].data 
99	summary = .vars['reserved-article-description'].data/> 
100 
101	<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
102 
103	<#assign scopeId = themeDisplay.getScopeGroupId()> 
104 
105	<#assign contentId = .vars['reserved-article-id'].data> 
106 
107	<#assign articlePrimKey = JournalArticleLocalService.getArticle(getterUtil.getLong(scopeId), contentId).resourcePrimKey> 
108 
109	<#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
110	<#assign articleCatId = catLocalService.getCategoryIds("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey))> 
111 
112	<#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')> 
113 
114	<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')> 
115 
116	<#assign search = assetEntryQuery.setAllCategoryIds(articleCatId)> 
117 
118	<#assign teste = assetEntryQueryService.getEntries(assetEntryQuery) 
119			totalPage = 0/> 
120 
121<#assign layoutService =  serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
122<#if (request.getParameter("plidlayout")?has_content)> 
123    <#assign plidlayout = request.getParameter("plidlayout") /> 
124    <#else> 
125    <#assign plidlayout = 2 /> 
126</#if> 
127<#assign layout = layoutService.fetchLayout(plidlayout?number) /> 
128<#assign curLayout = layoutService.fetchLayout(plid?number) /> 
129<#assign pageTitle = layout.getName(locale) /> 
130<#assign pageUrl = layout.getFriendlyURL(locale) /> 
131<#assign curPageTitle = curLayout.getName(locale) /> 
132<#assign originalLocale = .locale> 
133<#setting locale = localeUtil.getDefault()> 
134<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
135<#assign locale = originalLocale> 
136<#assign displayDate = displayDate?string("HH:mm dd/MM/yyyy")> 
137<script src="https://sp.zalo.me/plugins/sdk.js"></script> 
138<liferay-util:html-top outputKey="htmltop"> 
139    <meta name="url" property="og:url" content="${currentUrl}" /> 
140	<meta name="type" property="og:type" content="article" /> 
141    <meta name="title" property="og:title" content="${.vars['reserved-article-title'].data}" /> 
142    <meta name="image" property="og:image" content="${imageUrl}" > 
143</liferay-util:html-top> 
144<div class="main-content"> 
145	<div class="panel" id="main-body"> 
146		<div class="shortcode-content hreview"> 
147		    <#if currentUrl?index_of("chi-tiet-chuyen-trang-dh-dang") &gt; -1> 
148		        <div class="brumnoidung"> 
149                	<ul class="breadcrumb"> 
150                		<li class="breadcrumb-item crum1"><a href="/home">Trang chủ</a></li> 
151                		<li class="breadcrumb-item active">Tin tức</li> 
152                	</ul> 
153                </div> 
154                <#else> 
155                <span style="font-weight: bold;font-size: 17px;border-left: 3px solid #ed0678;padding: 5px;background-color: darkgrey;" class="tieuDe-asset"><a href="${pageUrl}">${pageTitle}</a></span> 
156			<span class="curPage-title" style="font-size: 17px;padding-left: 12px;font-weight: bold;">${curPageTitle}</span> 
157		    </#if> 
158			 
159			<div class="article-head"> 
160				<div class="article-info" style="border-top: 0px;border-bottom: 0px;"> 
161					<div class="social-buttons left"> 
162                        ${displayDate} 
163					</div> 
164					<div class="social-buttons right"> 
165					    <a class="social-thing" onclick="voiceSpeak('contentText','voiceSex')"; style="margin-right: 5px;" 
166							data-toggle="tooltip" title="Đọc bài viết"> 
167							<img class="volume-up" src="/o/portal-dt-home-theme/images/icons/trothinh_volume-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
168						</a> 
169						<a id="void-pause" class="social-thing" onclick="voicePause()"; style="margin-right: 1px;display:none;" 
170							data-toggle="tooltip" title="Tạm dừng đọc"> 
171							<span class="fa fa-pause" style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"/> 
172						</a> 
173						<a id="void-resume" class="social-thing" onclick="voiceResume()"; style="margin-right: 1px;display:none;" 
174							data-toggle="tooltip" title="Tiếp tục đọc"> 
175							<span class="fa fa-repeat" style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"></span> 
176						</a> 
177						<a id="void-stop" class="social-thing" onclick="voiceCancel()"; style="margin-right: 1px;display:none;" 
178							data-toggle="tooltip" title="Dừng đọc"> 
179							<span class="fa fa-stop"style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"/> 
180						</a> 
181						<a class="social-thing" style="margin-right: 5px;"> 
182							<img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/> 
183						</a> 
184						<a class="social-thing" onclick="giamTuongPhan();" style="margin-right: 5px;" 
185							data-toggle="tooltip" title="Giảm tương phản"> 
186							<img src="/o/portal-dt-home-theme/images/icons/trothinh_bright-down-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
187						</a> 
188						<a class="social-thing" onclick="tangTuongPhan();" style="margin-right: 5px;" 
189							data-toggle="tooltip" title="Tăng tương phản"> 
190							<img src="/o/portal-dt-home-theme/images/icons/trothinh_bright-up-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
191						</a> 
192						<a class="social-thing" style="margin-right: 5px;"> 
193							<img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/> 
194						</a> 
195						<a class="social-thing" onclick="fontMinus();" style="margin-right: 5px;" 
196							data-toggle="tooltip" title="Giảm cỡ chữ"> 
197							<img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-down-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
198						</a> 
199						<a class="social-thing" onclick="fontDefault();" style="margin-right: 5px;" 
200							data-toggle="tooltip" title="Cỡ chữ mặc định"> 
201							<img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
202						</a> 
203						<a class="social-thing" onclick="fontPlus();" style="margin-right: 5px;" 
204							data-toggle="tooltip" title="Tăng cỡ chữ"> 
205							<img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-up-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
206						</a> 
207						<a class="social-thing" style="margin-right: 5px;"> 
208							<img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/> 
209						</a> 
210						<a class="social-thing" onclick="printPage('contentText');" style="margin-right: 5px;" 
211							data-toggle="tooltip" title="In bài viết"> 
212							<img src="/o/portal-dt-home-theme/images/icons/trothinh_print-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
213						</a> 
214						<a class="social-thing" href="https://mail.google.com/mail/?view=cm&fs=1&su=${title}&body=${currentUrl}" style="margin-right: 5px;" 
215							data-toggle="tooltip" title="Gửi mail" target="_blank"> 
216							<img src="/o/portal-dt-home-theme/images/icons/trothinh_mail-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;height:13px"/> 
217						</a> 
218					</div> 
219					<input type="hidden" id="voiceSex" value="Vietnamese Female"></input> 
220					<input type="hidden" id="tuongphan" value="3"></input> 
221				</div> 
222			</div> 
223		</div> 
224		<div style="margin:10px"> 
225	        <h2 class="title-divvv" style="color: #ed0678;font-weight: bold;">${title}</h2> 
226	    </div> 
227		<div id="contentText"  style="margin:10px"> 
228		    <b>${summary}</b> 
229		    ${noiDung.getData()} 
230		</div> 
231		<div class="article-info"> 
232			<div class="social-buttons left"> 
233                <div class="zalo-follow-only-button" data-oaid="3540423014405379625"></div> 
234                <div class="zalo-share-button" data-href="" data-oaid="4499765515963062717" data-layout="1" data-color="blue" data-customize=false></div> 
235                <iframe src="${srcfb}" width="450" height="35" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe> 
236		    </div> 
237			<div class="social-buttons right"> 
238				<div> 
239					<p class="other-news">CÓ THỂ BẠN QUAN TÂM</p> 
240				</div> 
241				<div class="row ml-0 mr-0 relatedentry" id="0"> 
242					 
243					<#list teste as curEntryyy> 
244						<#assign  
245						renderer = curEntryyy.getAssetRenderer()  
246						className = renderer.getClassName() /> 
247						<#if className == "com.liferay.journal.model.JournalArticle"> 
248							<#assign  
249								title2 = curEntryyy.getTitle(locale)  
250								article2 = renderer.getArticle() 
251								publishdate2 = curEntryyy.getPublishDate() 
252								viewcount2 = curEntryyy.getViewCount()   
253								description2 = article2.getDescription(locale) 
254								curEntryyy = curEntryyy 
255								viewURL2 = themeDisplay.getPathFriendlyURLPublic() + themeDisplay.getSiteGroup().getFriendlyURL() + "/chi-tiet-bai-viet/-/asset_publisher/pmseXXmDIV9K/content/id/${curEntryyy.getEntryId()}?plidlayout=${themeDisplay.getLayout().getPlid()}"/> 
256								 
257							<#if curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest)??> 
258								<#assign smallImageUrl = curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest) > 
259								<#else> 
260									<#assign smallImageUrl = "" > 
261							</#if> 
262							<#if (curEntryyy_index % 6 == 0 && curEntryyy_index > 1)> 
263								<#assign nameDiv = (curEntryyy_index/6)?int  
264										totalPage = totalPage + 1 /> 
265								</div> 
266								<div style="display:none" class="row ml-0 mr-0 relatedentry" id="${nameDiv}"> 
267							</#if> 
268							<#if (curEntryyy_index % 2 == 0)> 
269								<div class="col-md-6 pr-md-2 mb-2"> 
270									<div class="row ml-0 mr-0"> 
271										<div class="col-sm-3"> 
272											<a href="${viewURL2}"><img src="${smallImageUrl}" alt="img" class="img-fluid w-100 other-imgs"></a> 
273										</div> 
274										<div class="col-sm-9 pl-sm-2"> 
275											<a href="${viewURL2}"><p style="margin-bottom: 5px;" class="limit-tit">${title2}</p></a> 
276											<span class="date-span">${publishdate2}</span> 
277										</div> 
278									</div> 
279								</div> 
280							<#elseif (curEntryyy_index % 2 != 0)> 
281								<div class="col-md-6 pl-md-2 mb-2"> 
282									<div class="row ml-0 mr-0"> 
283										<div class="col-sm-3"> 
284											<a href="${viewURL2}"><img src="${smallImageUrl}" alt="img" class="img-fluid w-100 other-imgs"></a> 
285										</div> 
286										<div class="col-sm-9 pl-sm-2"> 
287											<a href="${viewURL2}"><p style="margin-bottom: 5px;" class="limit-tit">${title2}</p></a> 
288											<span class="date-span">${publishdate2}</span> 
289										</div> 
290									</div> 
291								</div> 
292							</#if> 
293						</#if> 
294					</#list> 
295				</div> 
296			</div> 
297		</div> 
298 
299		<div class="pagination2 float-right mt-3"> 
300			<a onclick="beginP();">&laquo;</a> 
301			<a onclick="previousP();">&#8249;</a> 
302			<a onclick="nextP();">&#8250;</a> 
303			<a onclick="endP();">&raquo;</a> 
304		</div> 
305		<div> 
306			<input type="hidden" value="${totalPage}" id="totalPage"/> 
307			<input type="hidden" value="0" id="curPage"/> 
308		</div> 
309	</div> 
310</div> 
311<#macro getMetadataField 
312 	fieldName 
313
314 	<#if stringUtil.split(metadataFields)?seq_contains(fieldName)> 
315 		<span class="metadata-entry metadata-${fieldName}"> 
316 			<#assign dateFormat = "dd MMM yyyy - HH:mm:ss" /> 
317  
318 			<#if stringUtil.equals(fieldName, "author")> 
319 				<@liferay.language key="by" /> ${htmlUtil.escape(portalUtil.getUserName(assetRenderer.getUserId(), assetRenderer.getUserName()))} 
320 			<#elseif stringUtil.equals(fieldName, "categories")> 
321 				<@liferay_asset["asset-categories-summary"] 
322 					className=curEntry.getClassName() 
323 					classPK=curEntry.getClassPK() 
324 					portletURL=renderResponse.createRenderURL() 
325 				/> 
326 			<#elseif stringUtil.equals(fieldName, "create-date")> 
327 				${dateUtil.getDate(curEntry.getCreateDate(), dateFormat, locale)} 
328 			<#elseif stringUtil.equals(fieldName, "expiration-date")> 
329 				${dateUtil.getDate(curEntry.getExpirationDate(), dateFormat, locale)} 
330 			<#elseif stringUtil.equals(fieldName, "modified-date")> 
331 				${dateUtil.getDate(curEntry.getModifiedDate(), dateFormat, locale)} 
332 			<#elseif stringUtil.equals(fieldName, "priority")> 
333 				${curEntry.getPriority()} 
334 			<#elseif stringUtil.equals(fieldName, "publish-date")> 
335 				${dateUtil.getDate(curEntry.getPublishDate(), dateFormat, locale)} 
336 			<#elseif stringUtil.equals(fieldName, "tags")> 
337 				<@liferay_asset["asset-tags-summary"] 
338 					className=curEntry.getClassName() 
339 					classPK=curEntry.getClassPK() 
340 					portletURL=renderResponse.createRenderURL() 
341 				/> 
342 			<#elseif stringUtil.equals(fieldName, "view-count")> 
343 				${curEntry.getViewCount()} <@liferay.language key="views" /> 
344 			</#if> 
345 		</span> 
346 	</#if> 
347</#macro> 
348<script src="https://dongthap.gov.vn/documents/938809/954379/news.js"></script>