Xuất bản thông tin

null Đẩy nhanh tiến độ giải phóng mặt bằng cao tốc Mỹ Thuận - Cần Thơ

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

Tin nổi bật

Tin xem nhiều