/o//commerce-media/accounts/-1/images/18466819?download=true

Multi Tag and Category
Icon
DXP App
18466771
Multi Tag and Multi Category plugin allows to filter by multiple categories and/or multiple tags in the Asset Publisher Portlet and Search Portlet.

Multi Tags Navigation Portle and Multi Categories Navigation Portlet are equivalent to the existing portlet in Liferay (UI, configuration, ADT, ...) but these portlet allow to further filter.


Features:
- configurable And or Or condition about tags and categories filter;
- custom facets and configuration for Search Portlet;
- application adapter hook.

IMPORTANT: to use this plugin you need to go inside control panel --> Configuration --> site configuration --> Application adapter --> and select "Tref Multi Categories - Tags Portlet". (look our screenshoot)

Search Portlet Configuration:

... ,
{
"displayStyle": "asset_multi_tags",
"weight": 1.4,
"static": false,
"order": "OrderHitsDesc",
"data": {
"maxTerms": 10,
"displayStyle": "list",
"frequencyThreshold": 1,
"contextName": "tref-multi-categories-tags-portlet"
},
"label": "tag",
"className": "it.tref.liferay.multi.facet.MultiValueAndFacet",
"fieldName": "assetTagNames"
},
{
"displayStyle": "asset_multi_categories",
"weight": 1.3,
"static": false,
"order": "OrderHitsDesc",
"data": {
"maxTerms": 10,
"displayStyle": "list",
"frequencyThreshold": 1,
"showAssetCount": true,
"contextName": "tref-multi-categories-tags-portlet"
},
"label": "category",
"className": "it.tref.liferay.multi.facet.MultiValueAndFacet",
"fieldName": "assetCategoryIds"
},
...
DEVELOPER
An error occurred while processing the template.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> specifications  [in template "3192443#3192485#null" at line 16, column 36]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if specifications?has_content && spe...  [in template "3192443#3192485#null" at line 16, column 1]
----
1<#assign 
2	channels = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels") 
3	channelId = "" 
4/> 
5 
6<#list channels.items as channel> 
7	<#if channel.name == "Marketplace Channel"> 
8		<#assign channelId = channel.id /> 
9	</#if> 
10</#list> 
11 
12<#if (CPDefinition_cProductId.getData())??> 
13	<#assign specifications = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/" + channelId + "/products/" + CPDefinition_cProductId.getData() + "/product-specifications") /> 
14</#if> 
15 
16<#if specifications?has_content && specifications.items?has_content> 
17	<#list specifications.items as specification> 
18		<#if specification.specificationKey?has_content && specification.specificationKey == "developer-name"> 
19			${specification.value} 
20		</#if> 
21	</#list> 
22</#if> 
DEVELOPER
3/21/16 12:00 AM
Published date
March 21, 2016
Published Date
3/21/16 12:00 AM
SUPPORTED OFFERINGS
Self-Hosted, Self-Managed
Supported Versions
6.2
Resource Requirements
An error occurred while processing the template.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> specifications  [in template "3192443#3192485#null" at line 17, column 36]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if specifications?has_content && spe...  [in template "3192443#3192485#null" at line 17, column 1]
----
1<#assign 
2	channelId="" 
3	channels=restClient.get("/headless-commerce-delivery-catalog/v1.0/channels") 
4	filteredSpecifications=[] 
5/> 
6 
7<#list channels.items as channel> 
8	<#if channel.name=="Marketplace Channel"> 
9		<#assign channelId = channel.id /> 
10	</#if> 
11</#list> 
12 
13<#if (CPDefinition_cProductId.getData())??> 
14	<#assign specifications = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/" + channelId + "/products/" + CPDefinition_cProductId.getData() + "/product-specifications") /> 
15</#if> 
16 
17<#if specifications?has_content && specifications.items?has_content> 
18 
19	<#assign 
20		cpuQuantity = "" 
21		memoryQuantity = "" 
22	/> 
23 
24	<#list specifications.items?sort_by("specificationKey") as specification> 
25		<#if stringUtil.equals(specification.value, "cloud")> 
26		    <script> 
27		        var resourceRequirements = document.querySelector(".marketplace-resource-requirements") 
28						 
29						resourceRequirements.classList.remove("d-none"); 
30		    </script> 
31		</#if> 
32		 
33		<#if specification.specificationKey?has_content && (stringUtil.equals(specification.specificationKey, "cpu") || stringUtil.equals(specification.specificationKey, "ram"))> 
34			<#if stringUtil.equals(specification.specificationKey, "cpu" )> 
35				<#assign cpuQuantity = specification.value /> 
36 
37				<#if cpuQuantity?has_content> 
38					${cpuQuantity} 
39					<#if cpuQuantity?eval gt 1> 
40						CPUS 
41					</#if> 
42					<#if cpuQuantity?eval lt 2> 
43						CPU 
44					</#if> 
45				</#if> 
46			</#if> 
47 
48			<#if stringUtil.equals(specification.specificationKey, "ram")> 
49				<#assign memoryQuantity = specification.value /> 
50 
51				<#if cpuQuantity?has_content && memoryQuantity?has_content >,</#if> 
52			</#if> 
53 
54			<#if stringUtil.equals(specification.specificationKey, "ram")> 
55				<#assign memoryQuantity = specification.value /> 
56 
57				<#if memoryQuantity?has_content> 
58					${memoryQuantity} GB RAM 
59				</#if> 
60			</#if> 
61		</#if> 
62	</#list> 
63</#if> 
Edition
CE, EE
PRICE
An error occurred while processing the template.
For "." left-hand operand: Expected a hash, but this has evaluated to a string (wrapper: f.t.SimpleScalar):
==> specifications  [in template "3192443#3192485#null" at line 16, column 36]

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if specifications?has_content && spe...  [in template "3192443#3192485#null" at line 16, column 1]
----
1<#assign 
2	channelId="" 
3	channels=restClient.get("/headless-commerce-delivery-catalog/v1.0/channels") 
4	filteredSpecifications=[] /> 
5 
6<#list channels.items as channel> 
7	<#if channel.name=="Marketplace Channel"> 
8		<#assign channelId = channel.id /> 
9	</#if> 
10</#list> 
11 
12<#if (CPDefinition_cProductId.getData())??> 
13	<#assign specifications = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/" + channelId + "/products/" + CPDefinition_cProductId.getData() + "/product-specifications") /> 
14</#if> 
15 
16<#if specifications?has_content && specifications.items?has_content> 
17	<#list specifications.items?sort_by("specificationKey") as specification> 
18		<#if specification.specificationKey?has_content> 
19			<#if stringUtil.equals(specification.specificationKey, "price-model" )> 
20				<#assign priceModel = specification.value /> 
21				<#if priceModel?has_content> 
22					${priceModel} 
23				</#if> 
24			</#if> 
25		</#if> 
26	</#list> 
27</#if> 
help & support
Terms & Conditions
SHARE LINK
Copy & Share Link

HTML Example

A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.