Contentverzamelaar

null NGHỊ ĐỊNH SỐ 154/2025/NĐ-CP: QUY ĐỊNH MỚI VỀ TINH GIẢN BIÊN CHẾ

Er trad een fout op tijdens de verwerking van de sjabloon.
Java method "com.sun.proxy.$Proxy2566.getArticle(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy2566 object "com.liferay.journal.change.tracking.internal.service.CTJournalArticleLocalServiceWrapper@54deaff4"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign articlePrimKey = JournalArtic...  [in template "34201#34227#43055" at line 528, column 9]
----
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: 100%; 
77		top: 0; 
78		border-top: 14px solid transparent; 
79		border-bottom: 15px solid transparent; 
80		border-left: 13px solid darkgray; 
81
82	.asset-full-content.clearfix.mb-5.show-asset-title { 
83		margin-bottom: 0 !important; 
84
85	.article-head { 
86		margin-bottom: 0; 
87
88	@media only screen and (max-width: 768px) { 
89		#contentText iframe { 
90			width: 100% !important; 
91
92		.article-head .article-info { 
93			margin-bottom: 0; 
94			padding: 15px 0 8px 0; 
95
96
97	@media only screen and (max-width: 500px) { 
98		.curPage-title { 
99			display: unset !important; 
100
101
102	.paginate-pagination ul { 
103	 
104	margin: 20px 0; 
105	padding: 0; 
106	list-style: none; 
107	 
108
109 
110.paginate-pagination ul:after { 
111	 
112	content: ' '; 
113	display: table; 
114	clear: both; 
115	 
116
117 
118.paginate-pagination ul > li { 
119	 
120	float: left; 
121	margin-right: 3px; 
122	 
123
124 
125.paginate-pagination ul > li > a.page { 
126	 
127	display: block; 
128	height: 30px; 
129	width: 30px; 
130	text-align: center; 
131	line-height: 30px; 
132	border: 1px solid #ddd; 
133	background: white; 
134	text-decoration: none; 
135	cursor: pointer; 
136	 
137
138 
139.paginate-pagination ul > li > a.page:hover { opacity: 0.7; } 
140.paginate-pagination ul > li > a.page.active { opacity: 0.7; cursor: default; } 
141 
142.paginate-pagination ul > li > a.page-next.deactive, 
143.paginate-pagination ul > li > a.page-prev.deactive { opacity: 0.7; cursor: default; } 
144</style> 
145<style> 
146 
147.page_navigation , .alt_page_navigation{ 
148	padding-bottom: 10px; 
149	 
150
151 
152.page_navigation a, .alt_page_navigation a{ 
153float: left; 
154    width: 32px; 
155    text-align: center; 
156    padding: 6px 0; 
157    border: 1px solid #cdcdcd; 
158    border-right: none; 
159    background: #fff; 
160    color: #45afe4; 
161
162.page_navigation a:hover{ 
163    cursor: pointer; 
164    background: rgb(216, 241, 255); 
165
166.ellipse{ 
167	float: left; 
168	 border-right:1px solid #cdcdcd; 
169
170.active_page{ 
171	background-color:#45afe4 !important; 
172	color:#fff !important; 
173
174.component-title{ 
175display: none; 
176
177.portlet-title-text { 
178display: none; 
179
180</style> 
181<script type="text/javascript"> 
182
183(function($) { /*******************************************************************************************/ 
184 
185	$.fn.pajinate = function(options) { 
186		// Set some state information 
187		var current_page = 'current_page'; 
188		var items_per_page = 'items_per_page'; 
189 
190		var meta; 
191 
192		// Setup default option values 
193		var defaults = { 
194			item_container_id: '.content', 
195			items_per_page: 10, 
196			nav_panel_id: '.page_navigation', 
197			nav_info_id: '.info_text', 
198			num_page_links_to_display: 10, 
199			start_page: 0, 
200			wrap_around: false, 
201			nav_label_first: 'First', 
202			nav_label_prev: 'Prev', 
203			nav_label_next: 'Next', 
204			nav_label_last: 'Last', 
205			nav_order: ["first", "prev", "num", "next", "last"], 
206			nav_label_info: 'Showing {0}-{1} of {2} results', 
207			show_first_last: true, 
208			abort_on_small_lists: false, 
209			jquery_ui: false, 
210			jquery_ui_active: "ui-state-highlight", 
211			jquery_ui_default: "ui-state-default", 
212			jquery_ui_disabled: "ui-state-disabled" 
213		}; 
214 
215		var options = $.extend(defaults, options); 
216		var $item_container; 
217		var $page_container; 
218		var $items; 
219		var $nav_panels; 
220		var total_page_no_links; 
221		var jquery_ui_default_class = options.jquery_ui ? options.jquery_ui_default : ''; 
222		var jquery_ui_active_class = options.jquery_ui ? options.jquery_ui_active : ''; 
223		var jquery_ui_disabled_class = options.jquery_ui ? options.jquery_ui_disabled : ''; 
224 
225		return this.each(function() { 
226			$page_container = $(this); 
227			$item_container = $(this).find(options.item_container_id); 
228			$items = $page_container.find(options.item_container_id).children(); 
229 
230			if (options.abort_on_small_lists && options.items_per_page >= $items.size()) return $page_container; 
231 
232			meta = $page_container; 
233 
234			// Initialize meta data 
235			meta.data(current_page, 0); 
236			meta.data(items_per_page, options.items_per_page); 
237 
238			// Get the total number of items 
239			var total_items = $item_container.children().size(); 
240 
241			// Calculate the number of pages needed 
242			var number_of_pages = Math.ceil(total_items / options.items_per_page); 
243 
244			// Construct the nav bar 
245			var more = '<a class="ellipse more">...</a>'; 
246			var less = '<a class="ellipse less">...</a>'; 
247			var first = !options.show_first_last ? '' : '<a class="first_link ' + jquery_ui_default_class + '" href="">' + options.nav_label_first + '</a>'; 
248			var last = !options.show_first_last ? '' : '<a style="border:1px solid #cdcdcd;" class="last_link ' + jquery_ui_default_class + '" href="">' + options.nav_label_last + '</a>'; 
249 
250			var navigation_html = ""; 
251 
252			for (var i = 0; i < options.nav_order.length; i++) { 
253				switch (options.nav_order[i]) { 
254				case "first": 
255					navigation_html += first; 
256					break; 
257				case "last": 
258					navigation_html += last; 
259					break; 
260				case "next": 
261					navigation_html += '<a class="next_link ' + jquery_ui_default_class + '" href="">' + options.nav_label_next + '</a>'; 
262					break; 
263				case "prev": 
264					navigation_html += '<a class="previous_link ' + jquery_ui_default_class + '" href="">' + options.nav_label_prev + '</a>'; 
265					break; 
266				case "num": 
267					navigation_html += less; 
268					var current_link = 0; 
269					while (number_of_pages > current_link) { 
270						navigation_html += '<a  class="page_link ' + jquery_ui_default_class + '" href="" longdesc="' + current_link + '">' + (current_link + 1) + '</a>'; 
271						current_link++; 
272
273					navigation_html += more; 
274					break; 
275				default: 
276					break; 
277
278 
279
280 
281			// And add it to the appropriate area of the DOM	 
282			$nav_panels = $page_container.find(options.nav_panel_id); 
283			$nav_panels.html(navigation_html).each(function() { 
284 
285				$(this).find('.page_link:first').addClass('first'); 
286				$(this).find('.page_link:last').addClass('last'); 
287 
288			}); 
289 
290			// Hide the more/less indicators 
291			$nav_panels.children('.ellipse').hide(); 
292 
293			// Set the active page link styling 
294			$nav_panels.find('.previous_link').next().next().addClass('active_page ' + jquery_ui_active_class); 
295 
296			/* Setup Page Display */ 
297			// And hide all pages 
298			$items.hide(); 
299			// Show the first page			 
300			$items.slice(0, meta.data(items_per_page)).show(); 
301 
302			/* Setup Nav Menu Display */ 
303			// Page number slices 
304			total_page_no_links = $page_container.find(options.nav_panel_id + ':first').children('.page_link').size(); 
305			options.num_page_links_to_display = Math.min(options.num_page_links_to_display, total_page_no_links); 
306 
307			$nav_panels.children('.page_link').hide(); // Hide all the page links 
308			// And only show the number we should be seeing 
309			$nav_panels.each(function() { 
310				$(this).children('.page_link').slice(0, options.num_page_links_to_display).show(); 
311			}); 
312 
313			/* Bind the actions to their respective links */ 
314 
315			// Event handler for 'First' link 
316			$page_container.find('.first_link').click(function(e) { 
317				e.preventDefault(); 
318 
319				movePageNumbersRight($(this), 0); 
320				gotopage(0); 
321			}); 
322 
323			// Event handler for 'Last' link 
324			$page_container.find('.last_link').click(function(e) { 
325				e.preventDefault(); 
326				var lastPage = total_page_no_links - 1; 
327				movePageNumbersLeft($(this), lastPage); 
328				gotopage(lastPage); 
329			}); 
330 
331			// Event handler for 'Prev' link 
332			$page_container.find('.previous_link').click(function(e) { 
333				e.preventDefault(); 
334				showPrevPage($(this)); 
335			}); 
336 
337 
338			// Event handler for 'Next' link 
339			$page_container.find('.next_link').click(function(e) { 
340				e.preventDefault(); 
341				showNextPage($(this)); 
342			}); 
343 
344			// Event handler for each 'Page' link 
345			$page_container.find('.page_link').click(function(e) { 
346				e.preventDefault(); 
347				gotopage($(this).attr('longdesc')); 
348			}); 
349 
350			// Goto the required page 
351			gotopage(parseInt(options.start_page)); 
352			toggleMoreLess(); 
353			if (!options.wrap_around) tagNextPrev(); 
354		}); 
355 
356		function showPrevPage(e) { 
357			new_page = parseInt(meta.data(current_page)) - 1; 
358 
359			// Check that we aren't on a boundary link 
360			if ($(e).siblings('.active_page').prev('.page_link').length == true) { 
361				movePageNumbersRight(e, new_page); 
362				gotopage(new_page); 
363
364			else if (options.wrap_around) { 
365				gotopage(total_page_no_links - 1); 
366
367 
368		}; 
369 
370		function showNextPage(e) { 
371			new_page = parseInt(meta.data(current_page)) + 1; 
372 
373			// Check that we aren't on a boundary link 
374			if ($(e).siblings('.active_page').next('.page_link').length == true) { 
375				movePageNumbersLeft(e, new_page); 
376				gotopage(new_page); 
377
378			else if (options.wrap_around) { 
379				gotopage(0); 
380
381 
382		}; 
383 
384		function gotopage(page_num) { 
385 
386			page_num = parseInt(page_num, 10) 
387 
388			var ipp = parseInt(meta.data(items_per_page)); 
389 
390			// Find the start of the next slice 
391			start_from = page_num * ipp; 
392 
393			// Find the end of the next slice 
394			end_on = start_from + ipp; 
395			// Hide the current page	 
396			var items = $items.hide().slice(start_from, end_on); 
397 
398			items.show(); 
399 
400			// Reassign the active class 
401			$page_container.find(options.nav_panel_id).children('.page_link[longdesc=' + page_num + ']').addClass('active_page ' + jquery_ui_active_class).siblings('.active_page').removeClass('active_page ' + jquery_ui_active_class); 
402 
403			// Set the current page meta data							 
404			meta.data(current_page, page_num); 
405			/*########## Ajout de l'option page courante + nombre de pages*/ 
406	            	var $current_page = parseInt(meta.data(current_page)+1); 
407	            	// Get the total number of items 
408	            	var total_items = $item_container.children().size(); 
409	            	// Calculate the number of pages needed 
410	            	var $number_of_pages = Math.ceil(total_items / options.items_per_page); 
411            		/*##################################################################*/ 
412			$page_container.find(options.nav_info_id).html(options.nav_label_info.replace("{0}", start_from + 1). 
413			replace("{1}", start_from + items.length).replace("{2}", $items.length).replace("{3}", $current_page).replace("{4}", $number_of_pages)); 
414 
415			// Hide the more and/or less indicators 
416			toggleMoreLess(); 
417 
418			// Add a class to the next or prev links if there are no more pages next or previous to the active page 
419			tagNextPrev(); 
420 
421			// check if the onPage callback is available and call it 
422			if (typeof(options.onPageDisplayed) !== "undefined" ) { 
423				options.onPageDisplayed.call(this, page_num + 1) 
424
425 
426
427 
428		// Methods to shift the diplayed index of page numbers to the left or right 
429 
430 
431		function movePageNumbersLeft(e, new_p) { 
432			var new_page = new_p; 
433 
434			var $current_active_link = $(e).siblings('.active_page'); 
435 
436			if ($current_active_link.siblings('.page_link[longdesc=' + new_page + ']').css('display') == 'none') { 
437 
438				$nav_panels.each(function() { 
439					$(this).children('.page_link').hide() // Hide all the page links 
440					.slice(parseInt(new_page - options.num_page_links_to_display + 1), new_page + 1).show(); 
441				}); 
442
443 
444
445 
446		function movePageNumbersRight(e, new_p) { 
447			var new_page = new_p; 
448 
449			var $current_active_link = $(e).siblings('.active_page'); 
450 
451			if ($current_active_link.siblings('.page_link[longdesc=' + new_page + ']').css('display') == 'none') { 
452 
453				$nav_panels.each(function() { 
454					$(this).children('.page_link').hide() // Hide all the page links 
455					.slice(new_page, new_page + parseInt(options.num_page_links_to_display)).show(); 
456				}); 
457
458
459 
460		// Show or remove the ellipses that indicate that more page numbers exist in the page index than are currently shown 
461 
462 
463		function toggleMoreLess() { 
464 
465			if (!$nav_panels.children('.page_link:visible').hasClass('last')) { 
466				$nav_panels.children('.more').show(); 
467
468			else { 
469				$nav_panels.children('.more').hide(); 
470
471 
472			if (!$nav_panels.children('.page_link:visible').hasClass('first')) { 
473				$nav_panels.children('.less').show(); 
474
475			else { 
476				$nav_panels.children('.less').hide(); 
477
478
479 
480		/* Add the style class ".no_more" to the first/prev and last/next links to allow custom styling */ 
481 
482		function tagNextPrev() { 
483			if ($nav_panels.children('.last').hasClass('active_page')) { 
484				$nav_panels.children('.next_link').add('.last_link').addClass('no_more ' + jquery_ui_disabled_class); 
485
486			else { 
487				$nav_panels.children('.next_link').add('.last_link').removeClass('no_more ' + jquery_ui_disabled_class); 
488
489 
490			if ($nav_panels.children('.first').hasClass('active_page')) { 
491				$nav_panels.children('.previous_link').add('.first_link').addClass('no_more ' + jquery_ui_disabled_class); 
492
493			else { 
494				$nav_panels.children('.previous_link').add('.first_link').removeClass('no_more ' + jquery_ui_disabled_class); 
495
496
497 
498	}; 
499 
500})(jQuery); 
501</script> 
502<script type="text/javascript"> 
503			$(document).ready(function(){ 
504				$('#paging_container5').pajinate({ 
505					nav_label_first : '<<', 
506					nav_label_last : '>>', 
507					nav_label_prev : '<', 
508					nav_label_next : '>' 
509				}); 
510			});			 
511			 
512		</script> 
513<#assign  
514    title = .vars['reserved-article-title'].data 
515	portalURL = themeDisplay.getPortalURL()  
516	currentUrl = portalURL + themeDisplay.getURLCurrent()  
517	imageUrl = portalURL + .vars['reserved-article-small-image-url'].data  
518	srcfb = "https://www.facebook.com/plugins/like.php?href=${currentUrl}&width=172&layout=button_count&action=like&size=small&share=true&height=46&appId"  
519	displayDate = .vars['reserved-article-display-date'].data 
520	summary = .vars['reserved-article-description'].data/> 
521 
522	<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
523 
524	<#assign scopeId = themeDisplay.getScopeGroupId()> 
525 
526	<#assign contentId = .vars['reserved-article-id'].data> 
527 
528	<#assign articlePrimKey = JournalArticleLocalService.getArticle(getterUtil.getLong(scopeId), contentId).resourcePrimKey> 
529 
530	<#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
531	<#assign articleCatId = catLocalService.getCategoryIds("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey))> 
532	 
533	<#assign categoryList = catLocalService.getAssetEntryAssetCategories(getterUtil.getLong(articlePrimKey))> 
534     
535	<#assign assetEntryQueryService = objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')> 
536 
537	<#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')> 
538	 
539 
540	<#assign search = assetEntryQuery.setAllCategoryIds(articleCatId)> 
541	<#assign search = assetEntryQuery.setOrderByCol1("publishDate")/> 
542    <#assign search = assetEntryQuery.setOrderByType1("DESC")/> 
543 
544	<#assign teste = assetEntryQueryService.getEntries(assetEntryQuery) 
545			totalPage = 0/> 
546 
547<#assign layoutService =  serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
548<#if (request.getParameter("plidlayout")?has_content)> 
549    <#assign plidlayout = request.getParameter("plidlayout") /> 
550    <#else> 
551    <#assign plidlayout = 2 /> 
552</#if> 
553<#assign layout = layoutService.fetchLayout(plidlayout?number) /> 
554<#assign curLayout = layoutService.fetchLayout(plid?number) /> 
555<#assign pageTitle = layout.getName(locale) /> 
556<#assign pageUrl = layout.getFriendlyURL(locale) /> 
557<#assign curPageTitle = curLayout.getName(locale) /> 
558<#assign originalLocale = .locale> 
559<#setting locale = localeUtil.getDefault()> 
560<#assign displayDate = displayDate?datetime("EEE, d MMM yyyy HH:mm:ss Z")> 
561<#assign locale = originalLocale> 
562<#assign displayDate = displayDate?string("HH:mm dd/MM/yyyy")> 
563 
564<#assign listLayoutDHD = [5474,5512,179]> 
565<#assign layo = themeDisplay.getPlid() /> 
566 
567<script src="https://sp.zalo.me/plugins/sdk.js"></script> 
568<liferay-util:html-top outputKey="htmltop"> 
569    <meta name="url" property="og:url" content="${currentUrl}" /> 
570	<meta name="type" property="og:type" content="article" /> 
571    <meta name="title" property="og:title" content="${.vars['reserved-article-title'].data}" /> 
572    <meta name="image" property="og:image" content="${imageUrl}" > 
573</liferay-util:html-top> 
574 
575 
576 
577<div class="row"> 
578  <div class="col-8"> 
579   
580   
581  <#if listLayoutDHD?seq_index_of(layo) &gt; -1 > 
582		        <div class="#"> 
583                	<ul class="breadcrumb"> 
584                		<li class="breadcrumb-item crum1"><a href="/home">Trang chủ</a></li> 
585                		<li class="breadcrumb-item active">Tin tức</li> 
586                	</ul> 
587                </div> 
588                <#else> 
589				<span style="position: relative;font-weight: bold;font-size: 17px;border-left: 3px solid #ed0678;padding: 5px;background-color: darkgrey;" class="tieuDe-asset"> 
590					<a href="${pageUrl}">${pageTitle}</a> 
591				</span> 
592				<#assign journalArticleId = .vars['reserved-article-id'].data> 
593				<#assign journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]> 
594				<#assign assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]> 
595 
596				<#assign articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)/> 
597				<#assign categoryList=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) > 
598				 
599				<#list categoryList as thisCategory> 
600					<#if (thisCategory_index==0)> 
601						<span class="curPage-title" style="font-size: 17px;padding-left: 17px;font-weight: bold;">${thisCategory.getName()}</span> 
602					</#if> 
603				</#list> 
604			</#if> 
605			 
606			<div class="article-head"> 
607				<div class="article-info" style="border-top: 0px;border-bottom: 0px;margin-left: 11px;"> 
608					<div class="social-buttons left"> 
609                        ${displayDate} 
610					</div> 
611					<div class="social-buttons right"> 
612					    <a class="social-thing" onclick="voiceSpeak('contentText','voiceSex')"; style="margin-right: 5px;" 
613							data-toggle="tooltip" title="Đọc bài viết"> 
614							<img class="volume-up" src="/o/portal-dt-home-theme/images/icons/trothinh_volume-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
615						</a> 
616						<a id="void-pause" class="social-thing" onclick="voicePause()"; style="margin-right: 1px;display:none;" 
617							data-toggle="tooltip" title="Tạm dừng đọc"> 
618							<span class="fa fa-pause" style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"/> 
619						</a> 
620						<a id="void-resume" class="social-thing" onclick="voiceResume()"; style="margin-right: 1px;display:none;" 
621							data-toggle="tooltip" title="Tiếp tục đọc"> 
622							<span class="fa fa-repeat" style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"></span> 
623						</a> 
624						<a id="void-stop" class="social-thing" onclick="voiceCancel()"; style="margin-right: 1px;display:none;" 
625							data-toggle="tooltip" title="Dừng đọc"> 
626							<span class="fa fa-stop"style="vertical-align: middle;opacity: 1;width: 13px;color: dimgray;"/> 
627						</a> 
628						<a class="social-thing" style="margin-right: 5px;"> 
629							<img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/> 
630						</a> 
631						<a class="social-thing" onclick="giamTuongPhan();" style="margin-right: 5px;" 
632							data-toggle="tooltip" title="Giảm tương phản"> 
633							<img src="/o/portal-dt-home-theme/images/icons/trothinh_bright-down-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
634						</a> 
635						<a class="social-thing" onclick="tangTuongPhan();" style="margin-right: 5px;" 
636							data-toggle="tooltip" title="Tăng tương phản"> 
637							<img src="/o/portal-dt-home-theme/images/icons/trothinh_bright-up-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
638						</a> 
639						<a class="social-thing" style="margin-right: 5px;"> 
640							<img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/> 
641						</a> 
642						<a class="social-thing" onclick="fontMinus();" style="margin-right: 5px;" 
643							data-toggle="tooltip" title="Giảm cỡ chữ"> 
644							<img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-down-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
645						</a> 
646						<a class="social-thing" onclick="fontDefault();" style="margin-right: 5px;" 
647							data-toggle="tooltip" title="Cỡ chữ mặc định"> 
648							<img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
649						</a> 
650						<a class="social-thing" onclick="fontPlus();" style="margin-right: 5px;" 
651							data-toggle="tooltip" title="Tăng cỡ chữ"> 
652							<img src="/o/portal-dt-home-theme/images/icons/trothinh_zoom-up-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
653						</a> 
654						<a class="social-thing" style="margin-right: 5px;"> 
655							<img src="/o/portal-dt-home-theme/images/icons/trothinh_wall-ico.png" style="vertical-align: middle;opacity: 1;width: 1px;height: 13px"/> 
656						</a> 
657						<a class="social-thing" onclick="printPage('contentText');" style="margin-right: 5px;" 
658							data-toggle="tooltip" title="In bài viết"> 
659							<img src="/o/portal-dt-home-theme/images/icons/trothinh_print-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;"/> 
660						</a> 
661						<a class="social-thing" href="https://mail.google.com/mail/?view=cm&fs=1&su=${title}&body=${currentUrl}" style="margin-right: 5px;" 
662							data-toggle="tooltip" title="Gửi mail" target="_blank"> 
663							<img src="/o/portal-dt-home-theme/images/icons/trothinh_mail-btn.png" style="vertical-align: middle;opacity: 1;width: 16px;height:13px"/> 
664						</a> 
665					</div> 
666					<input type="hidden" id="voiceSex" value="Vietnamese Female"></input> 
667					<input type="hidden" id="tuongphan" value="3"></input> 
668				</div> 
669			</div> 
670		 
671		<div style="margin:10px;  text-align: justify"> 
672	        <h2 class="title-divvv" style="color: #ed0678;font-weight: bold; text-align: justify">${title}</h2> 
673	    </div> 
674		<div id="contentText"  style="margin:10px;  text-align: justify"> 
675		    <b>${summary}</b> 
676		    ${noiDung.getData()} 
677		</div> 
678		<div class="article-info"> 
679			<div class="social-buttons"> 
680				<a href="#"><img src="https://dongthap.gov.vn/documents/34223/36207/quantam-btn.jpg/03716e20-b334-f2ab-e186-370511edfc77?t=1594708727042" style="width: 80px; height: 20px; margin-right: 2px"></a> 
681                <div class="zalo-follow-only-button" data-oaid="3540423014405379625" style="width: 88px;"></div> 
682                <div class="zalo-share-button" data-href="" data-oaid="4499765515963062717" data-layout="1" data-color="blue" data-customize=false></div> 
683                <iframe src="${srcfb}" width="140" height="35" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe> 
684		    </div> 
685			<#if listLayoutDHD?seq_index_of(layo) &gt; -1 > 
686				<#if teste?has_content> 
687					<div class="tinkhac"> 
688						<div class="bg-tinkhac"></div> 
689						<ul class="list-unstyled"> 
690						<#list teste as curEntryyy> 
691							<#assign  
692							renderer = curEntryyy.getAssetRenderer()  
693							className = renderer.getClassName() /> 
694						<#if className == "com.liferay.journal.model.JournalArticle"> 
695							<#assign  
696									title = curEntryyy.getTitle(locale)  
697									article = renderer.getArticle()  
698									description = article.getDescription(locale)  
699									curEntryyy = curEntryyy  
700									viewURL = "/chi-tiet-chuyen-trang-dh-dang/-/asset_publisher/hPvLbtAWEWEb/content/id/${curEntryyy.getEntryId()}?plidlayout=${themeDisplay.getLayout().getPlid()}" /> 
701							<#if description?has_content && description?length &gt; 300> 
702								<#assign description = description?substring(0,300) + " ..."/> 
703							</#if> 
704 
705									<#if curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest)??> 
706										<#assign smallImageUrl = curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest) > 
707										<#else> 
708											<#assign smallImageUrl = "" > 
709									</#if> 
710									<li><a href="${viewURL}">${title}</a></li> 
711							 
712						</#if> 
713						</#list> 
714						</ul> 
715					</div> 
716				</#if> 
717			<#else> 
718   
719   
720  </div> 
721  </div> 
722  <div class="col-4" style="padding-left:20px"> 
723   
724   
725  <div class="social-buttons right"> 
726				<div> 
727					<p class="other-news">Xem thêm các tin khác </p> 
728				</div> 
729				<div class="row ml-0 mr-0 relatedentry" id="0"> 
730				<div id="paging_container5"> 
731					<ul class="content" style="padding-bottom: 15px;"> 
732					<#list teste as curEntryyy> 
733						<#assign  
734						renderer = curEntryyy.getAssetRenderer()  
735						className = renderer.getClassName() /> 
736						<#if className == "com.liferay.journal.model.JournalArticle"> 
737							<#assign  
738								title2 = curEntryyy.getTitle(locale)  
739								article2 = renderer.getArticle() 
740								publishdate2 = curEntryyy.getPublishDate() 
741								viewcount2 = curEntryyy.getViewCount()   
742								description2 = article2.getDescription(locale) 
743								curEntryyy = curEntryyy 
744								viewURL2 = themeDisplay.getPathFriendlyURLPublic() + themeDisplay.getSiteGroup().getFriendlyURL() + "/chi-tiet-bai-viet/-/asset_publisher/1mOzUrGkrdAE/content/id/${curEntryyy.getEntryId()}?plidlayout=${themeDisplay.getLayout().getPlid()}"/> 
745								 
746							<#if curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest)??> 
747								<#assign smallImageUrl = curEntryyy.getAssetRenderer().getThumbnailPath(renderRequest) > 
748								<#else> 
749									<#assign smallImageUrl = "" > 
750							</#if> 
751						 
752								<li style="margin-top:10px"> 
753								<div class="col-md-12"> 
754									<div class="row ml-0 mr-0"> 
755										<div class="col-sm-3"> 
756											<a href="${viewURL2}"><img src="${smallImageUrl}" alt="img" class="img-fluid w-100 other-imgs"></a> 
757										</div> 
758										<div class="col-sm-9 pl-sm-2"> 
759											<a href="${viewURL2}"><p style="margin-bottom: 5px;" class="limit-tit">${title2}</p></a> 
760											<span class="date-span">${publishdate2}</span> 
761										</div> 
762									</div> 
763								</div> 
764								</li> 
765														 
766						</#if> 
767					</#list> 
768					</ul>	 
769				<div class="page_navigation"></div> 
770				</div> 
771				 
772				</div> 
773			</div> 
774			</#if> 
775			<#if teste?has_content && teste?length &gt; 0> 
776			<div style="text-align: center"> 
777				 
778			</div> 
779			</#if> 
780		</div> 
781   
782  </div> 

Banner 365

Contentverzamelaar