Extensão da pesquisa de ativos

Você pode estender os recursos de pesquisa do Adobe Experience Manager Assets. Imediatamente, Experience Manager o Assets pesquisa por 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 ao painel de administração Experience Manager do Assets.

ATENÇÃO

A partir de Experience Manager 6.4, a interface do usuário clássica está obsoleta. Para anúncio, consulte Recursos obsoletos e removidos. É recomendável usar a interface habilitada para toque. Para personalizações, consulte Pesquisar aspectos.

Sobreposição

Para sobrepor os predicados pré-configurados, copie o nó facets de /libs/dam/content/search/searchpanel para /apps/dam/content/search/searchpanel/ ou especifique outra propriedade facetURL na configuração do painel de pesquisa (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 e precisa ser criada. Certifique-se de que os tipos de nó correspondam àqueles em / libs.

Adição de guias

É possível adicionar outras guias de Pesquisa, configurando-as no Experience Manager Administrador de ativos. Para criar guias adicionais:

  1. Crie a estrutura de pastas /apps/wcm/core/content/damadmin/tabs,se ela ainda não existir, e copie o nó tabs de /libs/wcm/core/content/damadmin e cole-o.

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

    OBSERVAÇÃO

    Ao criar um segundo siteadminsearchpanel, certifique-se de definir uma propriedade id para evitar conflitos de formulário.

Criação de predicados personalizados

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. Personalizar um Compartilhamento de ativos dessa maneira é abordado em Criar e configurar uma página de compartilhamento de ativos.

Além de usar predicados pré-existentes, os desenvolvedores Experience Manager também podem criar seus próprios predicados usando a API do Construtor de consultas.

Criar predicados personalizados requer conhecimento básico sobre a 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

Para criar um predicado de propriedade:

  1. Crie uma pasta de componentes no diretório de projetos, por exemplo /apps/geometrixx/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), alterne para o modo de design e ative o novo componente para o sistema de predicado de parágrafo (por exemplo, left).

  6. No modo Editar, o novo componente agora está disponível no sidekick (encontrado no grupo Pesquisar). Insira o componente na coluna Predicates e digite uma palavra de pesquisa, por exemplo, Diamond 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/geometrixx/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), alterne para o modo de design e ative o novo componente para o sistema de predicado de parágrafo (por exemplo, left).

  6. No modo Editar, o novo componente agora está disponível no sidekick (encontrado no grupo Pesquisar). Insira o componente na coluna Predicates.

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 a 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

Personalização dos resultados da pesquisa

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. Personalizar um Compartilhamento de ativos dessa maneira é abordado em Criar e configurar uma página de compartilhamento de ativos.

Além de usar lentes pré-existentes, os desenvolvedores Experience Manager também podem criar suas próprias lentes.

Nesta página