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 17, 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 17, column 1] ----
1<#assign
2 title = .vars['reserved-article-title'].data
3 portalURL = themeDisplay.getPortalURL()
4 currentUrl = portalURL + themeDisplay.getURLCurrent()
5 imageUrl = portalURL + .vars['reserved-article-small-image-url'].data
6 srcfb = "https://www.facebook.com/plugins/like.php?href=${currentUrl}&width=172&layout=button_count&action=like&size=small&share=true&height=46&appId"
7 displayDate = .vars['reserved-article-display-date'].data
8 summary = .vars['reserved-article-description'].data/>
9
10
11<#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
12<#if (request.getParameter("plidlayout")?has_content)>
13 <#assign plidlayout = request.getParameter("plidlayout") />
14 <#else>
15 <#assign plidlayout = 2 />
16</#if>
17<#assign layout = layoutService.fetchLayout(plidlayout?number) />
18<#assign curLayout = layoutService.fetchLayout(plid?number) />
19<#assign pageTitle = layout.getName(locale) />
20<#assign pageUrl = themeDisplay.getPathFriendlyURLPublic() + themeDisplay.getSiteGroup().getFriendlyURL() + layout.getFriendlyURL(locale) />
21<#assign curPageTitle = curLayout.getName(locale) />
22<#assign originalLocale = .locale>
23<#setting locale = localeUtil.getDefault()>
24<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")>
25<#assign locale = originalLocale>
26<#assign displayDate = displayDate?string("HH:mm dd/MM/yyyy")>
27
28<script src="https://sp.zalo.me/plugins/sdk.js"></script>
29<liferay-util:html-top outputKey="htmltop">
30 <meta name="url" property="og:url" content="${currentUrl}" />
31 <meta name="type" property="og:type" content="article" />
32 <meta name="title" property="og:title" content="${.vars['reserved-article-title'].data}" />
33 <meta name="image" property="og:image" content="${imageUrl}" >
34</liferay-util:html-top>
35<div class="main-content">
36 <div class="panel" id="main-body">
37 <div class="shortcode-content hreview">
38 <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>
39 <span style="font-size: 17px;padding-left: 12px;font-weight: bold;">${curPageTitle}</span>
40 <div class="article-head">
41 <div class="article-info" style="border-top: 0px;border-bottom: 0px;">
42 <div class="social-buttons left">
43 ${displayDate}
44 </div>
45 <div class="social-buttons right">
46 <a class="social-thing" onclick="voiceSpeak('contentText','voiceSex')"; style="margin-right: 5px;"
47 data-toggle="tooltip" title="Đọc bài viết">
48 <img class="volume-up" src="/o/portal-dt-home-theme/images/icons/trothinh_volume-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
49 </a>
50 <a id="void-pause" class="social-thing" onclick="voicePause()"; style="margin-right: 1px;display:none;"
51 data-toggle="tooltip" title="Tạm dừng đọc">
52 <span class="fa fa-pause" style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"/>
53 </a>
54 <a id="void-resume" class="social-thing" onclick="voiceResume()"; style="margin-right: 1px;display:none;"
55 data-toggle="tooltip" title="Tiếp tục đọc">
56 <span class="fa fa-repeat" style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"></span>
57 </a>
58 <a id="void-stop" class="social-thing" onclick="voiceCancel()"; style="margin-right: 1px;display:none;"
59 data-toggle="tooltip" title="Dừng đọc">
60 <span class="fa fa-stop"style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"/>
61 </a>
62 <a class="social-thing" style="margin-right: 5px;">
63 <img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/>
64 </a>
65 <a class="social-thing" onclick="giamTuongPhan();" style="margin-right: 5px;"
66 data-toggle="tooltip" title="Giảm tương phản">
67 <img src="/o/portal-dt-home-theme/images/icons/trothinh_bright-down-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
68 </a>
69 <a class="social-thing" onclick="tangTuongPhan();" style="margin-right: 5px;"
70 data-toggle="tooltip" title="Tăng tương phản">
71 <img src="/o/portal-dt-home-theme/images/icons/trothinh_bright-up-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
72 </a>
73 <a class="social-thing" style="margin-right: 5px;">
74 <img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/>
75 </a>
76 <a class="social-thing" onclick="fontMinus();" style="margin-right: 5px;"
77 data-toggle="tooltip" title="Giảm cỡ chữ">
78 <img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-down-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
79 </a>
80 <a class="social-thing" onclick="fontDefault();" style="margin-right: 5px;"
81 data-toggle="tooltip" title="Cỡ chữ mặc định">
82 <img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
83 </a>
84 <a class="social-thing" onclick="fontPlus();" style="margin-right: 5px;"
85 data-toggle="tooltip" title="Tăng cỡ chữ">
86 <img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-up-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
87 </a>
88 <a class="social-thing" style="margin-right: 5px;">
89 <img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/>
90 </a>
91 <a class="social-thing" onclick="" style="margin-right: 5px;"
92 data-toggle="tooltip" title="In bài viết">
93 <img src="/o/portal-dt-home-theme/images/icons/trothinh_print-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/>
94 </a>
95 <a class="social-thing" onclick="" style="margin-right: 5px;"
96 data-toggle="tooltip" title="Gửi mail">
97 <img src="/o/portal-dt-home-theme/images/icons/trothinh_mail-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;height:13px"/>
98 </a>
99 </div>
100 <input type="hidden" id="voiceSex" value="Vietnamese Female"></input>
101 <input type="hidden" id="tuongphan" value="3"></input>
102 </div>
103 </div>
104 </div>
105 <div style="clear: both;">
106 <h2 style="color: #ed0678;font-weight: bold;padding-top: 10px;">${title}</h2>
107 </div>
108 <div id="contentText">
109 <b>${summary}</b>
110 ${noiDung.getData()}
111 </div>
112 <div class="article-info">
113 <div class="social-buttons left">
114 <div class="zalo-follow-only-button" data-oaid="3540423014405379625"></div>
115 <div class="zalo-share-button" data-href="" data-oaid="4499765515963062717" data-layout="1" data-color="blue" data-customize=false></div>
116 <iframe src="${srcfb}" width="450" height="35" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe>
117 </div>
118 </div>
119 </div>
120</div>
121<#macro getMetadataField
122 fieldName
123 >
124 <#if stringUtil.split(metadataFields)?seq_contains(fieldName)>
125 <span class="metadata-entry metadata-${fieldName}">
126 <#assign dateFormat = "dd MMM yyyy - HH:mm:ss" />
127
128 <#if stringUtil.equals(fieldName, "author")>
129 <@liferay.language key="by" /> ${htmlUtil.escape(portalUtil.getUserName(assetRenderer.getUserId(), assetRenderer.getUserName()))}
130 <#elseif stringUtil.equals(fieldName, "categories")>
131 <@liferay_asset["asset-categories-summary"]
132 className=curEntry.getClassName()
133 classPK=curEntry.getClassPK()
134 portletURL=renderResponse.createRenderURL()
135 />
136 <#elseif stringUtil.equals(fieldName, "create-date")>
137 ${dateUtil.getDate(curEntry.getCreateDate(), dateFormat, locale)}
138 <#elseif stringUtil.equals(fieldName, "expiration-date")>
139 ${dateUtil.getDate(curEntry.getExpirationDate(), dateFormat, locale)}
140 <#elseif stringUtil.equals(fieldName, "modified-date")>
141 ${dateUtil.getDate(curEntry.getModifiedDate(), dateFormat, locale)}
142 <#elseif stringUtil.equals(fieldName, "priority")>
143 ${curEntry.getPriority()}
144 <#elseif stringUtil.equals(fieldName, "publish-date")>
145 ${dateUtil.getDate(curEntry.getPublishDate(), dateFormat, locale)}
146 <#elseif stringUtil.equals(fieldName, "tags")>
147 <@liferay_asset["asset-tags-summary"]
148 className=curEntry.getClassName()
149 classPK=curEntry.getClassPK()
150 portletURL=renderResponse.createRenderURL()
151 />
152 <#elseif stringUtil.equals(fieldName, "view-count")>
153 ${curEntry.getViewCount()} <@liferay.language key="views" />
154 </#if>
155 </span>
156 </#if>
157</#macro>