Ampliación del Administrador de varios sitios

Última actualización: 2024-01-23

Esta página le ayuda a ampliar las funcionalidades del Administrador de varios sitios:

  • Obtenga información acerca de los miembros principales de la API de Java de MSM.
  • Cree una acción de sincronización que se pueda utilizar en una configuración de despliegue.
  • Modifique el idioma y los códigos de país predeterminados.
NOTA

Esta página debe leerse junto con las Reutilización del contenido: administrador de varios sitios.

Las siguientes secciones de Reestructuración de repositorios de Sites también pueden ser de interés:

PRECAUCIÓN

El Administrador de varios sitios y su API se utilizan durante la creación de un sitio web, por lo que solo están pensados para su uso en un entorno de creación.

Información general sobre la API de Java

Multi Site Management consta de los siguientes paquetes:

Los objetos de API de MSM principales interactúan de la siguiente manera (consulte también Términos utilizados):

Objetos principales de la API de MSM

  • Blueprint

    A Blueprint (como en configuración de modelo) especifica las páginas desde las que una live copy puede heredar contenido.

    Modelo

    • El uso de una configuración de modelo ( Blueprint) es opcional, pero:

      • Permite al autor utilizar la variable Despliegue en el origen (para insertar (explícitamente) modificaciones en live copies que heredan de este origen).
      • Permite al autor utilizar Crear sitio; esto permite al usuario seleccionar idiomas fácilmente y configurar la estructura de la live copy.
      • Define la configuración de despliegue predeterminada para cualquier Live Copies resultante.
  • LiveRelationship

    El LiveRelationship especifica la conexión (relación) entre un recurso de la rama de live copy y su recurso de origen/modelo equivalente.

    • Las relaciones se utilizan para realizar la herencia y el despliegue.

    • LiveRelationship Los objetos de proporcionan acceso (referencias) a las configuraciones de despliegue ( RolloutConfig), LiveCopy, y LiveStatus objetos relacionados con la relación.

    • Por ejemplo, se crea una Live Copy en /content/copy/us desde el origen/modelo en /content/we-retail/language-masters. Los recursos /content/we.retail/language-masters/en/jcr:content y /content/copy/us/en/jcr:content formar una relación.

  • LiveCopy

    LiveCopy contiene los detalles de configuración de las relaciones ( LiveRelationship) entre los recursos de live copy y sus recursos de origen/modelo.

    • Utilice el LiveCopy para acceder a la ruta de la página, la ruta de la página de origen/modelo, las configuraciones de despliegue y si las páginas secundarias también se incluyen en la LiveCopy.

    • A LiveCopy El nodo se crea cada vez que Crear sitio o Crear Live Copy se utiliza.

  • LiveStatus

    LiveStatus proporcionan acceso al estado de tiempo de ejecución de un objeto LiveRelationship. Se utiliza para consultar el estado de sincronización de una Live Copy.

  • LiveAction

    A LiveAction es una acción que se ejecuta en cada recurso implicado en el despliegue.

    • Las LiveActions solo se generan mediante RolloutConfigs.
  • LiveActionFactory

    Crea LiveAction objetos dados a LiveAction configuración. Las configuraciones se almacenan como recursos en el repositorio.

  • RolloutConfig

    El RolloutConfig contiene una lista de LiveActions, que se utilizará cuando se active. El LiveCopy hereda el RolloutConfig y el resultado está presente en la variable LiveRelationship.

    • La configuración de una Live Copy por primera vez también utiliza un RolloutConfig (que almacena en déclencheur las LiveActions).

Creación de una nueva acción de sincronización

Cree acciones de sincronización personalizadas para utilizarlas con las configuraciones de despliegue. Cree una acción de sincronización cuando la variable acciones instaladas no cumplen los requisitos específicos de su aplicación. Para ello, cree dos clases:

El LiveActionFactory crea instancias del LiveAction para una configuración determinada:

  • LiveAction Las clases incluyen los métodos siguientes:

    • getName: Devuelve el nombre de la acción. El nombre se utiliza para hacer referencia a la acción, por ejemplo, en las configuraciones de despliegue.
    • execute: realiza las tareas de la acción.
  • LiveActionFactory Las clases incluyen los siguientes miembros:

    • LIVE_ACTION_NAME: Un campo que contiene el nombre del asociado LiveAction. Este nombre debe coincidir con el valor devuelto por el getName método del LiveAction clase.

    • createAction: crea una instancia de LiveAction. El opcional Resource se puede utilizar para proporcionar información de configuración.

    • createsAction: Devuelve el nombre del asociado LiveAction.

Acceso al nodo de configuración de LiveAction

Utilice el LiveAction nodo de configuración en el repositorio para almacenar información que afecta al comportamiento en tiempo de ejecución del LiveAction ejemplo. El nodo en el repositorio que almacena el LiveAction La configuración de está disponible para LiveActionFactory durante la ejecución. Por lo tanto, puede agregar propiedades al nodo de configuración a y utilizarlas en su LiveActionFactory según sea necesario.

Por ejemplo, una LiveAction necesita almacenar el nombre del autor del modelo. Una propiedad del nodo de configuración incluye el nombre de la propiedad de la página de modelo que almacena la información. En tiempo de ejecución, la variable LiveAction recupera el nombre de propiedad de la configuración y, a continuación, obtiene el valor de propiedad.

El parámetro del LiveActionFactory.createAction El método es un Resource objeto. Esta Resource representa el objeto cq:LiveSyncAction nodo para esta acción activa en la configuración de despliegue; consulte Creación de una configuración de despliegue. Como de costumbre, al utilizar un nodo de configuración, debe adaptarlo a un ValueMap objeto:

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);
}

Acceder a los nodos de destino, a los nodos de origen y a LiveRelationship

Los siguientes objetos se proporcionan como parámetros del execute método del LiveAction objeto:

  • A Resource que representa el origen de Live Copy.

  • A Resource que representa el destino de Live Copy.

  • El LiveRelationship para la live copy.

  • El autoSave indica si su LiveAction Debe guardar los cambios realizados en el repositorio.

  • El valor reset indica el modo reset del despliegue.

A partir de estos objetos se puede obtener toda la información acerca de la LiveCopy. También puede utilizar la variable Resource objetos que obtener ResourceResolver, Session, y Node objetos. Estos objetos son útiles para manipular el contenido del repositorio:

En la primera línea del siguiente código, el origen es el Resource objeto de la página de origen:

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

El Resource los argumentos pueden ser null o Resources objetos que no se adaptan a Node objetos, como NonExistingResource objetos.

Creación de una nueva configuración de despliegue

Cree una configuración de despliegue cuando las configuraciones de despliegue instaladas no cumplan los requisitos de la aplicación:

La nueva configuración de despliegue está disponible al establecer configuraciones de despliegue en una página de modelo o Live Copy.

Creación de la configuración de despliegue

  1. Abrir CRXDE Lite; por ejemplo:
    http://localhost:4502/crx/de

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

    NOTA

    Esta es la versión personalizada del proyecto de:
    /libs/msm/wcm/rolloutconfigs
    Si esta es su primera configuración, esto /libs La rama debe utilizarse como plantilla para crear la nueva rama en /apps.

    NOTA

    No cambie nada en el /libs ruta.
    Esto se debe al contenido de /libs se sobrescribe la próxima vez que actualice la instancia (y es posible que se sobrescriba al aplicar una revisión o un paquete de funciones).
    El método recomendado para la configuración y otros cambios es:

    • Vuelva a crear el elemento necesario (es decir, tal como existe en /libs) en /apps
    • Realice cualquier cambio en /apps
  3. En esta sección Crear Cree un nodo con las siguientes propiedades:

    • Nombre: Nombre del nodo de la configuración de lanzamiento. md#install-synchronization-actions), por ejemplo, contentCopy o workflow.
    • Tipo: cq:RolloutConfig
  4. Agregue las siguientes propiedades a este nodo:

    • Nombre: jcr:title

      Tipo: String
      Valor: un título de identificación que aparecerá en la interfaz de usuario.

    • Nombre: jcr:description

      Tipo: String
      Valor: una descripción opcional.

    • Nombre: cq:trigger

      Tipo: String
      Valor: La Desplegar Déclencheur para su uso. Seleccionar de:

      • rollout
      • modification
      • publish
      • deactivate
  5. Haga clic en Guardar todo.

Añadir acciones de sincronización a la configuración de despliegue

Las configuraciones de despliegue se almacenan debajo de nodo de configuración de despliegue que ha creado en /apps/msm/<your-project>/rolloutconfigs nodo.

Agregar nodos secundarios de tipo cq:LiveSyncAction para agregar acciones de sincronización a la configuración de lanzamiento. El orden de los nodos de acción de sincronización determina el orden en que se producen las acciones.

  1. Aún en CRXDE Lite, seleccione su Configuración de despliegue nodo.

    Por ejemplo:
    /apps/msm/myproject/rolloutconfigs/myrolloutconfig

  2. Crear Cree un nodo con las siguientes propiedades de nodo:

    • Nombre: Nombre del nodo de la acción de sincronización.
      El nombre debe ser el mismo que Nombre de acción en la tabla debajo de Acciones de sincronización, por ejemplo, contentCopy o workflow.
    • Tipo: cq:LiveSyncAction
  3. Añada y configure tantos nodos de acción de sincronización como sea necesario. Reorganice los nodos de acción para que su orden coincida con el orden en que desea que se produzcan. El nodo de acción superior se produce primero.

Crear y usar una clase LiveActionFactory simple

Siga los procedimientos de esta sección para desarrollar una LiveActionFactory y utilizarlo en una configuración de despliegue. Los procedimientos utilizan Maven y Eclipse para desarrollar e implementar el LiveActionFactory:

  1. Creación del proyecto de Maven e importarlo a Eclipse.
  2. Añadir dependencias al archivo POM.
  3. Implementación de LiveActionFactory interfaz e implemente el paquete OSGi.
  4. Creación de la configuración de despliegue.
  5. Creación de la Live Copy.

El proyecto Maven y el código fuente de la clase Java están disponibles en el repositorio Git público.

CÓDIGO EN GITHUB

Puede encontrar el código de esta página en GitHub

Creación del proyecto Maven

El siguiente procedimiento requiere que haya agregado el perfil público de Adobe al archivo de configuración de Maven.

  1. Abra una sesión de terminal o de línea de comandos y cambie el directorio para que apunte a la ubicación de donde crear el proyecto.

  2. Introduzca el siguiente comando:

    mvn archetype:generate -DarchetypeGroupId=com.day.jcr.vault -DarchetypeArtifactId=multimodule-content-package-archetype -DarchetypeVersion=1.0.0 -DarchetypeRepository=adobe-public-releases
    
  3. Especifique los siguientes valores en la solicitud interactiva:

    • groupId: com.adobe.example.msm
    • artifactId: MyLiveActionFactory
    • version: 1.0-SNAPSHOT
    • package: MyPackage
    • appsFolderName: myapp
    • artifactName: MyLiveActionFactory package
    • packageGroup: myPackages
  4. Iniciar Eclipse y Importación del proyecto Maven.

Añadir dependencias al archivo POM

Agregue dependencias para que el compilador Eclipse pueda hacer referencia a las clases que se utilizan en el LiveActionFactory código.

  1. En el Explorador del proyecto Eclipse, abra el archivo:

    MyLiveActionFactory/pom.xml

  2. En el editor, haga clic en pom.xml y busque la pestaña project/dependencyManagement/dependencies sección.

  3. Agregue el siguiente XML dentro de la variable dependencyManagement y, a continuación, guarde el archivo.

     <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. Abra el archivo POM para el paquete desde Explorador de proyectos en MyLiveActionFactory-bundle/pom.xml.

  5. En el editor, haga clic en pom.xml y busque la sección proyecto/dependencias. Agregue el siguiente XML dentro del elemento dependencies y, a continuación, guarde el archivo:

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

Implementar LiveActionFactory

Lo siguiente LiveActionFactory clase implementa un LiveAction que registra mensajes sobre las páginas de origen y destino y copia el cq:lastModifiedBy del nodo de origen al nodo de destino. El nombre de la acción activa es exampleLiveAction.

  1. En el Explorador del proyecto Eclipse, haga clic con el botón secundario en MyLiveActionFactory-bundle/src/main/java/com.adobe.example.msm paquete y haga clic en Nuevo > Clase. Para el Nombre, introduzca ExampleLiveActionFactory y luego haga clic en Finalizar.

  2. Abra el ExampleLiveActionFactory.java , reemplace el contenido por el siguiente código y guarde el archivo.

    package com.adobe.example.msm;
    
    import java.util.Collections;
    
    import com.day.cq.wcm.api.NameConstants;
    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.osgi.service.component.annotations.Component;
    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(
    service = LiveActionFactory.class,
    property = {LiveActionFactory.LIVE_ACTION_NAME + "=" + ExampleLiveActionFactory.LIVE_ACTION_NAME})
    public class ExampleLiveActionFactory implements LiveActionFactory<LiveAction> {
      private static final Logger logger = LoggerFactory.getLogger(ExampleLiveActionFactory.class);
    
      public static final String LIVE_ACTION_NAME = "CustomAction";
    
      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(LIVE_ACTION_NAME, configs);
      }
      public String createsAction() {
        return LIVE_ACTION_NAME;
      }
    
      /************* 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(NameConstants.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. Con el terminal o la sesión de comandos, cambie el directorio a MyLiveActionFactory (el directorio del proyecto Maven). A continuación, introduzca el siguiente comando:

    mvn -PautoInstallPackage clean install
    

    AEM El error.log debe indicar que se ha iniciado el paquete.

    Por ejemplo, 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]
    

Creación de la configuración de despliegue de ejemplo

Cree la configuración de despliegue de MSM que utiliza el LiveActionFactory que ha creado:

  1. Crear y configurar una Configuración de despliegue con el procedimiento estándar - y con las propiedades:

    • Título: Configuración de despliegue de ejemplo
    • Nombre: example plerolloutconfig
    • cq:déclencheur: publish

Añadir la acción Live a la configuración de despliegue de ejemplo

Configure la configuración de despliegue que creó en el procedimiento anterior para que utilice el ExampleLiveActionFactory clase.

  1. Abrir CRXDE Lite; por ejemplo, https://localhost:4502/crx/de.

  2. Cree el siguiente nodo en /apps/msm/rolloutconfigs/examplerolloutconfig/jcr:content:

    • Nombre: exampleLiveAction
    • Tipo: cq:LiveSyncAction
  3. Haga clic en Guardar todo.

  4. Seleccione el exampleLiveAction y agregue la siguiente propiedad:

    • Nombre: repLastModBy
    • Tipo: Boolean
    • Valor: true

    Esta propiedad indica a ExampleLiveAction que el cq:LastModifiedBy La propiedad debe replicarse desde el nodo de origen al nodo de destino.

  5. Haga clic en Guardar todo.

Creación de la Live Copy

Creación de una Live Copy de la rama Inglés/Productos del sitio de referencia de We.Retail mediante la configuración de despliegue:

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

  • Configuración de despliegue: Configuración de despliegue de ejemplo

Activar el Productos (inglés) de la rama de origen y observe los mensajes de registro que la variable LiveAction La clase genera:

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

Cambiar nombres de idiomas y países predeterminados

AEM utiliza un conjunto predeterminado de códigos de idioma y país.

  • El código de idioma predeterminado es el código de dos letras en minúsculas, tal como se define en la norma ISO-639-1.
  • El código de país predeterminado es el código de dos letras en minúsculas o mayúsculas, tal como se define en la norma ISO 3166.

MSM utiliza una lista almacenada de códigos de idioma y país para determinar el nombre del país asociado al nombre de la versión de idioma de la página. Si es necesario, puede cambiar los siguientes aspectos de la lista:

  • Títulos de idiomas
  • Nombres de países
  • Países predeterminados para idiomas (para códigos como en, de, entre otros)

La lista de idiomas se almacena debajo de /libs/wcm/core/resources/languages nodo. Cada nodo secundario representa un idioma o un idioma-país:

  • El nombre del nodo es el código de idioma (como en o de) o el código language_country (por ejemplo, en_us o de_ch).

  • El language La propiedad del nodo almacena el nombre completo del idioma del código.

  • El country La propiedad del nodo almacena el nombre completo del país para el código.

  • Cuando el nombre del nodo solo consta de un código de idioma (como en), la propiedad del país es *y un adicional de defaultCountry La propiedad almacena el código del idioma-país para indicar el país que se va a utilizar.

Definición de idioma

Para modificar los idiomas:

  1. Abra CRXDE Lite en el explorador web; por ejemplo, https://localhost:4502/crx/de

  2. Seleccione el /apps y haga clic en Crear, entonces Crear carpeta.

    Asigne un nombre a la nueva carpeta wcm.

  3. Repita el paso anterior para crear el /apps/wcm/core árbol de carpetas. Creación de un nodo de tipo sling:Folder in core llamado resources.

  4. Haga clic con el botón derecho en /libs/wcm/core/resources/languages y haga clic en Copiar.

  5. Haga clic con el botón derecho en /apps/wcm/core/resources y haga clic en Pegar. Modifique los nodos secundarios según sea necesario.

  6. Haga clic en Guardar todo.

  7. Clic Herramientas, Operaciones entonces Consola web. Desde esta consola, haga clic en OSGi, entonces Configuración.

  8. Busque y haga clic en Administrador de idiomas de CQ WCM por día y cambie el valor de Lista de idiomas hasta /apps/wcm/core/resources/languages, luego haga clic en Guardar.

    Administrador de idiomas de CQ WCM por día

Configuración de los bloqueos MSM en las propiedades de página (IU táctil)

Al crear una propiedad de página personalizada, es posible que tenga que considerar si la nueva propiedad debe cumplir los requisitos para su despliegue en cualquier Live Copy.

Por ejemplo, si se agregan dos propiedades de página nuevas:

  • Correo electrónico de contacto:

    • No es necesario desplegar esta propiedad, ya que será diferente en cada país (o marca, etc.).
  • Estilo visual clave:

    • El requisito del proyecto es que esta propiedad se implemente, ya que es (generalmente) común a todos los países (o marcas, etc.).

A continuación, debe asegurarse de que:

  • Correo electrónico de contacto:

  • Se excluye de las propiedades desplegadas; consulte Exclusión de propiedades y tipos de nodos de la sincronización.

  • Estilo visual clave:

  • Asegúrese de que no tiene permiso para editar esta propiedad en la interfaz de usuario táctil a menos que se cancele la herencia, y que también puede restablecer la herencia; esto se controla haciendo clic en los vínculos de cadena/cadena rota que alternan para indicar el estado de la conexión.

La propiedad dialog controla si una propiedad de página está sujeta a despliegue y, por lo tanto, a cancelación o restablecimiento de la herencia al editar:

  • cq-msm-lockable

    • es aplicable a los elementos de un cuadro de diálogo de IU táctil
    • creará el símbolo de vínculo de cadena en el cuadro de diálogo
    • solo permite editar si se cancela la herencia (el vínculo de cadena está roto)
    • solo se aplica al primer nivel secundario del recurso
      • Tipo: String

      • Valor: contiene el nombre de la propiedad considerada (y es comparable al valor de la propiedad) name; por ejemplo, consulte

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

Cuándo cq-msm-lockable se ha definido, romper/cerrar la cadena interactuará con MSM de la siguiente manera:

  • si el valor de cq-msm-lockable es:

    • Relativo (por ejemplo, myProperty o ./myProperty)

      • agregará y quitará la propiedad de cq:propertyInheritanceCancelled.
    • Absoluto (por ejemplo, /image)

      • romper la cadena cancelará la herencia añadiendo el cq:LiveSyncCancelled mixin a ./image y configuración cq:isCancelledForChildren hasta true.

      • al cerrar la cadena, se revierte la herencia.

NOTA

cq-msm-lockable se aplica al primer nivel secundario del recurso que se va a editar y no funciona en ningún antecesor de nivel más profundo, independientemente de si el valor se define como absoluto o relativo.

NOTA

Al volver a habilitar la herencia, la propiedad de página Live Copy no se sincroniza automáticamente con la propiedad de origen. Puede solicitar manualmente una sincronización si es necesario.

En esta página