Utöka resurssökning extending-assets-search
Du kan utöka sökfunktionerna för Adobe Experience Manager Assets. Experience Manager Assets söker efter resurser efter strängar.
Sökningen görs via gränssnittet i QueryBuilder så att sökningen kan anpassas med flera predikat. Du kan täcka över standarduppsättningen med predikat i följande katalog: /apps/dam/content/search/searchpanel/facets
.
Du kan också lägga till fler flikar på administratörspanelen för Assets.
Övertäckning overlaying
Om du vill täcka över de förkonfigurerade predikaten kopierar du noden facets
från /libs/dam/content/search/searchpanel
till /apps/dam/content/search/searchpanel/
eller anger en annan facetURL
-egenskap i searchpanel
-konfigurationen (standardvärdet är /libs/dam/content/search/searchpanel/facets.overlay.infinity.json
).
/apps
, så skapa den. Kontrollera att nodtyperna matchar dem under /libs
.Lägg till tabbar adding-tabs
Du kan lägga till fler sökflikar genom att konfigurera dem i administratörsgränssnittet för Assets. Så här skapar du ytterligare flikar:
-
Skapa mappstrukturen
/apps/wcm/core/content/damadmin/tabs,
om den inte redan finns, och kopieratabs
-noden från/libs/wcm/core/content/damadmin
och klistra in den. -
Skapa och konfigurera den andra fliken efter behov.
note note NOTE När du skapar ytterligare en siteadminsearchpanel
måste du ange enid
-egenskap för att förhindra formulärkonflikter.
Skapa anpassade predikat creating-custom-predicates
Assets innehåller en uppsättning fördefinierade predikat som kan användas för att anpassa en resursdelssida. Anpassa en resursresurs på det här sättet beskrivs i Skapa och konfigurera en resursdelningssida.
Förutom att använda befintliga predikat kan Experience Manager-utvecklare även skapa egna predikat med Query Builder API .
Det krävs grundläggande kunskaper om widgetramverket för att kunna skapa anpassade predikat.
Det bästa sättet är att kopiera ett befintligt predikat och justera det. Exempelpredikaten finns i /libs/cq/search/components/predikates.
Exempel: Skapa ett enkelt egenskapspredikat example-build-a-simple-property-predicate
Så här skapar du ett egenskapspredikat:
-
Skapa en komponentmapp i din projektkatalog, till exempel /apps/werdetail/components/titlepreate.
-
Lägg till content.xml:
code language-xml <?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:sling="https://sling.apache.org/jcr/sling/1.0" xmlns:cq="https://www.day.com/jcr/cq/1.0" xmlns:jcr="https://www.jcp.org/jcr/1.0" jcr:primaryType="cq:Component" jcr:title="Title Predicate" sling:resourceSuperType="foundation/components/parbase" allowedParents="[*/parsys]" componentGroup="Search"/>
-
Lägg till
titlepredicate.jsp
.code language-java <%-- Sample title predicate component --%><%@ page import="java.util.Calendar" %><% %><%@include file="/libs/foundation/global.jsp"%><% // A unique id is necessary in case this predicate is inserted multiple times on the same page String elemId = "cq-predicate-" + Long.toString(Calendar.getInstance().getTimeInMillis()); %><div class="predicatebox"> <div class="title">Title</div> <%-- The wrapper for the form elements. All items are appended to this wrapper. --%> <div id="<%= elemId %>" class="content"></div> </div><script type="text/javascript"> CQ.Ext.onLoad(function() { var predicateName = "property"; var propertyName = "jcr:content/metadata/dc:title"; var elemId = "<%= elemId %>"; // Get the page wide available QueryBuilder. var qb = CQ.search.Util.getQueryBuilder(); // createId adds a counter to the predicate name - useful in case this predicate // is inserted multiple times on the same page. var id = qb.createId(predicateName); // Hidden field that defines the property to search for; in our case this // is the "dc:title" metadata. The name "property" (or "1_property", "2_property", and so on.) // indicates the server to use the property predicate // (com.day.cq.search.eval.JcrPropertyPredicateEvaluator). qb.addField({ "xtype": "hidden", "renderTo": elemId, "name": id, "value": propertyName }); // The visible text field. The name has to be like the one of the hidden field above // plus the ".value" suffix. qb.addField({ "xtype": "textfield", "renderTo": elemId, "name": id + ".value" }); // Depending on the predicate, additional parameters let you configure the // predicate. Here we add an operation parameter to create a "like" query. // Again note the name set to the id and a suffix. qb.addField({ "xtype": "hidden", "renderTo": elemId, "name": id + ".operation", "value": "like" }); }); </script>
-
Om du vill göra komponenten tillgänglig måste du kunna redigera den. Om du vill göra en komponent redigerbar lägger du i CRXDE till en nod cq:editConfig av den primära typen cq:EditConfig. Du kan ta bort stycken genom att lägga till en egenskap med flera värden cq:actions med ett enda värde på DELETE.
-
Navigera till webbläsaren och på exempelsidan (till exempel press.html) växla till designläge och aktivera den nya komponenten för det prediktiva styckesystemet (till exempel left).
-
I redigeringsläget är den nya komponenten nu tillgänglig i sidosparken (finns i gruppen Sök). Infoga komponenten i kolumnen Predicates och skriv ett sökord, till exempel Diamant, och klicka på förstoringsglaset för att starta sökningen.
note note NOTE När du söker måste du skriva in ordet exakt, inklusive rätt skiftläge.
Exempel: Skapa ett enkelt grupppredikat example-build-a-simple-group-predicate
Så här skapar du ett grupppredikat:
-
Skapa en komponentmapp i din projektkatalog, till exempel /apps/werdetail/components/picspredicate.
-
Lägg till content.xml:
code language-xml <?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:sling="https://sling.apache.org/jcr/sling/1.0" xmlns:cq="https://www.day.com/jcr/cq/1.0" xmlns:jcr="https://www.jcp.org/jcr/1.0" jcr:primaryType="cq:Component" jcr:title="Image Formats" sling:resourceSuperType="foundation/components/parbase" allowedParents="[*/parsys]" componentGroup="Search"/>
-
Lägg till titlepreate.jsp:
code language-java <%-- Sample group predicate component --%><%@ page import="java.util.Calendar" %><% %><%@include file="/libs/foundation/global.jsp"%><% // A unique id is necessary in case this predicate is inserted multiple times on the same page. String elemId = "cq-predicate-" + Long.toString(Calendar.getInstance().getTimeInMillis()); %><div class="predicatebox"> <div class="title">Image Formats</div> <%-- The wrapper for the form elements. All items are append to this wrapper. --%> <div id="<%= elemId %>" class="content"></div> </div><script type="text/javascript"> CQ.Ext.onLoad(function() { var predicateName = "property"; var propertyName = "jcr:content/metadata/dc:format"; var elemId = "<%= elemId %>"; // Get the page wide available QueryBuilder. var qb = CQ.search.Util.getQueryBuilder(); // Create a unique group ID; will return for example, "1_group". var groupId = qb.createGroupId(); // Hidden field that defines the property to search for - in our case "dc:format" - // and declares the group of predicates. "property" in the name ("1_group.property") // indicates to the server to use the "property predicate" // (com.day.cq.search.eval.JcrPropertyPredicateEvaluator). qb.addField({ "xtype": "hidden", "renderTo": "<%= elemId %>", "name": groupId + "." + predicateName, // 1_group.property "value": propertyName }); // Declare to combine the multiple values using OR. qb.add(new CQ.Ext.form.Hidden({ "name": groupId + ".p.or", // 1_group.p.or "value": "true" })); // The options var options = [ { "label":"JPEG", "value":"image/jpeg"}, { "label":"PNG", "value":"image/png" }, { "label":"GIF", "value":"image/gif" } ]; // Build a checkbox for each option. for (var i = 0; i < options.length; i++) { qb.addField({ "xtype": "checkbox", "renderTo": "<%= elemId %>", // 1_group.property.0_value, 1_group.property.1_value, and so on. "name": groupId + "." + predicateName + "." + i + "_value", "inputValue": options[i].value, "boxLabel": options[i].label, "listeners": { "check": function() { // Submit the search form when checking/unchecking a checkbox. qb.submit(); } } }); } });
-
Om du vill göra komponenten tillgänglig måste du kunna redigera den. Om du vill göra en komponent redigerbar lägger du i CRXDE till en nod cq:editConfig av den primära typen cq:EditConfig. Du kan ta bort stycken genom att lägga till en egenskap med flera värden cq:actions med ett enda värde på DELETE.
-
Navigera till webbläsaren och på exempelsidan (till exempel press.html) växla till designläge och aktivera den nya komponenten för det prediktiva styckesystemet (till exempel left).
-
I redigeringsläget är den nya komponenten nu tillgänglig i sidosparken (finns i gruppen Sök). Infoga komponenten i kolumnen Predicates.
Installerade prediktiva widgetar installed-predicate-widgets
Följande predikat är tillgängliga som förkonfigurerade ExtJS-widgetar.
FulltextPredicate fulltextpredicate
fulltext
keyup
. Standardvärdet är CQ.wcm.SiteAdmin.doSearch
PropertyPredicate propertypredicate
property
jcr:title
PathPredicate pathpredicate
path
/content/dam
folder
search in subfolders
. Standardvärdet är true.DatePredicate datepredicate
daterange
jcr:content/jcr:lastModified
OptionsPredicate optionspredicate
daterange
jcr:content/metadata/cq:tags
level1
CQ.wcm.SiteAdmin.doSearch
Anpassa sökresultat customizing-search-results
Presentationen av sökresultaten på en resursdelningssida styrs av det valda objektivet. Experience Manager Assets innehåller en uppsättning fördefinierade objektiv som kan användas för att anpassa en resursdelssida. Att anpassa en resursresurs på det här sättet beskrivs i Skapa och konfigurera en resursdelningssida.
Förutom att använda befintliga linser kan Experience Manager-utvecklare även skapa egna linser.