Liferay sites are customizable spaces for building personalized digital experiences. Each site includes applications for creating content, designing pages, and more. With these features, you can bring your custom solutions to life, whether intranets, public sites, customer portals, or e-commerce storefronts. In fact, you can leverage Liferay's multi-site capabilities to create multiple such sites in the same Liferay instance.
When calling macro "displayResourceTypeTags", required parameter "taxonomyCategoryBriefs" (parameter #1) was specified, but had null/missing value.
----
Tip: If the parameter value expression on the caller side is known to be legally null/missing, you may want to specify a default value for it with the "!" operator, like paramValue!defaultValue.
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #macro displayResourceTypeTags taxono... [in template "8911408109993434201#23484949#23489037" in macro "displayResourceTypeTags" at line 1, column 1]
- Reached through: @displayResourceTypeTags taxonomyCate... [in template "8911408109993434201#23484949#23489037" at line 58, column 81]
----
1<#macro displayResourceTypeTags
2 taxonomyCategoryBriefs
3>
4 <#if taxonomyCategoryBriefs?has_content>
5 <#list taxonomyCategoryBriefs as taxonomyCategoryBrief>
6 <#assign taxonomyVocabulary = taxonomyCategoryBrief.embeddedTaxonomyCategory.parentTaxonomyVocabulary.externalReferenceCode!"N/A" />
7
8 <#if stringUtil.equals(taxonomyVocabulary, "RESOURCE_TYPE")>
9 <span class="font-weight-normal label label-inverse-light label-secondary m-0 px-2 text-paragraph-sm">
10 ${taxonomyCategoryBrief.taxonomyCategoryName}
11 </span>
12 </#if>
13 </#list>
14 </#if>
15</#macro>
16
17<#function getValue contentString end start>
18 <#assign startIndex = contentString?index_of(start) />
19
20 <#if startIndex == -1>
21 <#return "" />
22 </#if>
23
24 <#assign
25 substring = contentString?substring(startIndex + start?length)
26 endIndex = substring?index_of(end)
27 />
28
29 <#if endIndex == -1>
30 <#return substring />
31 </#if>
32
33 <#return substring?substring(0, endIndex)?trim />
34</#function>
35
36<div class="search-results" id="searchResults">
37 <#if entries?has_content>
38 <#list entries as searchEntry>
39 <#assign
40 className = searchEntry.getClassName()!""
41 classPK = searchEntry.getClassPK()!""
42 searchEntryContent = searchEntry.getContent()!languageUtil.get(locale, "no-content-preview", "No content preview")
43 searchEntryTitle = searchEntry.getTitle()!""
44 />
45
46 <#if searchEntryTitle?has_content>
47 <div class="align-items-stretch pb-4 search-results-entry">
48 <a class="font-weight-bold search-results-entry-title text-decoration-none unstyled" href="${searchEntry.getViewURL()}&highlight=${htmlUtil.escape(searchResultsPortletDisplayContext.getKeywords()?url('ISO-8859-1'))}">
49 <div class="d-flex justify-content-between search-results-entry-header">
50 ${searchEntryTitle}
51 <div class="search-results-entry-tags">
52 <#if className?contains("com.liferay.journal.model.JournalArticle")>
53 <#assign
54 content = searchEntryContent
55 structuredContent = restClient.get("/headless-delivery/v1.0/structured-contents/" + classPK + "?fields=taxonomyCategoryBriefs&nestedFields=embeddedTaxonomyCategory") />
56
57 <#if structuredContent??>
58 <@displayResourceTypeTags taxonomyCategoryBriefs = structuredContent.taxonomyCategoryBriefs />
59 </#if>
60 <#elseif className?contains("com.liferay.object.model.ObjectDefinition")>
61 <#assign
62 content = getValue(entry.getContent(), " end:", "content:")
63 knowledgeArticle = restClient.get("/c/p2s3knowledgearticles/" + classPK + "?nestedFields=embeddedTaxonomyCategory") />
64
65 <#if knowledgeArticle??>
66 <#if knowledgeArticle.legacy?? && knowledgeArticle.legacy == true>
67 <span class="font-weight-normal label label-secondary label-inverse-light m-0 px-2 text-paragraph-sm">
68 <@liferay_ui["message"] key="legacy" />
69 </span>
70 </#if>
71
72 <@displayResourceTypeTags taxonomyCategoryBriefs = knowledgeArticle.taxonomyCategoryBriefs />
73 </#if>
74 </#if>
75 </div>
76 </div>
77
78 <div class="description search-results-entry-content">
79 <#if className?contains("com.liferay.journal.model.JournalArticle")>
80 ${searchEntryContent}
81 <#else>
82 ${getValue(searchEntryContent, " end:", "content:")}
83 </#if>
84 </div>
85 </a>
86 </div>
87 </#if>
88 </#list>
89 <#else>
90 <p class="search-results-empty">
91 ${languageUtil.format(locale, "no-results-were-found-that-matched-the-keywords-x", htmlUtil.escape(searchResultsPortletDisplayContext.getKeywords()), false)}
92 </p>
93 </#if>
94</div>
95
96<style>
97 .label-inverse-light {
98 background-color: var(--color-state-neutral-lighten-2);
99 border-color: var(--color-state-neutral-lighten-2);
100 color: var(--color-neutral-8);
101 }
102
103 .search-results-entry-tags {
104 display: flex;
105 gap: 0.5rem;
106 height: max-content;
107 }
108</style>
Capabilities
Product
Contact Us