Upcoming Events Header

Recent Activities

Search Results
Filters
  • We can’t ignore hydrogen’s potential in construction

    We can’t ignore hydrogen’s potential in construction

    Construction
  • LPCB exhibits at The Security & Fire Event 2026

    LPCB exhibits at The Security & Fire Event 2026

  • The hidden risk in certified systems: when compliance creates complacency

    The hidden risk in certified systems: when compliance creates complacency

  • lpcb team

    Behind the scenes at LPCB: opening the doors to fire and security testing

  • Finalists for the BREEAM Awards 2026 announced

    Awards
  • BRE renews long‑standing partnership with Dutch Green Building Council for BREEAM‑NL

    Sustainability
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • Le retour en arrière?

    Le retour en arrière?

    BREEAMJames FisherBlogs
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • BREEAM Refurbishment and Fit Out: raising the standard for sustainable building refurbishment

    BREEAM Refurbishment and Fit Out: raising the standard for sustainable building refurbishment

    Dan Asquith
  • Passive design: the way forward for future-resilient infrastructure

    Passive design: the way forward for future-resilient infrastructure

    InfrastructureDesign for PerformanceJames Fisher
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • webinar office

    BREEAM Webinar Series: Driving Energy Excellence in Refurbishment and Fit Out.

    EnergyBREEAMBREEAM Refurbishment & Fit-outSustainabilityWebinars
  • EnergyBREEAMCase Study
  • Patent pending: unlocking retrofit innovation

    Retrofit
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • World’s leading building and climate organisations launch coalition to green AI data centres

    Sustainability
  • BRE plays a leading role in new global coalition setting sustainability standards for AI data centres

    Sustainability
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • USABREEAMCase Study
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • Future Homes Standard: what it means and what comes next

    Future Homes Standard: what it means and what comes next

  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • NorwayBREEAMBREEAM InfrastructureRailCase Study
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • BREEAMBREEAM InfrastructureCase Study
  • What is a site waste management plan (SWMP) and how to implement one

    What is a site waste management plan (SWMP) and how to implement one

    ConstructionSmartWasteSustainabilityBlogsAntonio Hernandez
  • Fire fatalities beyond the dwelling of fire origin in Scotland

    Fire fatalities beyond the dwelling of fire origin in Scotland

  • From intent to evidence: how digital innovation and PropTech is redefining sustainability performance

    Sustainability
  • Why BREEAM New Construction V7 Matters for Carbon Reduction and the Future of Sustainable Buildings

    Why BREEAM New Construction V7 Matters for Carbon Reduction and the Future of Sustainable Buildings

    BREEAMBREEAM New ConstructionSustainabilityFlorence OwensBlogs
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
  • An error occurred while processing the template.
    The following has evaluated to null or missing:
    ==> autoPopulateDate  [in template "20096#20121#4729007" at line 35, column 45]
    
    ----
    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: #if (getterUtil.getBoolean(autoPopula...  [in template "20096#20121#4729007" at line 35, column 17]
    ----
    1<#assign  
    2    journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
    3    assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
    4    friendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService") 
    5    classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService") 
    6    assetCategoryClassNameId = classNameLocalService.getClassNameId("com.liferay.asset.kernel.model.AssetCategory") 
    7 
    8    journalArticleId = .vars['reserved-article-id'].data 
    9    journalArticle = journalArticleService.getArticle(groupId, journalArticleId) 
    10    assetEntry = assetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
    11 
    12    assetCategories = assetEntry.getCategories() 
    13/> 
    14 
    15<#assign  
    16    requestedUrl = themeDisplay.getURLCurrent() 
    17    currentPath = requestedUrl?keep_before("?")?remove_ending("/") 
    18		queryparameter=requestedUrl?keep_after("?") 
    19    curerntPathWithoutTags = currentPath?keep_before("/tags/") 
    20/> 
    21 
    22<#assign excludedCategories = ["News","Events","Report","Reports","z_Report_listing","Report_list","BREEAMNews","LPCB","BRE Group","Cities","Press releases","Case_Study","Case study","BREEAM_Insights","BREEAM_NEWS","Insights"] /> 
    23 
    24<div class="c-article-stackable-card c-article-stackable-card--align-bottom"> 
    25    <#if (CardImage.getData())?? && CardImage.getData() != ""> 
    26        <div class="c-article-stackable-card__image"> 
    27				<#if (CardImage.getData())?? && CardImage.getData() != ""> 
    28            <img class="img-fluid lazy" loading="lazy"  alt='${CardImage.getAttribute("alt")}' 
    29                data-fileentryid='${CardImage.getAttribute("fileEntryId")}' data-src="${CardImage.getData()}" /> 
    30        </#if> 
    31				</div> 
    32    </#if> 
    33    <div class="c-article-stackable-card__body"> 
    34		 
    35		<#if (getterUtil.getBoolean(autoPopulateDate.getData()) && getterUtil.getBoolean(autoPopulateAuthor.getData())?has_content) || (MigrationDate.getData())?has_content> 
    36            <div class="c-article-stackable-card__byline c-article-stackable-card__byline--separator mb-1 mt-0"> 
    37        <#else> 
    38            <div class="c-article-stackable-card__byline mb-1 mt-0"> 
    39        </#if> 
    40                        
    41            <#if getterUtil.getBoolean(autoPopulateDate.getData())> 
    42                <span class="c-article-stackable-card__date"> 
    43                    <#assign CardDate=.vars["reserved-article-create-date"].data /> 
    44                    <#if validator.isNotNull(CardDate)> 
    45                        <#assign ArticleCardDate_DateObj=dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", CardDate,locale)> 
    46                        ${dateUtil.getDate(ArticleCardDate_DateObj, "dd MMMMM yyyy", locale)} 
    47                    </#if> 
    48                </span> 
    49            <#else> 
    50                <span class="c-article-stackable-card__date"> 
    51                    <#if (MigrationDate.getData())?has_content> 
    52                        <#assign ArticleMigrationDate_Data=getterUtil.getString(MigrationDate.getData())> 
    53                        <#assign newDateobj=dateUtil.parseDate("yyyy-MM-dd HH:mm:ss", ArticleMigrationDate_Data, locale) /> 
    54                        <#assign migraDate=dateUtil.getDate(newDateobj, "dd MMMMM yyyy", locale) /> 
    55                        ${migraDate} 
    56                    </#if> 
    57                </span> 
    58            </#if> 
    59 
    60            <#if (AuthorName.getData())?has_content > 
    61						    <span class="c-article-stackable-card__author">${AuthorName.getData()}</span> 
    62            <#else> 
    63						  <#if getterUtil.getBoolean(autoPopulateAuthor.getData())> 
    64                <span class="c-article-stackable-card__author">${.vars["reserved-article-author-name"].data}</span> 
    65              </#if> 
    66						</#if> 
    67 
    68            </div> 
    69 
    70    <#if (CardTitle.getData())??> 
    71        <h3 class="c-article-stackable-card__title d-flex"> 
    72            <#if (buttonLink.getFriendlyUrl())?has_content> 
    73                <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}">${CardTitle.getData()}</a> 
    74            <#elseif (ExternalLink.getData())?has_content> 
    75                <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank">${CardTitle.getData()}</a> 
    76            <#else> 
    77                ${CardTitle.getData()} 
    78            </#if> 
    79        </h3> 
    80    </#if> 
    81 
    82    <#if assetCategories??> 
    83 
    84        <div class="c-article-stackable-card__category mt-auto mb-0"> 
    85            <#assign filterCategories = [] /> 
    86            <#list assetCategories as category> 
    87                <#if ! excludedCategories?seq_contains(category.getName())> 
    88                    <#assign filterCategories += [category] /> 
    89                </#if> 
    90            </#list> 
    91            <#list filterCategories as category> 
    92                <#assign categoryName = category.getName() /> 
    93 
    94                <#assign friendlyURLs =  
    95                    friendlyURLEntryLocalService.getFriendlyURLEntryLocalizations 
    96                        (category.getGroupId(), assetCategoryClassNameId, category.getCategoryId(), localeUtil.toLanguageId(locale), 0, 1, null) /> 
    97                <#if friendlyURLs?size == 1> 
    98                    <#assign curTagFriendlyUrl = friendlyURLs[0].getUrlTitle() /> 
    99                </#if> 
    100 
    101                <#assign curTagUrl = curerntPathWithoutTags + "/tags/" + curTagFriendlyUrl + "?" +queryparameter /> 
    102 
    103                <a href="${curTagUrl}" class="c-new-small-tag">${categoryName}</a><#sep>,&nbsp;</#sep> 
    104 
    105            </#list> 
    106        </div> 
    107    </#if> 
    108 
    109</div> 
    110 
    111<div class="c-link-redirection d-none"> 
    112    <#if (buttonLink.getFriendlyUrl())?has_content> 
    113        <a data-senna-off="true" href="${buttonLink.getFriendlyUrl()}"> 
    114            ${buttonLink.getFriendlyUrl()} 
    115        </a> 
    116    </#if> 
    117    <#if (ExternalLink.getData())?has_content> 
    118        <a data-senna-off="true" href="${ExternalLink.getData()}" target="_blank"> 
    119            ${ExternalLink.getData()} 
    120        </a> 
    121    </#if> 
    122</div> 
    123 
    124<style> 
    125    .c-article-stackable-card__title a { 
    126        font-family: "Recife Text"; 
    127        font-size: 1.75rem; 
    128        line-height: 2.125rem; 
    129        color: #1E1836; 
    130
    131    .c-article-stackable-card__category a { 
    132        font-family: unset; 
    133        /*color: #757283;*/ 
    134				color: unset; 
    135
    136		.c-report-listing .c-article-stackable-card__category:hover, 
    137		.c-article-stackable-card:hover .c-article-stackable-card__title { text-decoration: none; } 
    138</style> 
Category Facet