Vừa qua, Ban chấp hành Công đoàn phối hợp với Chính quyền Sở Thông tin và Truyền thông tổ chức Hội nghị CCVC và tổ chức đối thoại giữa người đứng đầu cơ quan với CCVC và người lao động năm 2025.
Từ ngày 22,23/2, giải Marathon quốc tế “Chạy trên cung đường Hạnh Phúc” tỉnh Hà Giang lần thứ VI năm 2025 đã chính thức diễn ra tại huyện Mèo Vạc.
“ Hỷ sắc lạc hồng” năm 2025 vừa diễn ra đã tái hiện lại đám cưới truyền thống đầy sắc màu giữa cao nguyên đá Hà Giang.
An error occurred while processing the template.
The following has evaluated to null or missing:
==> categoryName  [in template "20098#20124#45214" at line 45, column 15]

----
Tip: If the failing expression is known to 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: ${categoryName}  [in template "20098#20124#45214" at line 45, column 13]
----
1<#assign journalArticleId = .vars['reserved-article-id'].data/> 
2<#assign originalLocale = locale> 
3<#assign date = .vars['reserved-article-create-date'].data?date("EEE, dd MMM yyyy hh:mm:ss zzz")> 
4 
5<#-- Create date time formart use originalLocale (Your site localle)  --> 
6<#assign dateTimeFormat = languageUtil.get(originalLocale, "dd/MM/yyyy")> 
7 
8 
9<#assign journalArticleResourceLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")> 
10 
11<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
12 
13<#assign articleResourcePK = journalArticleResourceLocalService.getArticleResourcePrimKey(groupId, journalArticleId)/> 
14 
15<#assign categoryList=assetCategoryLocalService.getCategoryNames("com.liferay.journal.model.JournalArticle",articleResourcePK) > 
16 
17 
18<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") /> 
19 
20<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
21 
22<#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', articleResourcePK) > 
23 
24<#assign assetEntryQuery = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")/> 
25 
26<#list asset.getCategories() as category> 
27    <#assign categoryName = category.getName() /> 
28    <#assign categories = [category.getCategoryId()] /> 
29</#list> 
30 
31<#assign 
32assignedCategoryIds=assetEntryQuery.setAnyCategoryIds(categories) 
33orderM = assetEntryQuery.setOrderByCol1("modifiedDate") 
34limited = assetEntryQuery.setEnd(10) 
35assetEntryList = assetEntryLocalService.getEntries(assetEntryQuery) 
36viewCounter = assetEntryLocalService.incrementViewCounter(themeDisplay.getUserId(), asset) 
37/> 
38 
39<#-- Result  --> 
40<#assign date = date?string(dateTimeFormat)> 
41 
42<div class="card"> 
43    <div class="card-header"> 
44        <h4 class="text-white text-left mb-0"> 
45            ${categoryName} 
46        </h4> 
47    </div> 
48    <div class="card-body"> 
49        <div class="pb-2 mb-2 border-bottom"> 
50            <h3>${.vars['reserved-article-title'].data}</h3> 
51             
52            <small class="text-muted"><i class="icon-time"></i> ${date}</small> 
53            <small class="text-muted"><i class="icon-eye-open"></i> ${asset.viewCount}</small> 
54            <small class="pull-right"> 
55                <div class="fb-share-button"  
56                data-href="${friendlyURLs[themeDisplay.getLanguageId()]!""}"  
57                data-layout="button_count" style="line-height: 0.7"></div> 
58                 
59                <div class="zalo-share-button" data-href="${friendlyURLs[themeDisplay.getLanguageId()]!""}" data-oaid="1849279534870926998" data-layout="1" data-color="blue" data-customize=false></div> 
60            </small> 
61        </div> 
62        <div class="font-weight-bold summary">${.vars['reserved-article-description'].data}</div> 
63        <#assign cont = content.getData() /> 
64        <div class="page-content m-1 text-justify">${cont?replace('http://10.0.80.224:8080', '', 'r')}</div> 
65         
66        <hr class="bg-primary"/> 
67        <h4 class="font-weight-bold">Tin khác</h4> 
68         
69        <ul class="list-unstyled other-news"> 
70            <#list assetEntryList as ae> 
71                 
72                    <#assign assetRenderer = ae.getAssetRenderer() /> 
73                     
74                    <#assign 
75                        journalArticleResource = journalArticleResourceLocalService.getJournalArticleResource(ae.getClassPK()) 
76                    journalArticle = journalArticleLocalService.getLatestArticle(journalArticleResource.getResourcePrimKey()) 
77                     
78                    /> 
79                <#if journalArticle.getArticleId() != journalArticleId> 
80                    <#assign createdDate = journalArticle.getCreateDate() /> 
81                    <#assign viewURL = themeDisplay.getPortalURL()+themeDisplay.getScopeGroup().getPathFriendlyURL(false,themeDisplay) + layout.getGroup().friendlyURL /> 
82                    <li><a href="${viewURL}/w/${journalArticle.getUrlTitle()}"><i class="icon-double-angle-right text-danger mr-1"></i> ${journalArticle.getTitle()} (${createdDate?string(dateTimeFormat)})</a></li> 
83                </#if> 
84            </#list> 
85        </ul> 
86    </div> 
87</div> 
88<script src="https://sp.zalo.me/plugins/sdk.js"></script> 
89<!-- Load Facebook SDK for JavaScript --> 
90<div id="fb-root"></div> 
91<script> 
92function replaceSrc() { 
93    var images = document.getElementsByTagName('img'); 
94    for(var i = 0; i < images.length; i++) 
95
96        var img = images[i]; 
97        var imgSrc = img.src.replace('https://stttt.hagiang.gov.vn/image/image_gallery', ''); 
98        imgSrc = imgSrc.replace('http://10.0.80.224:8080/image/image_gallery', ''); 
99        const urlParams = new URLSearchParams(imgSrc); 
100         
101        if(urlParams.get('uuid') != null && urlParams.get('groupId') != null) 
102
103            img.src = '/uploadFiles/images/'+urlParams.get('groupId')+'/'+urlParams.get('uuid')+'.png'; 
104
105
106     
107    var hrefs = document.getElementsByTagName('a'); 
108    for(var i = 0; i < hrefs.length; i++) 
109
110        var a = hrefs[i]; 
111        var newHref = a.href.replace('http://10.0.80.224:8080', ''); 
112        a.href = newHref; 
113
114
115window.onload = replaceSrc; 
116</script> 
117<script>(function(d, s, id) { 
118var js, fjs = d.getElementsByTagName(s)[0]; 
119if (d.getElementById(id)) return; 
120js = d.createElement(s); js.id = id; 
121js.src = "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0"; 
122fjs.parentNode.insertBefore(js, fjs); 
123}(document, 'script', 'facebook-jssdk'));</script>