Extensão da pesquisa de ativos extending-assets-search
Você pode estender os recursos de pesquisa do Adobe Experience Manager Assets. Pronto para uso, Experience Manager Os ativos pesquisam ativos por cadeias de caracteres.
A pesquisa é feita por meio da interface do QueryBuilder para que a pesquisa possa ser personalizada com vários predicados. Você pode sobrepor o conjunto padrão de predicados no seguinte diretório: /apps/dam/content/search/searchpanel/facets
.
Também é possível adicionar outras guias à Experience Manager Painel administrativo do Assets.
Sobreposição overlaying
Para sobrepor os predicados pré-configurados, copie a variável facets
nó a partir de /libs/dam/content/search/searchpanel
para /apps/dam/content/search/searchpanel/
ou especifique outro facetURL
na configuração do painel de pesquisa (o padrão é /libs/dam/content/search/searchpanel/facets.overlay.infinity.json
).
apps
não existe e precisa ser criado. Certifique-se de que os tipos de nó correspondam aos valores de / libs
.Adição de guias adding-tabs
É possível adicionar outras guias de Pesquisa, configurando-as no Experience Manager Administrador de ativos Para criar guias adicionais:
-
Criar a estrutura de pastas
/apps/wcm/core/content/damadmin/tabs,
se ainda não existir, e copie a variáveltabs
nó a partir de/libs/wcm/core/content/damadmin
e cole-o. -
Crie e configure a segunda guia, conforme desejado.
note note NOTE Ao criar um segundo siteadminsearchpanel, certifique-se de definir um id
para evitar conflitos de formulário.
Criação de predicados personalizados creating-custom-predicates
Experience Manager Os ativos vêm com um conjunto de predicados predefinidos que podem ser usados para personalizar uma página de Compartilhamento de ativos. A personalização de um Compartilhamento de ativos dessa forma é abordada em Criação e configuração de uma página de compartilhamento de ativos.
Além de usar predicados pré-existentes, Experience Manager os desenvolvedores também podem criar seus próprios predicados usando o API do Query Builder.
Criar predicados personalizados requer conhecimento básico sobre o Estrutura de widgets.
A prática recomendada é copiar um predicado existente e ajustá-lo. Os predicados de amostra estão localizados em /libs/cq/search/components/predicates
.
Exemplo: Criar um predicado de propriedade simples example-build-a-simple-property-predicate
Para criar um predicado de propriedade:
-
Crie uma pasta de componentes no diretório de projetos, por exemplo
/apps/geometrixx/components/titlepredicate
. -
Adicionar
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"/>
-
Adicionar
titlepredicate.jsp
.code language-xml <%-- 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 will be 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: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" etc.) // 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 allow to 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>
-
Para disponibilizar o componente, é necessário editá-lo. Para tornar um componente editável, no CRXDE, adicione um nó
cq:editConfig
de tipo primáriocq:EditConfig
. Para que possa remover parágrafos, adicione uma propriedade de vários valorescq:actions
com um único valor DELETE. -
Navegue até o navegador e, na página de exemplo (por exemplo,
press.html
) alternar para o modo de design e ativar seu novo componente para o sistema de parágrafo do predicado (por exemplo, left). -
Em Editar , o novo componente agora está disponível no sidekick (encontrado no Pesquisar grupo). Insira o componente no Predicados e digite uma palavra de pesquisa, por exemplo, Diamante e clique na lupa para iniciar a pesquisa.
note note NOTE Ao pesquisar, digite o termo exatamente, incluindo as letras maiúsculas e minúsculas corretas.
Exemplo: Criar um predicado de grupo simples example-build-a-simple-group-predicate
Para criar um predicado de grupo:
-
Crie uma pasta de componentes no diretório de projetos, por exemplo
/apps/geometrixx/components/picspredicate
. -
Adicionar
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"/>
-
Adicionar
titlepredicate.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 will be 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 e.g. "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 etc. "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(); } } }); } });
-
Para disponibilizar o componente, é necessário editá-lo. Para tornar um componente editável, no CRXDE, adicione um nó
cq:editConfig
de tipo primáriocq:EditConfig
. Para que possa remover parágrafos, adicione uma propriedade de vários valorescq:actions
com um único valorDELETE
. -
Navegue até o navegador e, na página de exemplo (por exemplo,
press.html
) alternar para o modo de design e ativar seu novo componente para o sistema de parágrafo do predicado (por exemplo, left). -
Em Editar , o novo componente agora está disponível no sidekick (encontrado no Pesquisar grupo). Insira o componente no Predicados coluna.
Widgets de predicado instalados installed-predicate-widgets
Os predicados a seguir estão disponíveis como widgets ExtJS pré-configurados.
Predicado de texto completo fulltextpredicate
fulltext
keyup
. O padrão é CQ.wcm.SiteAdmin.doSearch
PropertyPredicate propertypredicate
property
jcr:title
PathPredicate pathpredicate
path
/content/dam
folder
search in subfolders
. O padrão é true.DatePredicate datepredicate
daterange
jcr:content/jcr:lastModified
OptionsPredicate optionspredicate
daterange
jcr:content/metadata/cq:tags
level1
CQ.wcm.SiteAdmin.doSearch
Personalização dos resultados da pesquisa customizing-search-results
A apresentação dos resultados da pesquisa em uma página Compartilhamento de ativos é regida pela lente selecionada. Experience Manager Os ativos vêm com um conjunto de lentes predefinidas que podem ser usadas para personalizar uma página de Compartilhamento de ativos. A personalização de um Compartilhamento de ativos dessa forma é abordada em Criação e configuração de uma página de compartilhamento de ativos.
Além de usar lentes pré-existentes, Experience Manager os desenvolvedores também podem criar suas próprias lentes.