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#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") > -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();">«</a>
301 <a onclick="previousP();">‹</a>
302 <a onclick="nextP();">›</a>
303 <a onclick="endP();">»</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>