Estensione di Multi Site Manager

Questa pagina consente di estendere le funzionalità di Multi Site Manager:

  • Scopri i membri principali dell’API Java MSM.
  • Crea una nuova azione di sincronizzazione che può essere utilizzata in una configurazione di rollout.
  • Modificare la lingua e i codici paese predefiniti.
NOTA

Questa pagina deve essere letta insieme a Riutilizzo del contenuto: Multi Site Manager.

Potrebbero interessare anche le seguenti sezioni della ristrutturazione dell’archivio siti nella AEM 6.4:

ATTENZIONE

Multi Site Manager e le relative API vengono utilizzate per la creazione di siti web, quindi sono destinate solo all’utilizzo in un ambiente di authoring.

Panoramica dell’API Java

Multi Site Management è costituito dai seguenti pacchetti:

I principali oggetti API MSM interagiscono come segue (vedi anche Termini utilizzati):

chlimage_1-73

  • Blueprint

    Una Blueprint (come in configurazione blueprint) specifica le pagine da cui una Live Copy può ereditare il contenuto.

    chlimage_1-74

    • L’utilizzo di una configurazione blueprint ( Blueprint) è facoltativo, ma:

      • Consente all’autore di utilizzare l’opzione Rollout sull’origine (per inviare in modo esplicito le modifiche alle Live Copy che ereditano da questa origine).
      • Consente all'autore di utilizzare Crea sito; questo consente all’utente di selezionare facilmente le lingue e configurare la struttura della Live Copy.
      • Definisce la configurazione di rollout predefinita per tutte le Live Copy risultanti.
  • LiveRelationship

    Il parametro LiveRelationship specifica la connessione (relazione) tra una risorsa nel ramo Live Copy e la relativa risorsa sorgente/blueprint equivalente.

    • Le relazioni vengono utilizzate per la realizzazione dell’ereditarietà e del rollout.

    • LiveRelationship Gli oggetti forniscono l’accesso (riferimenti) alle configurazioni di rollout ( RolloutConfig), LiveCopy e LiveStatus agli oggetti correlati alla relazione.

    • Ad esempio, una Live Copy viene creata in /content/copy/us dall’origine/blueprint in /content/we-retail/language-masters. Le risorse /content/we.retail/language-masters/en/jcr:content e /content/copy/us/en/jcr:content formano una relazione.

  • LiveCopy

    LiveCopy contiene i dettagli di configurazione delle relazioni ( LiveRelationship) tra le risorse Live Copy e le relative risorse di origine/blueprint.

    • Utilizza la classe LiveCopy per accedere al percorso della pagina, al percorso della pagina sorgente/blueprint, alle configurazioni di rollout e al fatto che anche le pagine figlie siano incluse nel percorso LiveCopy.

    • Un nodo LiveCopy viene creato ogni volta che si utilizza Crea sito o Crea Live Copy.

  • LiveStatus

    LiveStatus Gli oggetti forniscono l'accesso allo stato di runtime di un LiveRelationship. Utilizza per eseguire una query sullo stato di sincronizzazione di una Live Copy.

  • LiveAction

    Un LiveAction è un'azione eseguita su ogni risorsa coinvolta nel rollout.

    • Le LiveActions sono generate solo da RolloutConfigs.
  • LiveActionFactory

    Crea oggetti LiveAction in base a una configurazione LiveAction. Le configurazioni vengono memorizzate come risorse nell’archivio.

  • RolloutConfig

    Il RolloutConfig contiene un elenco di LiveActions da utilizzare quando viene attivato. Il LiveCopy eredita il RolloutConfig e il risultato è presente nel LiveRelationship.

    • L'impostazione di una Live Copy per la prima volta utilizza anche un RolloutConfig (che attiva le LiveActions).

Creazione di una nuova azione di sincronizzazione

Crea azioni di sincronizzazione personalizzate da utilizzare con le configurazioni di rollout. Crea un'azione di sincronizzazione quando le azioni installate non soddisfano i requisiti specifici dell'applicazione. Per eseguire questa operazione, creare due classi:

Il LiveActionFactory crea istanze della classe LiveAction per una determinata configurazione:

  • LiveAction le classi includono i metodi seguenti:

    • getName: Restituisce il nome dell'azione Il nome viene utilizzato per fare riferimento all'azione, ad esempio nelle configurazioni di rollout.
    • execute: Esegue le attività dell'azione.
  • LiveActionFactory le classi includono i seguenti membri:

    • LIVE_ACTION_NAME: Un campo contenente il nome del associato LiveAction. Questo nome deve coincidere con il valore restituito dal metodo getName della classe LiveAction.

    • createAction: Crea un'istanza del LiveAction. Il parametro opzionale Resource può essere utilizzato per fornire informazioni sulla configurazione.

    • createsAction: Restituisce il nome del associato LiveAction.

Accesso al nodo di configurazione LiveAction

Utilizza il nodo di configurazione LiveAction nell'archivio per memorizzare informazioni che influiscono sul comportamento di runtime dell'istanza LiveAction. Il nodo nell'archivio che memorizza la configurazione LiveAction è disponibile per l'oggetto LiveActionFactory in fase di esecuzione. Pertanto, puoi aggiungere proprietà al nodo di configurazione a e utilizzarle nell'implementazione LiveActionFactory in base alle esigenze.

Ad esempio, un LiveAction deve memorizzare il nome dell’autore della blueprint. Una proprietà del nodo di configurazione include il nome della proprietà della pagina blueprint che memorizza le informazioni. In fase di esecuzione, il LiveAction recupera il nome della proprietà dalla configurazione, quindi ottiene il valore della proprietà.

Il parametro del metodo [LiveActionFactory](https://helpx.adobe.com/it/experience-manager/6-5/sites/developing/using/reference-materials/javadoc/com/day/cq/wcm/msm/api/LiveActionFactory.html).createAction è un oggetto Resource. Questo oggetto Resource rappresenta il nodo cq:LiveSyncAction per questa azione live nella configurazione di rollout; consulta Creazione di una configurazione di rollout. Come di consueto, quando utilizzi un nodo di configurazione, devi adattarlo a un oggetto ValueMap :

public LiveAction createAction(Resource resource) throws WCMException {
        ValueMap config;
        if (resource == null || resource.adaptTo(ValueMap.class) == null) {
            config = new ValueMapDecorator(Collections.<String, Object>emptyMap());
        } else {
            config = resource.adaptTo(ValueMap.class);
        }
        return new MyLiveAction(config, this);
}

Accesso ai nodi di Target, ai nodi sorgente e alla LiveRelationship

I seguenti oggetti vengono forniti come parametri del metodo execute dell'oggetto LiveAction :

  • Un oggetto Resource che rappresenta l'origine della Live Copy.

  • Un oggetto Resource che rappresenta la destinazione della Live Copy.

  • L'oggetto LiveRelationship per la Live Copy.

  • Il valore autoSave indica se LiveAction deve salvare le modifiche apportate al repository.

  • Il valore di reset indica la modalità di ripristino del rollout.

Da questi oggetti è possibile ottenere tutte le informazioni sul LiveCopy. È inoltre possibile utilizzare gli oggetti Resource per ottenere gli oggetti ResourceResolver, Session e Node. Questi oggetti sono utili per manipolare il contenuto dell’archivio:

Nella prima riga del codice seguente, source è l'oggetto Resource della pagina di origine:

ResourceResolver resolver = source.getResourceResolver();
Session session = resolver.adaptTo(javax.jcr.Session.class);
Node sourcenode = source.adaptTo(javax.jcr.Node.class);
NOTA

Gli argomenti Resource possono essere oggetti null o Resources che non si adattano agli oggetti Node, ad esempio oggetti NonExistingResource.

Creazione di una nuova configurazione di rollout

Crea una configurazione di rollout quando le configurazioni di rollout installate non soddisfano i requisiti dell'applicazione:

La nuova configurazione di rollout è quindi disponibile quando imposti le configurazioni di rollout su una pagina blueprint o Live Copy.

Creare la configurazione di rollout

Per creare una nuova configurazione di rollout:

  1. CRXDE Lite aperto; ad esempio:
    http://localhost:4502/crx/de

  2. Accedi a :
    /apps/msm/<your-project>/rolloutconfigs

    NOTA

    Questa è la versione personalizzata del progetto di:
    /libs/msm/wcm/rolloutconfigs
    Deve essere creato se si tratta della prima configurazione.

    NOTA

    Non devi modificare nulla nel percorso /libs.
    Questo perché il contenuto di /libs viene sovrascritto la prossima volta che aggiorni l'istanza (e potrebbe essere sovrascritto quando applichi un hotfix o un feature pack).
    Il metodo consigliato per la configurazione e altre modifiche è:

    • Ricrea l'elemento richiesto (cioè come esiste in /libs) sotto /apps
    • Apporta modifiche a /apps
  3. Sotto questo Crea un nodo con le seguenti proprietà:

    • Nome: Nome del nodo della configurazione di rollout. md#install-sync-actions), ad esempio contentCopy o workflow.
    • Tipo: cq:RolloutConfig
  4. Aggiungi le seguenti proprietà a questo nodo:

    • Nome: jcr:title

      Tipo: String
      Valore: Titolo di identificazione che verrà visualizzato nell’interfaccia utente.

    • Nome: jcr:description

      Tipo: String
      Valore: Una descrizione facoltativa.

    • Nome: cq:trigger

      Tipo: String
      Valore: Attivazione di rollout da utilizzare. Seleziona da:

      • rollout
      • modification
      • publish
      • deactivate
  5. Fare clic su Salva tutto.

Aggiungere azioni di sincronizzazione alla configurazione del rollout

Le configurazioni di rollout sono memorizzate sotto il nodo di configurazione di rollout 🔗 creato sotto il nodo /apps/msm/<your-project>/rolloutconfigs.

Aggiungi nodi figlio di tipo cq:LiveSyncAction per aggiungere azioni di sincronizzazione alla configurazione di rollout. L’ordine dei nodi di azione di sincronizzazione determina l’ordine in cui si verificano le azioni.

  1. Sempre in CRXDE Lite, seleziona il nodo Rollout configurazione.

    Esempio:
    /apps/msm/myproject/rolloutconfigs/myrolloutconfig

  2. ​Crea un nodo con le seguenti proprietà del nodo:

    • Nome: Nome del nodo dell'azione di sincronizzazione.
      Il nome deve essere lo stesso di Nome azione nella tabella in Azioni di sincronizzazione, ad esempio contentCopy o workflow.
    • Tipo: cq:LiveSyncAction
  3. Aggiungi e configura tutti i nodi di azione di sincronizzazione necessari. Ridisponi i nodi di azione in modo che il loro ordine corrisponda all’ordine in cui desideri che si verifichino. Il nodo di azione più in alto si verifica per primo.

Creazione e utilizzo di una semplice classe LiveActionFactory

Segui le procedure descritte in questa sezione per sviluppare un LiveActionFactory e utilizzarlo in una configurazione di rollout. Le procedure utilizzano Maven e Eclipse per sviluppare e distribuire LiveActionFactory:

  1. Crea il progetto Maven e importalo in Eclipse.
  2. Aggiungi le dipendenze al file POM.
  3. Implementa l’ LiveActionFactory interfaccia e implementa il bundle OSGi.
  4. Crea la configurazione di rollout.
  5. Crea la Live Copy.

Il progetto Maven e il codice sorgente della classe Java sono disponibili nell’archivio Git pubblico.

CODICE SU GITHUB

Puoi trovare il codice di questa pagina su GitHub

Crea progetto Maven

La procedura seguente richiede l’aggiunta del profilo adobe-public al file delle impostazioni Maven.

  1. Apri un terminale o una sessione della riga di comando e modifica la directory in modo che punti alla posizione in cui creare il progetto.

  2. Immetti il seguente comando:

    mvn archetype:generate -DarchetypeGroupId=com.day.jcr.vault -DarchetypeArtifactId=multimodule-content-package-archetype -DarchetypeVersion=1.0.0 -DarchetypeRepository=adobe-public-releases
    
  3. Al prompt interattivo, specifica i seguenti valori:

    • groupId: com.adobe.example.msm
    • artifactId: MyLiveActionFactory
    • version: 1.0-SNAPSHOT
    • package: MyPackage
    • appsFolderName: myapp
    • artifactName: MyLiveActionFactory package
    • packageGroup: myPackages
  4. Avvia Eclipse e importa il progetto Maven.

Aggiungi dipendenze al file POM

Aggiungi le dipendenze in modo che il compilatore Eclipse possa fare riferimento alle classi utilizzate nel codice LiveActionFactory.

  1. In Esplora progetti Eclipse, apri il file:

    MyLiveActionFactory/pom.xml

  2. Nell’editor, fai clic sulla scheda pom.xml e individua la sezione project/dependencyManagement/dependencies .

  3. Aggiungi il seguente XML all'interno dell'elemento dependencyManagement e salva il file.

     <dependency>
      <groupId>com.day.cq.wcm</groupId>
      <artifactId>cq-msm-api</artifactId>
      <version>5.6.2</version>
      <scope>provided</scope>
     </dependency>
     <dependency>
      <groupId>org.apache.sling</groupId>
      <artifactId>org.apache.sling.api</artifactId>
      <version>2.4.3-R1488084</version>
      <scope>provided</scope>
     </dependency>
     <dependency>
      <groupId>com.day.cq.wcm</groupId>
      <artifactId>cq-wcm-api</artifactId>
      <version>5.6.6</version>
      <scope>provided</scope>
     </dependency>
     <dependency>
      <groupId>org.apache.sling</groupId>
      <artifactId>org.apache.sling.commons.json</artifactId>
      <version>2.0.6</version>
      <scope>provided</scope>
     </dependency>
     <dependency>
      <groupId>com.day.cq</groupId>
      <artifactId>cq-commons</artifactId>
      <version>5.6.4</version>
      <scope>provided</scope>
     </dependency>
     <dependency>
      <groupId>org.apache.sling</groupId>
      <artifactId>org.apache.sling.jcr.jcr-wrapper</artifactId>
      <version>2.0.0</version>
      <scope>provided</scope>
     </dependency>
     <dependency>
      <groupId>com.day.cq</groupId>
      <artifactId>cq-commons</artifactId>
      <version>5.6.4</version>
      <scope>provided</scope>
     </dependency>
    
  4. Apri il file POM per il bundle da Project Explorer in MyLiveActionFactory-bundle/pom.xml.

  5. Nell’editor, fai clic sulla scheda pom.xml e individua la sezione progetto/dipendenze . Aggiungi il seguente XML all’interno dell’elemento dipendenze, quindi salva il file:

     <dependency>
      <groupId>com.day.cq.wcm</groupId>
      <artifactId>cq-msm-api</artifactId>
     </dependency>
     <dependency>
      <groupId>org.apache.sling</groupId>
      <artifactId>org.apache.sling.api</artifactId>
     </dependency>
     <dependency>
      <groupId>com.day.cq.wcm</groupId>
      <artifactId>cq-wcm-api</artifactId>
     </dependency>
     <dependency>
      <groupId>org.apache.sling</groupId>
      <artifactId>org.apache.sling.commons.json</artifactId>
     </dependency>
     <dependency>
      <groupId>com.day.cq</groupId>
      <artifactId>cq-commons</artifactId>
     </dependency>
     <dependency>
      <groupId>org.apache.sling</groupId>
      <artifactId>org.apache.sling.jcr.jcr-wrapper</artifactId>
     </dependency>
     <dependency>
      <groupId>com.day.cq</groupId>
      <artifactId>cq-commons</artifactId>
     </dependency>
    

Implementare LiveActionFactory

La seguente classe LiveActionFactory implementa un LiveAction che registra i messaggi relativi alle pagine di origine e di destinazione e copia la proprietà cq:lastModifiedBy dal nodo di origine al nodo di destinazione. Il nome dell’azione live è exampleLiveAction.

  1. In Esplora progetti Eclipse, fai clic con il pulsante destro del mouse sul pacchetto MyLiveActionFactory-bundle/src/main/java/com.adobe.example.msm e fai clic su Nuovo > Classe. Per il Nome, immetti ExampleLiveActionFactory, quindi fai clic su Fine.

  2. Apri il file ExampleLiveActionFactory.java, sostituisci il contenuto con il codice seguente e salva il file .

    package com.adobe.example.msm;
    
    import java.util.Collections;
    
    import org.apache.felix.scr.annotations.Component;
    import org.apache.felix.scr.annotations.Property;
    import org.apache.felix.scr.annotations.Service;
    import org.apache.sling.api.resource.Resource;
    import org.apache.sling.api.resource.ResourceResolver;
    import org.apache.sling.api.resource.ValueMap;
    import org.apache.sling.api.wrappers.ValueMapDecorator;
    import org.apache.sling.commons.json.io.JSONWriter;
    import org.apache.sling.commons.json.JSONException;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import javax.jcr.Node;
    import javax.jcr.RepositoryException;
    import javax.jcr.Session;
    
    import com.day.cq.wcm.msm.api.ActionConfig;
    import com.day.cq.wcm.msm.api.LiveAction;
    import com.day.cq.wcm.msm.api.LiveActionFactory;
    import com.day.cq.wcm.msm.api.LiveRelationship;
    import com.day.cq.wcm.api.WCMException;
    
    @Component(metatype = false)
    @Service
    public class ExampleLiveActionFactory implements LiveActionFactory<LiveAction> {
     @Property(value="exampleLiveAction")
     static final String actionname = LiveActionFactory.LIVE_ACTION_NAME;
    
     public LiveAction createAction(Resource config) {
      ValueMap configs;
      /* Adapt the config resource to a ValueMap */
            if (config == null || config.adaptTo(ValueMap.class) == null) {
                configs = new ValueMapDecorator(Collections.<String, Object>emptyMap());
            } else {
                configs = config.adaptTo(ValueMap.class);
            }
    
      return new ExampleLiveAction(actionname, configs);
     }
     public String createsAction() {
      return actionname;
     }
     /************* LiveAction ****************/
     private static class ExampleLiveAction implements LiveAction {
      private String name;
      private ValueMap configs;
      private static final Logger log = LoggerFactory.getLogger(ExampleLiveAction.class);
    
      public ExampleLiveAction(String nm, ValueMap config){
       name = nm;
       configs = config;
      }
    
      public void execute(Resource source, Resource target,
        LiveRelationship liverel, boolean autoSave, boolean isResetRollout)
          throws WCMException {
    
       String lastMod = null;
    
       log.info(" *** Executing ExampleLiveAction *** ");
    
       /* Determine if the LiveAction is configured to copy the cq:lastModifiedBy property */
       if ((Boolean) configs.get("repLastModBy")){
    
        /* get the source's cq:lastModifiedBy property */
        if (source != null && source.adaptTo(Node.class) !=  null){
         ValueMap sourcevm = source.adaptTo(ValueMap.class);
         lastMod = sourcevm.get(com.day.cq.wcm.msm.api.MSMNameConstants.PN_PAGE_LAST_MOD_BY, String.class);
        }
    
        /* set the target node's la-lastModifiedBy property */
        Session session = null;
        if (target != null && target.adaptTo(Node.class) !=  null){
         ResourceResolver resolver = target.getResourceResolver();
         session = resolver.adaptTo(javax.jcr.Session.class);
         Node targetNode;
         try{
          targetNode=target.adaptTo(javax.jcr.Node.class);
          targetNode.setProperty("la-lastModifiedBy", lastMod);
          log.info(" *** Target node lastModifiedBy property updated: {} ***",lastMod);
         }catch(Exception e){
          log.error(e.getMessage());
         }
        }
        if(autoSave){
         try {
          session.save();
         } catch (Exception e) {
          try {
           session.refresh(true);
          } catch (RepositoryException e1) {
           e1.printStackTrace();
          }
          e.printStackTrace();
         }
        }
       }
      }
      public String getName() {
       return name;
      }
    
      /************* Deprecated *************/
      @Deprecated
      public void execute(ResourceResolver arg0, LiveRelationship arg1,
        ActionConfig arg2, boolean arg3) throws WCMException {
      }
      @Deprecated
      public void execute(ResourceResolver arg0, LiveRelationship arg1,
        ActionConfig arg2, boolean arg3, boolean arg4)
          throws WCMException {
      }
      @Deprecated
      public String getParameterName() {
       return null;
      }
      @Deprecated
      public String[] getPropertiesNames() {
       return null;
      }
      @Deprecated
      public int getRank() {
       return 0;
      }
      @Deprecated
      public String getTitle() {
       return null;
      }
      @Deprecated
      public void write(JSONWriter arg0) throws JSONException {
      }
     }
    }
    
  3. Utilizzando il terminale o la sessione di comando, cambia la directory nella directory MyLiveActionFactory (la directory di progetto Maven). Quindi, immetti il comando seguente:

    mvn -PautoInstallPackage clean install
    

    Il file AEM error.log deve indicare che il bundle è avviato.

    Ad esempio, https://localhost:4502/system/console/status-slinglogs.

    13.08.2013 14:34:55.450 *INFO* [OsgiInstallerImpl] com.adobe.example.msm.MyLiveActionFactory-bundle BundleEvent RESOLVED
    13.08.2013 14:34:55.451 *INFO* [OsgiInstallerImpl] com.adobe.example.msm.MyLiveActionFactory-bundle BundleEvent STARTING
    13.08.2013 14:34:55.451 *INFO* [OsgiInstallerImpl] com.adobe.example.msm.MyLiveActionFactory-bundle BundleEvent STARTED
    13.08.2013 14:34:55.453 *INFO* [OsgiInstallerImpl] com.adobe.example.msm.MyLiveActionFactory-bundle Service [com.adobe.example.msm.ExampleLiveActionFactory,2188] ServiceEvent REGISTERED
    13.08.2013 14:34:55.454 *INFO* [OsgiInstallerImpl] org.apache.sling.audit.osgi.installer Started bundle com.adobe.example.msm.MyLiveActionFactory-bundle [316]
    

Creare la configurazione di rollout di esempio

Crea la configurazione di rollout MSM che utilizza la LiveActionFactory creata:

  1. Crea e configura una Configurazione di rollout con la procedura standard e utilizzando le proprietà:

    • Titolo: Esempio di configurazione del rollout
    • Nome: examplerolloutconfig
    • cq:trigger: publish

Aggiungi l’azione live alla configurazione di rollout di esempio

Configura la configurazione di rollout creata nella procedura precedente in modo che utilizzi la classe ExampleLiveActionFactory .

  1. CRXDE Lite aperto; ad esempio, https://localhost:4502/crx/de.

  2. Crea il seguente nodo sotto /apps/msm/rolloutconfigs/examplerolloutconfig/jcr:content:

    • Nome: exampleLiveAction
    • Tipo: cq:LiveSyncAction
  3. Fare clic su Salva tutto.

  4. Seleziona il nodo exampleLiveAction e aggiungi la seguente proprietà:

    • Nome: repLastModBy
    • Tipo: Boolean
    • Valore: true

    Questa proprietà indica alla classe ExampleLiveAction che la proprietà cq:LastModifiedBy deve essere replicata dall'origine al nodo di destinazione.

  5. Fare clic su Salva tutto.

Creare la Live Copy

Crea una Live Copy del ramo Inglese/Prodotti del sito di riferimento We.Retail utilizzando la configurazione di rollout:

  • Origine: /content/we-retail/language-masters/en/products

  • Configurazione rollout: Esempio di configurazione del rollout

Attiva la pagina Prodotti (inglese) del ramo di origine e osserva i messaggi di log generati dalla classe LiveAction:

16.08.2013 10:53:33.055 *INFO* [Thread-444535] com.adobe.example.msm.ExampleLiveActionFactory$ExampleLiveAction  ***ExampleLiveAction has been executed.***
16.08.2013 10:53:33.055 *INFO* [Thread-444535] com.adobe.example.msm.ExampleLiveActionFactory$ExampleLiveAction  ***Target node lastModifiedBy property updated: admin ***

Modifica dei nomi delle lingue e dei paesi predefiniti

AEM utilizza un set predefinito di codici lingua e paese.

  • Il codice della lingua predefinito è il codice a due lettere minuscolo come definito dallo standard ISO-639-1.
  • Il codice del paese predefinito è il codice a due lettere minuscolo o superiore, come definito dalla norma ISO 3166.

MSM utilizza un elenco memorizzato di codici lingua e paese per determinare il nome del paese associato al nome della versione della lingua della pagina. Se necessario, è possibile modificare i seguenti aspetti dell’elenco:

  • Titoli in lingua
  • Nomi dei paesi
  • Paesi predefiniti per le lingue (per codici quali en, de, tra gli altri)

L'elenco delle lingue viene memorizzato sotto il nodo /libs/wcm/core/resources/languages. Ogni nodo figlio rappresenta una lingua o un paese della lingua:

  • Il nome del nodo è il codice della lingua (ad esempio en o de), o il codice della lingua_del paese (ad esempio en_us o de_ch).

  • La proprietà language del nodo memorizza il nome completo della lingua per il codice.

  • La proprietà country del nodo memorizza il nome completo del paese per il codice.

  • Quando il nome del nodo è costituito solo da un codice della lingua (ad esempio en), la proprietà del paese è * e una proprietà defaultCountry aggiuntiva memorizza il codice del paese della lingua per indicare il paese da utilizzare.

chlimage_1-76

Per modificare le lingue:

  1. Apri CRXDE Lite nel browser Web; ad esempio, https://localhost:4502/crx/de

  2. Seleziona la cartella /apps e fai clic su Crea, quindi Crea cartella.

    Denomina la nuova cartella wcm.

  3. Ripeti il passaggio precedente per creare la struttura ad albero delle cartelle /apps/wcm/core. Crea un nodo di tipo sling:Folder in core denominato resources.

  4. Fai clic con il pulsante destro del mouse sul nodo /libs/wcm/core/resources/languages e fai clic su Copia.

  5. Fai clic con il pulsante destro del mouse sulla cartella /apps/wcm/core/resources e fai clic su Incolla. Modifica i nodi figlio come necessario.

  6. Fare clic su Salva tutto.

  7. Fare clic su Strumenti, Operazioni, quindi Console web. Da questa console fare clic su OSGi, quindi su Configurazione.

  8. Individua e fai clic su Day CQ WCM Language Manager e modifica il valore di Language List in /apps/wcm/core/resources/languages, quindi fai clic su Salva.

    chlimage_1-78

Configurazione dei blocchi MSM nelle proprietà di pagina (interfaccia touch)

Quando crei una proprietà pagina personalizzata, potrebbe essere necessario considerare se la nuova proprietà deve essere idonea per il rollout in qualsiasi Live Copy.

Ad esempio, se vengono aggiunte due nuove proprietà di pagina:

  • E-mail di contatto:

    • Questa proprietà non deve essere implementata, in quanto sarà diversa in ogni paese (o marchio, ecc.).
  • Stile visivo chiave:

    • Il requisito del progetto è che questa proprietà deve essere implementata così come è (di solito) comune a tutti i paesi (o marchi, ecc.).

Poi devi assicurarti che:

  • E-mail di contatto:

  • Stile visivo chiave:

    • Assicurati di non poter modificare questa proprietà nell’interfaccia touch a meno che l’ereditarietà non venga annullata e di poter quindi ripristinare l’ereditarietà; questa opzione è controllata facendo clic sui collegamenti a catena o a catena interrotta che si attivano per indicare lo stato della connessione.

Il fatto che una proprietà di pagina sia soggetta a rollout e, quindi, soggetta a annullamento/ripristino dell’ereditarietà durante la modifica, sia controllata dalla proprietà di dialogo:

  • cq-msm-lockable

    • è applicabile agli elementi in una finestra di dialogo dell’interfaccia touch

    • crea il simbolo di collegamento a catena nella finestra di dialogo

    • consente la modifica solo se l’ereditarietà viene annullata (il collegamento a catena è interrotto)

    • si applica solo al primo livello figlio della risorsa

    • Tipo: String

    • Valore: contiene il nome dell’immobile in questione (ed è comparabile al valore dell’immobile name; ad esempio, vedi

      /libs/foundation/components/page/cq:dialog/content/items/tabs/items/basic/items/column/items/title/items/title

Quando cq-msm-lockable è stato definito, interrompere/chiudere la catena interagisce con MSM nel modo seguente:

  • se il valore di cq-msm-lockable è:

    • Relativo (ad esempio myProperty o ./myProperty)

      • aggiungerà e rimuoverà la proprietà da cq:propertyInheritanceCancelled.
    • Assoluto (ad es. /image)

      • l’interruzione della catena annullerà l’ereditarietà aggiungendo il mixin cq:LiveSyncCancelled a ./image e impostando cq:isCancelledForChildren su true.

      • la chiusura della catena ripristina l’ereditarietà.

NOTA

cq-msm-lockable si applica al primo livello figlio della risorsa da modificare e non funziona su alcun predecessore di livello più profondo, indipendentemente dal fatto che il valore sia definito come assoluto o relativo.

NOTA

Quando riattivi l’ereditarietà, la proprietà della pagina Live Copy non viene sincronizzata automaticamente con la proprietà sorgente. Se necessario, è possibile richiedere manualmente una sincronizzazione.

In questa pagina