Công đoàn Viên chức Tỉnh khai giảng khoá học thanh nhạc cơ bản trong cán bộ, công chức, viên chức, lao động năm 2024
处理模板时发生错误。
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>