Estender pesquisa de ativos

É possível estender Adobe Experience Manager Assets recursos de pesquisa. Pronto para uso, Experience Manager Assets pesquisa ativos por strings.

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 à Assets painel administrador.

ATENÇÃO

Em Experience Manager 6.4, a interface do usuário clássica está obsoleta. Para o anúncio, consulte recursos obsoletos e removidos. O Adobe recomenda usar a interface habilitada para toque. Para personalização, consulte aspectos de pesquisa.

Sobreposição

Para sobrepor os predicados pré-configurados, copie o facets nó a partir de /libs/dam/content/search/searchpanel para /apps/dam/content/search/searchpanel/ ou especifique outro facetURL na searchpanel configuração (o padrão é /libs/dam/content/search/searchpanel/facets.overlay.infinity.json).

screen_shot_2012-06-05at113619am

OBSERVAÇÃO

Por padrão, a estrutura de diretório em /apps não existe, portanto, crie-a. Certifique-se de que os tipos de nó correspondam aos tipos de nó /libs.

Adicionar guias

É possível adicionar outras guias de pesquisa, configurando-as no Assets interface de administração. Para criar guias adicionais:

  1. Criar a estrutura de pastas /apps/wcm/core/content/damadmin/tabs,se ainda não existir, e copie a variável tabs nó a partir de /libs/wcm/core/content/damadmin e cole-o.

  2. Crie e configure a segunda guia, conforme desejado.

    OBSERVAÇÃO

    Ao criar um segundo siteadminsearchpanelcertifique-se de definir uma id para evitar conflitos de formulário.

Criar predicados personalizados

Assets O vem 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 criar e configurar 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/predicados.

Exemplo: Criar um predicado de propriedade simples

Para criar um predicado de propriedade:

  1. Crie uma pasta de componentes no diretório de projetos, por exemplo /apps/weretail/components/titlepredicate.

  2. Adicionar content.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"/>
    
  3. Adicionar titlepredicate.jsp.

    <%--
    
      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>
    
  4. Para disponibilizar o componente, é necessário editá-lo. Para tornar um componente editável, no CRXDE, adicione um nó cq:editConfig do tipo primário cq:EditConfig. Para que possa remover parágrafos, adicione uma propriedade de vários valores cq:actions com um único valor DELETE.

  5. 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).

  6. 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.

    OBSERVAÇÃO

    Ao pesquisar, digite o termo exatamente, incluindo as letras maiúsculas e minúsculas corretas.

Exemplo: Criar um predicado de grupo simples

Para criar um predicado de grupo:

  1. Crie uma pasta de componentes no diretório de projetos, por exemplo /apps/weretail/components/picspredicate.

  2. Adicionar content.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"/>
    
  3. Adicionar titlepredicate.jsp:

    <%--
    
      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();
                        }
                    }
                });
            }
        });
    
  4. Para disponibilizar o componente, é necessário editá-lo. Para tornar um componente editável, no CRXDE, adicione um nó cq:editConfig do tipo primário cq:EditConfig. Para que possa remover parágrafos, adicione uma propriedade de vários valores cq:actions com um único valor DELETE.

  5. 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).

  6. 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

Os predicados a seguir estão disponíveis como widgets ExtJS pré-configurados.

Predicado de texto completo

Propriedade Tipo Descrição
predicateName Sequência de caracteres Nome do predicado. O padrão é fulltext
searchCallback Função Retorno de chamada para acionar a pesquisa no evento keyup. O padrão é CQ.wcm.SiteAdmin.doSearch

PropertyPredicate

Propriedade Tipo Descrição
predicateName Sequência de caracteres Nome do predicado. O padrão é property
propertyName Sequência de caracteres Nome da propriedade JCR. O padrão é jcr:title
defaultValue Sequência de caracteres Valor padrão pré-preenchido.

PathPredicate

Propriedade Tipo Descrição
predicateName Sequência de caracteres Nome do predicado. O padrão é path
rootPath Sequência de caracteres Caminho raiz do predicado. O padrão é /content/dam
pathFieldPredicateName Sequência de caracteres O padrão é folder
showFlatOption Booleano Sinalizador para mostrar caixa de seleção search in subfolders. O padrão é true.

DatePredicate

Propriedade Tipo Descrição
predicateName Sequência de caracteres Nome do predicado. O padrão é daterange
propertyname Sequência de caracteres Nome da propriedade JCR. O padrão é jcr:content/jcr:lastModified
defaultValue Sequência de caracteres Valor padrão pré-preenchido

OptionsPredicate

Propriedade Tipo Descrição
título Sequência de caracteres Adiciona um título superior adicional
predicateName Sequência de caracteres Nome do predicado. O padrão é daterange
propertyname Sequência de caracteres Nome da propriedade JCR. O padrão é jcr:content/metadata/cq:tags
colapso Sequência de caracteres Recolher nível. O padrão é level1
triggerSearch Booleano Sinalizador para acionar a pesquisa ao verificar. O padrão é false
searchCallback Função Retorno de chamada para acionar a pesquisa. O padrão é CQ.wcm.SiteAdmin.doSearch
searchTimeoutTime Número Tempo limite antes do acionamento de searchCallback. O padrão é 800 ms

Personalizar resultados de pesquisa

A apresentação dos resultados da pesquisa em uma página Compartilhamento de ativos é regida pela lente selecionada. Experience Manager Assets O vem 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.

Nesta página