In diesem Dokument erfahren Sie, wie Sie die Funktionalität des Multi-Site-Managers erweitern, und werden die folgenden Themen behandelt.
Diese Seite ist im Kontext des Dokuments leichter verständlich Wiederverwenden von Inhalten: Multi Site Manager.
Der Multi-Site-Manager und seine API werden beim Erstellen einer Website verwendet und sind daher nur für die Verwendung in einer Autorenumgebung vorgesehen.
Multi Site Manager umfasst die folgenden Pakete:
Die wichtigsten MSM-API-Objekte interagieren wie folgt (siehe auch den Abschnitt ) Verwendete Begriffe):
Blueprint
- Ein Blueprint
(wie in Blueprint-Konfiguration) legt die Seiten fest, von denen eine Live Copy Inhalte erben kann.
Die Verwendung einer Blueprint-Konfiguration (Blueprint
) ist optional, aber sie:
LiveRelationship
- Die LiveRelationship
legt die Verbindung (Beziehung) zwischen einer Ressource im Live Copy-Zweig und der entsprechenden Quelle/Blueprint-Ressource fest.
Die Beziehungen werden bei der Umsetzung der Vererbung und des Rollouts genutzt.
LiveRelationship
-Objekte bieten Zugriff (Verweise) auf die Rollout-Konfigurationen (RolloutConfig
), LiveCopy
und LiveStatus
-Objekte, die mit der Beziehung zusammenhängen.
Beispiel: Eine Live Copy wird unter /content/copy/us
von der Quelle / dem Blueprint unter /content/wknd/language-masters
erstellt. Die Ressourcen /content/wknd/language-masters/en/jcr:content
und /content/copy/us/en/jcr:content
bilden eine Beziehung.
LiveCopy
- A LiveCopy
enthält Konfigurationsdetails für die Beziehungen (LiveRelationship
) zwischen den Live Copy-Ressourcen und ihren Quell-/Blueprint-Ressourcen.
Über die Klasse LiveCopy
können Sie auf den Pfad der Seite, den Pfad der Quell-/Blueprint-Seite und die Rollout-Konfigurationen zugreifen und festlegen, ob die untergeordneten Seiten ebenfalls in der LiveCopy
enthalten sind.
Ein LiveCopy
-Knoten wird immer erstellt, wenn Website erstellen oder Live Copy erstellen genutzt wird.
LiveStatus
- LiveStatus
-Objekte bieten Zugriff auf den Laufzeitstatus eines LiveRelationship
. Sie können damit den Synchronisierungsstatus einer Live Copy abfragen.
LiveAction
- Eine LiveAction
ist eine Aktion, die auf jeder Ressource, die am Rollout beteiligt ist, ausgeführt wird.
LiveAction
s werden nur von RolloutConfig
s.LiveActionFactory
- A LiveActionFactory
erstellt LiveAction
Objekte, die LiveAction
Konfiguration. Konfigurationen werden als Ressourcen im Repository gespeichert.
RolloutConfig
- Die RolloutConfig
enthält eine Liste der LiveActions
, die nach der Auslösung zum Einsatz kommen sollen. Die LiveCopy
erbt die RolloutConfig
und das Ergebnis befindet sich in der LiveRelationship
.
RolloutConfig
(Trigger der LiveAction
s).Sie können benutzerdefinierte Synchronisierungsaktionen erstellen, die mit Ihren Rollout-Konfigurationen verwendet werden. Dies kann nützlich sein, wenn die Variable installierte Aktionen Ihre spezifischen Anwendungsanforderungen nicht erfüllen.
Erstellen Sie dazu zwei Klassen:
com.day.cq.wcm.msm.api.LiveAction
, die die Aktion ausführtcom.day.cq.wcm.msm.api.LiveActionFactory
-Benutzeroberfläche und erstellt Instanzen Ihrer LiveAction
classLiveActionFactory
erstellt Instanzen der Klasse LiveAction
für eine bestimmte Konfiguration:
LiveAction
-Klassen umfassen die folgenden Methoden:
getName
- Gibt den Namen der Aktion zurück
execute
- Führt die Aufgabe der Aktion aus
LiveActionFactory
-Klassen umfassen die folgenden Mitglieder:
LIVE_ACTION_NAME
- Ein Feld, das den Namen des zugeordneten LiveAction
getName
der Klasse LiveAction
zurückgegeben wird.createAction
- Erstellt eine Instanz der LiveAction
Resource
kann verwendet werden, um Konfigurationsdaten bereitzustellen.createsAction
- Gibt den Namen der verknüpften LiveAction
Mit dem LiveAction
-Konfigurationsknoten im Repository können Sie Informationen speichern, die das Laufzeitverhalten der LiveAction
-Instanz beeinflussen. Der Knoten im Repository, in dem die LiveAction
-Konfiguration gespeichert ist, steht dem LiveActionFactory
-Objekt zur Laufzeit zur Verfügung. Somit können Sie Eigenschaften zum Konfigurationsknoten hinzufügen und sie bei Bedarf in Ihrer LiveActionFactory
-Implementierung nutzen.
Beispiel: eine LiveAction
muss den Namen des Blueprint-Autors speichern. Eine Eigenschaft des Konfigurationsknotens umfasst den Eigenschaftsnamen der Blueprint-Seite, in der die Informationen gespeichert werden. Zur Laufzeit ruft die LiveAction
den Eigenschaftsnamen von der Konfiguration ab und erhält dann den Eigenschaftswert.
Der Parameter der Methode LiveActionFactory.createAction
ist ein Resource
-Objekt. Diese Resource
-Objekt stellt die cq:LiveSyncAction
Knoten für diese Live-Aktion in der Rollout-Konfiguration.
Siehe Erstellen einer Rollout-Konfiguration für weitere Informationen.
Wie bei Konfigurationsknoten gewohnt, sollten Sie ihn an ein ValueMap
-Objekt anpassen:
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);
}
Die folgenden Objekte sind als Parameter der execute
-Methode vom LiveAction
-Objekt verfügbar:
Resource
-Objekt, das die Quelle der Live Copy darstelltResource
-Objekt, das die Zielgruppe der Live Copy darstellt.LiveRelationship
-Objekt für die Live Copy
autoSave
gibt an, ob die LiveAction
am Repository vorgenommene Änderungen speichern sollreset
gibt den Rollout-Reset-Modus an.Aus diesen Objekten können Sie Informationen zu den LiveCopy
. Mit den Resource
-Objekten können Sie auch die ResourceResolver
-, Session
- und Node
-Objekte abrufen. Diese Objekte sind bei der Bearbeitung der Repository-Inhalte hilfreich:
In der ersten Zeile des folgenden Codes ist das Resource
-Objekt der Quellseite die Quelle:
ResourceResolver resolver = source.getResourceResolver();
Session session = resolver.adaptTo(javax.jcr.Session.class);
Node sourcenode = source.adaptTo(javax.jcr.Node.class);
Die Resource
-Argumente können null
- oder Resources
-Objekte sein, die sich nicht an Node
-Objekte anpassen, z. B. NonExistingResource
-Objekte.
Sie können eine Rollout-Konfiguration erstellen, wenn die installierten Rollout-Konfigurationen Ihre Anwendungsanforderungen nicht erfüllen. Führen Sie dazu die folgenden zwei Schritte aus:
Die neue Rollout-Konfiguration steht dann zur Verfügung, wenn Sie die Rollout-Konfigurationen auf einer Blueprint oder einer Live Copy-Seite festlegen.
Informationen hierzu finden Sie auch unter Best Practices zum Anpassen von Rollouts.
So erstellen Sie eine Rollout-Konfiguration:
Öffnen Sie CRXDE Lite unter https://<host>:<port>/crx/de
.
Navigieren Sie zu /apps/msm/<your-project>/rolloutconfigs
, die benutzerdefinierte Version von Ihrem Projekt /libs/msm/wcm/rolloutconfigs
.
/libs
als Vorlage verwendet werden, die neue Verzweigung unter /apps
zu erstellen.Erstellen Sie unter diesem Speicherort einen Knoten mit den folgenden Eigenschaften:
contentCopy
oder workflow
cq:RolloutConfig
Fügen Sie diesem Knoten die folgenden Eigenschaften hinzu:
Name: jcr:title
Typ: String
Wert: Ein Identifizierungstitel, der in der Benutzeroberfläche angezeigt wird
Name: jcr:description
Typ: String
Wert: Eine optionale Beschreibung.
Name: cq:trigger
Typ: String
Wert: Der zu verwendende Rollout-Trigger
rollout
modification
publish
deactivate
Klicken Sie auf Alle speichern.
Rollout-Konfigurationen werden unter dem Rollout-Konfigurationsknoten , die Sie unter der /apps/msm/<your-project>/rolloutconfigs
Knoten.
Fügen Sie untergeordnete Knoten des Typs cq:LiveSyncAction
hinzu, um Synchronisierungsaktionen zur Rollout-Konfiguration hinzuzufügen. Die Reihenfolge der Synchronisierungsaktionsknoten bestimmt die Reihenfolge, in der die Aktionen durchgeführt werden.
Wählen Sie unter CRXDE Lite Ihre Rollout-Konfiguration Knoten, z. B. /apps/msm/myproject/rolloutconfigs/myrolloutconfig
.
Erstellen Sie einen Knoten mit den folgenden Knoteneigenschaften:
contentCopy
oder workflow
.cq:LiveSyncAction
Fügen Sie so viele Synchronisierungsaktionsknoten hinzu wie erforderlich und konfigurieren Sie sie.
Ordnen Sie die Aktionsknoten so an, dass sie die Reihenfolge aufweisen, in der sie ausgeführt werden sollen.
Mit den Verfahren, die in diesem Abschnitt erläutert werden, können Sie eine LiveActionFactory
entwickeln und in einer Rollout-Konfiguration verwenden. Für die Entwicklung und Bereitstellung der LiveActionFactory
werden Maven und Eclipse verwendet:
LiveActionFactory
Benutzeroberfläche und stellen Sie das OSGi-Bundle bereit.Das Maven-Projekt und der Quell-Code der Java-Klasse sind im öffentlichen Git-Repository verfügbar.
Für das folgende Verfahren müssen Sie die adobe-public
Profil zu Ihrer Maven-Einstellungsdatei hinzufügen.
Öffnen Sie eine Terminal- oder Befehlszeilensitzung und ändern Sie das Verzeichnis in den Ort, an dem Sie das Projekt erstellen möchten.
Geben Sie den folgenden Befehl ein:
mvn archetype:generate -DarchetypeGroupId=com.day.jcr.vault -DarchetypeArtifactId=multimodule-content-package-archetype -DarchetypeVersion=1.0.0 -DarchetypeRepository=adobe-public-releases
Geben Sie in der interaktiven Eingabeaufforderung die folgenden Werte an:
groupId
: com.adobe.example.msm
artifactId
: MyLiveActionFactory
version
: 1.0-SNAPSHOT
package
: MyPackage
appsFolderName
: myapp
artifactName
: MyLiveActionFactory package
packageGroup
: myPackages
Starten Sie Eclipse und importieren Sie das Maven-Projekt.
Fügen Sie Abhängigkeiten hinzu, damit der Eclipse-Compiler auf die Klassen verweisen kann, die im LiveActionFactory
-Code verwendet werden.
Wählen Sie im Eclipse-Projekt-Explorer folgende Datei aus MyLiveActionFactory/pom.xml
.
Klicken Sie im Editor auf die Registerkarte pom.xml
und suchen Sie den Abschnitt project/dependencyManagement/dependencies
.
Fügen Sie den folgenden XML-Code zum Element dependencyManagement
hinzu und speichern Sie dann die Datei.
<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>
Öffnen Sie im Projekt-Explorer unter MyLiveActionFactory-bundle/pom.xml
die POM-Datei für das Bundle.
Klicken Sie im Editor auf die Registerkarte pom.xml
und suchen Sie den Abschnitt project/dependencies. Fügen Sie den folgenden XML-Code zum Element „dependencies“ hinzu und speichern Sie dann die Datei:
<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>
Die folgende LiveActionFactory
-Klasse implementiert eine LiveAction
, die Nachrichten zu Quell- und Zielseiten protokolliert und die Eigenschaft cq:lastModifiedBy
vom Quell- zum Zielknoten kopiert. Der Name der Live-Aktion lautet exampleLiveAction
.
Klicken Sie Projekt-Explorer von Eclipse mit der rechten Maustaste auf das Paket MyLiveActionFactory-bundle/src/main/java/com.adobe.example.msm
und klicken Sie auf Neu > Klasse.
Geben Sie als Name den Wert ExampleLiveActionFactory
ein und klicken Sie dann auf Fertig.
Öffnen Sie die Datei ExampleLiveActionFactory.java
, ersetzen Sie den Inhalt durch den folgenden Code und speichern Sie die Datei.
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 {
}
}
}
Ändern Sie über eine Terminal- oder Befehlszeilensitzung das Verzeichnis in das Verzeichnis MyLiveActionFactory
(das Maven-Projektverzeichnis). Geben Sie dann den folgenden Befehl ein:
mvn -PautoInstallPackage clean install
Die AEM error.log
sollte anzeigen, dass das Bundle gestartet wurde, sichtbar in den Protokollen unter https://<host>:<port>/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]
Erstellen Sie die MSM-Rollout-Konfiguration, die die von Ihnen erstellte LiveActionFactory
nutzt:
Erstellen und konfigurieren Sie eine Rollout-Konfiguration mit dem Standardverfahren unter Verwendung der Eigenschaften:
publish
Konfigurieren Sie die beim vorhergehenden Verfahren erstellte Rollout-Konfiguration so, dass sie die Klasse ExampleLiveActionFactory
verwendet.
Öffnen Sie CRXDE Lite.
Erstellen Sie den entsprechenden Knoten unter /apps/msm/rolloutconfigs/examplerolloutconfig/jcr:content
:
exampleLiveAction
cq:LiveSyncAction
Klicken Sie auf Alle speichern.
Wählen Sie die exampleLiveAction
-Knoten und fügen Sie eine Eigenschaft hinzu, die der ExampleLiveAction
-Klasse die cq:LastModifiedBy
-Eigenschaft sollte von der Quelle zum Zielknoten repliziert werden.
repLastModBy
Boolean
true
Klicken Sie auf Alle speichern.
Erstellen einer Live Copy der englischen/Products-Verzweigung der WKND-Referenz-Website unter Verwendung Ihrer Rollout-Konfiguration:
Quelle: /content/wknd/language-masters/en/products
Rollout-Konfiguration: Rollout-Beispielkonfiguration
Aktivieren Sie die (englische) Seite Products des Quellzweigs und beobachten Sie die Protokollnachrichten, die von der Klasse LiveAction
erzeugt werden:
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 ***
AEM verwendet einen Standardsatz von Sprach- und Länder-Codes.
MSM bestimmt anhand einer gespeicherten Liste von Sprach- und Ländercodes den Namen des Landes, das mit dem Namen der Sprachversion Ihrer Seite verknüpft ist. Sie können bei Bedarf die folgenden Aspekte der Liste ändern:
en
, de
, u. a.)Die Sprachliste ist unter dem Knoten /libs/wcm/core/resources/languages
gespeichert. Jeder untergeordnete Knoten steht für eine Sprache oder ein Sprachland:
Der Name des Knotens ist der Sprachcode (z. B. en
oder de
) oder dem Sprachcode_country (z. B. en_us
oder de_ch
).
In der Eigenschaft language
des Knotens wird der volle Name der Sprache für den Code gespeichert.
In der Eigenschaft country
des Knotens wird der volle Name des Landes für den Code gespeichert.
Wenn der Knotenname nur aus einem Sprach-Code besteht (z. B. en
), ist die Ländereigenschaft *
und die zusätzliche Eigenschaft defaultCountry
speichert den Code des Sprachlandes, um das zu verwendende Land anzugeben.
So bearbeiten Sie die Sprachen:
Öffnen Sie CRXDE Lite.
Wählen Sie den Ordner /apps
aus und klicken Sie auf Erstellen und dann auf Ordner erstellen.
Geben Sie dem neuen Ordner den Namen wcm
.
Wiederholen Sie diesen Schritt, um die Ordnerstruktur /apps/wcm/core
zu erstellen. Erstellen Sie in sling:Folder
einen Knoten des Typs core
mit dem Namen resources
.
Klicken Sie mit der rechten Maustaste auf den Knoten /libs/wcm/core/resources/languages
und klicken Sie auf Kopieren.
Klicken Sie mit der rechten Maustaste auf den Ordner /apps/wcm/core/resources
und klicken Sie auf Einfügen. Ändern Sie die untergeordneten Knoten nach Bedarf.
Klicken Sie auf Alle speichern.
Klicken Sie auf Tools > Vorgänge > Web-Konsole. Klicken Sie in dieser Konsole auf OSGi > Konfiguration.
Suchen Sie Day CQ WCM Language Manager, klicken Sie darauf und ändern Sie den Wert von Language List in /apps/wcm/core/resources/languages
. Klicken Sie dann auf Speichern.
Beim Erstellen einer benutzerdefinierten Seiteneigenschaft müssen Sie ggf. überlegen, ob die neue Eigenschaft für den Rollout auf allen Live Copies qualifiziert sein soll.
Beispiel: Zwei neue Seiteneigenschaften werden hinzugefügt:
Kontakt-E-Mail:
Wichtigster visueller Stil:
Dann müssen Sie Folgendes sicherstellen:
Kontakt-E-Mail:
Wichtigster visueller Stil:
Ob für eine Seiteneigenschaft ein Rollout durchgeführt werden muss und daher beim Bearbeiten die Vererbung abgebrochen/reaktiviert werden kann, wird durch die folgende Dialogeigenschaft gesteuert:
cq-msm-lockable
String
name
Ein Beispiel finden Sie unter
/libs/foundation/components/page/cq:dialog/content/items/tabs/items/basic/items/column/items/title/items/title
Wenn cq-msm-lockable
definiert wurde, interagiert das Öffnen oder Schließen der Kettenverbindung mit MSM wie folgt:
Wenn der Wert von cq-msm-lockable
ist:
Relativ (zum Beispiel: myProperty
oder ./myProperty
)
cq:propertyInheritanceCancelled
.Absolut (zum Beispiel: /image
)
Wenn Sie die Kette durchbrechen, wird die Vererbung durch Hinzufügen der cq:LiveSyncCancelled
Mixin zu ./image
und Einstellung cq:isCancelledForChildren
nach true
.
Wenn Sie die Kette schließen, wird die Vererbung zurückgesetzt.
cq-msm-lockable
gilt für die erste untergeordnete Ebene der Ressource, die bearbeitet werden soll, und funktioniert nicht auf einem Vorläuferelement auf einer tieferen Ebene, unabhängig davon, ob der Wert als absolut oder relativ definiert ist.
Wenn Sie die Vererbung erneut aktivieren, wird die Eigenschaft der Live Copy-Seite nicht automatisch mit der Quelleigenschaft synchronisiert. Sie können ggf. manuell eine Synchronisierung anfordern.