Vous consultez actuellement l'aide de la version:

Vous pouvez étendre la recherche dans Adobe Experience Manager (AEM) Assets. AEM Assets propose des recherches prêtes à l’emploi de ressources par chaînes.

La recherche est effectuée par le biais de l’interface QueryBuilder, de sorte qu’elle puisse être personnalisée avec plusieurs prédicats. Vous pouvez remplacer l’ensemble des prédicats par défaut dans le répertoire suivant : /apps/dam/content/search/searchpanel/facets.

Vous pouvez également ajouter des onglets supplémentaires au panneau d’administration d’AEM Assets.

Remplacement

Pour remplacer les prédicats préconfigurés, copiez le nœud facets du répertoire /libs/dam/content/search/searchpanel dans le répertoire /apps/dam/content/search/searchpanel/ ou spécifiez une autre propriété facetURL dans la configuration du panneau de recherche (la valeur par défaut est /libs/dam/content/search/searchpanel/facets.overlay.infinity.json). 

screen_shot_2012-06-05at113619am

Remarque :

Par défaut, la structure de répertoire sous /apps n’existe pas et doit être créée. Assurez-vous que les types de nœuds correspondent à ceux existant sous /libs.

Ajout d’onglets

Vous pouvez ajouter des onglets de recherche supplémentaires en les configurant dans le panneau d’administration d’AEM Assets. Pour créer des onglets supplémentaires, procédez comme suit :

  1. Créez la structure de dossiers /apps/wcm/core/content/damadmin/tabs, si elle n’existe pas encore, puis copiez le nœud tabs dans le répertoire /libs/wcm/core/content/damadmin et collez-le.

  2. Créez et configurez le second onglet, le cas échéant. 

    Remarque :

    Lorsque vous créez un second nœud siteadminsearchpanel, assurez-vous de définir une propriété id afin d’éviter tout conflit de formulaire.

Création de prédicats personnalisés

AEM Assets est fourni avec un ensemble de prédicats prédéfinis qui peuvent être utilisés pour personnaliser une page de partage de ressources. Ce processus de personnalisation d’un partage de ressources est abordé dans la section Création et configuration d’une page de partage de ressources.

En plus d’utiliser des prédicats préexistants, les développeurs AEM peuvent créer leur propres prédicats à l’aide de l’API Query Builder.

La création de prédicats personnalisés nécessite des connaissances de base sur la structure des widgets.

La pratique recommandée consiste à copier un prédicat existant, puis à le modifier. Des exemples de prédicats sont disponibles dans le répertoire /libs/cq/search/components/predicates.

Exemple : création d’un prédicat de propriété simple

Pour créer un prédicat de propriété, procédez comme suit :

  1. Créez un dossier de composant dans votre répertoire de projets, par exemple /apps/geometrixx/components/titlepredicate.

  2. Ajoutez content.xml :

    <?xml version="1.0" encoding="UTF-8"?>
    <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
        jcr:primaryType="cq:Component"
        jcr:title="Title Predicate"
        sling:resourceSuperType="foundation/components/parbase"
        allowedParents="[*/parsys]"
        componentGroup="Search"/>
    
  3. Ajoutez 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. Pour rendre le composant accessible, vous devez être en mesure de le modifier. Pour rendre un composant modifiable, dans CRXDE, ajoutez un nœud cq:editConfig du type principal cq:EditConfig. Afin de pouvoir supprimer des paragraphes, ajoutez une propriété à valeurs multiples cq:actions avec une valeur unique de DELETE.

  5. Accédez à votre navigateur puis, sur votre exemple de page (par exemple press.html), basculez en mode de conception et activez votre nouveau composant pour le système de paragraphes de prédicats (par exemple left).

  6. En mode d’édition, le nouveau composant est désormais disponible dans le sidekick (accessible dans le groupe Recherche). Insérez le composant dans la colonne Prédicats et saisissez un mot de recherche, par exemple Diamant, puis cliquez sur la loupe pour lancer la recherche.

    Remarque :

    Lors de la recherche, assurez-vous de saisir le terme exact en respectant la casse.

Exemple : création d’un prédicat de groupe simple

Pour créer un prédicat de groupe, procédez comme suit :

  1. Créez un dossier de composant dans votre répertoire de projets, par exemple /apps/geometrixx/components/picspredicate.

  2. Ajoutez content.xml :

    <?xml version="1.0" encoding="UTF-8"?>
    <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
        jcr:primaryType="cq:Component"
        jcr:title="Image Formats"
        sling:resourceSuperType="foundation/components/parbase"
        allowedParents="[*/parsys]"
        componentGroup="Search"/>
    
  3. Ajoutez 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. Pour rendre le composant accessible, vous devez être en mesure de le modifier. Pour rendre un composant modifiable, dans CRXDE, ajoutez un nœud cq:editConfig du type principal cq:EditConfig. Afin de pouvoir supprimer des paragraphes, ajoutez une propriété à valeurs multiples cq:actions avec une valeur unique de DELETE.

  5. Accédez à votre navigateur puis, sur votre exemple de page (par exemple press.html), basculez en mode de conception et activez votre nouveau composant pour le système de paragraphes de prédicats (par exemple left).

  6. En mode d’édition, le nouveau composant est désormais disponible dans le sidekick (accessible dans le groupe Recherche). Insérez le composant dans la colonne Prédicats.

Widgets de prédicats installés

Les prédicats suivants sont disponibles en tant que widgets ExtJS préconfigurés.

FulltextPredicate

Propriété
Type Description
predicateName Chaîne Nom du prédicat. La valeur par défaut est « fulltext ».
searchCallback Fonction Rappel de déclenchement de la recherche lorsque l’événement « keyup » survient. La valeur par défaut est « CQ.wcm.SiteAdmin.doSearch ».

PropertyPredicate

Propriété
Type Description
predicateName Chaîne Nom du prédicat. La valeur par défaut est « property ».
propertyName Chaîne Nom de la propriété JCR. La valeur par défaut est « jcr:title ».
defaultValue
Chaîne
Valeur par défaut préremplie.

PathPredicate

Propriété
Type Description
predicateName Chaîne Nom du prédicat. La valeur par défaut est « path ».
rootPath Chaîne Chemin d’accès racine du prédicat. La valeur par défaut est « /content/dam ».
pathFieldPredicateName Chaîne La valeur par défaut est « folder ».
showFlatOption Booléen Indicateur d’affichage de la case à cocher « Rechercher dans les sous-dossiers ». La valeur par défaut est « true ».

DatePredicate

Propriété
Type Description
predicateName Chaîne Nom du prédicat. La valeur par défaut est « daterange ».
propertyName Chaîne Nom de la propriété JCR. La valeur par défaut est « jcr:content/jcr:lastModified ».
defaultValue Chaîne Valeur par défaut préremplie.

OptionsPredicate

Propriété
Type Description
title Chaîne Ajoute un titre principal supplémentaire.
predicateName String Nom du prédicat. La valeur par défaut est « daterange ».
propertyName Chaîne Nom de la propriété JCR. La valeur par défaut est « jcr:content/metadata/cq:tags ».
collapse Chaîne Niveau de réduction. La valeur par défaut est « level1 ».
triggerSearch Booléen Indicateur de déclenchement de la recherche lorsque la case est cochée. La valeur par défaut est « false ».
searchCallback Fonction Rappel de déclenchement de la recherche. La valeur par défaut est « CQ.wcm.SiteAdmin.doSearch ».
searchTimeoutTime Nombre Délai d’expiration avant le déclenchement du rappel searchCallback. La valeur par défaut est 800 ms.

Personnalisation des résultats de la recherche

La présentation des résultats de la recherche sur une page de partage des ressources est régie par la loupe sélectionnée. AEM Assets est fourni avec un ensemble de loupes prédéfinies qui peuvent être utilisées pour personnaliser une page de partage de ressources. Ce processus de personnalisation d’un partage de ressources est abordé dans la section Création et configuration d’une page de partage de ressources.

En plus d’utiliser des loupes préexistantes, les développeurs AEM peuvent créer leur propres loupes.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne