Auf dieser Seite erfahren Sie, wie Sie die Funktionen des Multi-Site-Managers erweitern können:
Diese Seite sollte in Verbindung mit Folgendem gelesen werden:
Multi Site Manager und die dazugehörige API werden beim Erstellen einer Website verwendet und sind daher ausschließlich für die Nutzung in einer Autorenumgebung gedacht.
Multi Site Manager umfasst die folgenden Pakete:
Die wichtigsten MSM-API-Objekte interagieren wie folgt (siehe auch: Verwendete Begriffe):
Blueprint
Eine Blueprint
(wie in der Blueprint-Konfiguration) gibt die Seiten an, von denen eine Live-Kopie Inhalte übernehmen 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.
LiveRelationship
-Objekte Zugriff (Verweise) auf die Rollout-Konfigurationen ( RolloutConfig
) LiveCopy
und LiveStatus
Objekte im Zusammenhang mit der Beziehung bieten./content/copy/us
aus der Quelle/Vorlage unter /content/we-retail/language-masters
erstellt. Die Ressourcen /content/we.retail/language-masters/en/jcr:content
und /content/copy/us/en/jcr:content
bilden eine Beziehung.LiveCopy
enthält die Konfigurationsdetails für die Beziehungen ( LiveRelationship
) zwischen den Live-Kopierressourcen und ihren Quell-/Blaupausenressourcen.
LiveCopy
-Klasse, um auf den Pfad der Seite, den Pfad der Quell-/Blueprint-Seite, die Rollout-Konfigurationen und ob untergeordnete Seiten auch in LiveCopy
enthalten sind.LiveCopy
-Knoten wird jedes Mal erstellt, wenn Site erstellen oder Live Copy erstellen verwendet wird.LiveStatus
-Objekte bieten Zugriff auf den Laufzeitstatus einer LiveRelationship
. Sie können damit den Synchronisierungsstatus einer Live Copy abfragen.
LiveAction
ist eine Aktion, die für jede Ressource ausgeführt wird, die an der Einführung beteiligt ist.
LiveActionFactory
erstellt LiveAction
Objekte, die eine bestimmte LiveAction
Konfiguration erhalten. Konfigurationen werden als Ressourcen im Repository gespeichert.
RolloutConfig
enthält eine Liste von LiveActions
, die bei Auslösung verwendet werden soll. Das LiveCopy
übernimmt das RolloutConfig
und das Ergebnis ist im LiveRelationship
vorhanden.
Erstellen Sie benutzerdefinierte Synchronisierungsaktionen für die Nutzung mit Ihren Rollout-Konfigurationen. Wenn die installierten Aktionen Ihre spezifischen Anwendungsanforderungen nicht erfüllen, können Sie eine Synchronisierungsaktion erstellen. Hierfür erstellen Sie zwei Klassen:
com.day.cq.wcm.msm.api.LiveAction
-Schnittstelle, die die Aktion ausführt.com.day.cq.wcm.msm.api.LiveActionFactory
implementiert und Instanzen der Klasse LiveAction
erstellt.LiveActionFactory
erstellt Instanzen der LiveAction
-Klasse für eine bestimmte Konfiguration:
LiveAction
-Klassen umfassen die folgenden Methoden:
getName
: Gibt den Namen der Aktion zurück. Mit diesem Namen wird auf die Aktion verwiesen, z. B. in Rollout-Konfigurationen.
execute
: Führt die Aufgabe der Aktion aus.LiveActionFactory
-Klassen umfassen die folgenden Mitglieder:
LIVE_ACTION_NAME
: Ein Feld, das den Namen der zugehörigen Variablen enthält LiveAction
. Dieser Name muss mit dem Wert übereinstimmen, der von der Methode getName
der Klasse LiveAction
zurückgegeben wird.createAction
: Erstellt eine Instanz der LiveAction
. Der optionale Parameter Resource
kann verwendet werden, um Konfigurationsdaten bereitzustellen.createsAction
: Gibt den Namen der verknüpften Variablen zurück LiveAction
.Mit dem LiveAction
-Konfigurationsknoten im Repository können Sie Daten 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.
Beispielsweise muss eine LiveAction
den Namen eines 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 LiveActionFactory
.createAction
-Methode ist ein Resource
-Objekt. Dieses Resource
-Objekt repräsentiert den Knoten cq:LiveSyncAction
für diese Live-Aktion in der Rollout-Konfiguration; siehe: Erstellen einer Rollout-Konfiguration. 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:
ein Resource
-Objekt, das die Quelle der Live Copy repräsentiert
ein Resource
-Objekt, das das Ziel der Live Copy repräsentiert
das LiveRelationship
-Objekt für die Live Copy
Der Wert autoSave
gibt an, ob die LiveAction
am Repository vorgenommene Änderungen speichern soll.
Der Wert für das Zurücksetzen legt den Rollout-Modus für das Zurücksetzen fest.
Über diese Objekte können Sie alle Daten zur LiveCopy
abrufen. Sie können auch die Objekte Resource
verwenden, um die Objekte ResourceResolver
, Session
und Node
abzurufen. 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.
Erstellen Sie eine Rollout-Konfiguration, wenn die installierten Rollout-Konfigurationen Ihre Anwendungsanforderungen nicht erfüllen:
Die neue Rollout-Konfiguration steht dann zur Verfügung, wenn Sie die Rollout-Konfigurationen auf einem Blueprint oder einer Live Copy-Seite festlegen.
Informationen hierzu finden Sie auch unter Best Practices zum Anpassen von Rollouts.
So erstellen Sie eine neue Rollout-Konfiguration:
Offene CRXDE Lite; Beispiel:
http://localhost:4502/crx/de
Navigieren Sie zu :
/apps/msm/<your-project>/rolloutconfigs
Dies ist die benutzerdefinierte Version Ihres Projekts von:
/libs/msm/wcm/rolloutconfigs
Muss erstellt werden, wenn dies Ihre erste Konfiguration ist.
Sie dürfen keinerlei Änderungen im Pfad /libs vornehmen.
Denn der Inhalt von /libs wird überschrieben, wenn Sie die Instanz das nächste Mal aktualisieren. (Außerdem kann der Inhalt auch durch Anwenden von Hotfixes oder Feature Packs überschrieben werden.)
Die empfohlene Methode zur Konfiguration und für andere Änderungen sieht wie folgt aus:
Unter diesem Erstellen 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 Rollout- Auslöser wird verwendet. Die folgenden Optionen stehen zur Auswahl:
rollout
modification
publish
deactivate
Klicken Sie auf Alle speichern.
Rollout-Konfigurationen werden unter dem Rollout-Konfigurationsknoten gespeichert, den Sie unter dem Knoten /apps/msm/<your-project>/rolloutconfigs
erstellt haben.
hinzufügen untergeordneten Knoten des Typs cq:LiveSyncAction
, um der Rollout-Konfiguration Synchronisierungsaktionen hinzuzufügen. Die Reihenfolge der Synchronisierungsaktionsknoten bestimmt die Reihenfolge, in der die Aktionen durchgeführt werden.
Wählen Sie noch in der CRXDE Lite den Knoten Rollout-Konfiguration aus.
Beispiel:
/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. Ordnen Sie die Aktionen so an, dass sie die Reihenfolge aufweisen, in der sie ausgeführt werden sollen. Der oberste Aktionsknoten wird zuerst ausgeführt.
Klicken Sie auf Alle speichern.
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
-Schnittstelle und stellen Sie das OSGi-Bundle bereit.Das Maven-Projekt und der Quellcode der Java-Klasse sind im öffentlichen Git-Repository verfügbar.
CODE AUF GITHUB
Den Code dieser Seite finden Sie auf GitHub
Das folgende Verfahren setzt voraus, dass Sie das adobe-public-Profil zu Ihrer Maven-Einstellungsdatei hinzugefügt haben.
Ö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
Legen Sie auf interaktive Aufforderung die folgenden Werte fest:
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 ist exampleLiveAction
.
Klicken Sie im Eclipse Project Explorer mit der rechten Maustaste auf das MyLiveActionFactory-bundle/src/main/java/com.adobe.example.msm
-Paket 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-Datei error.log
sollte angeben, dass das Bundle gestartet wurde.
Beispiel: http://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]
Erstellen Sie die MSM-Rollout-Konfiguration, die die von Ihnen erstellte LiveActionFactory
nutzt:
Erstellen und konfigurieren Sie eine Rollout-Konfiguration über das Standardverfahren – mit den folgenden Eigenschaften:
publish
Konfigurieren Sie die beim vorhergehenden Verfahren erstellte Rollout-Konfiguration so, dass sie die Klasse ExampleLiveActionFactory
verwendet.
Öffnen Sie CRXDE Lite; z. B. http://localhost:4502/crx/de.
Erstellen Sie den folgenden Knoten unter /apps/msm/rolloutconfigs/examplerolloutconfig/jcr:content
:
exampleLiveAction
cq:LiveSyncAction
Klicken Sie auf Alle speichern.
Wählen Sie den Knoten exampleLiveAction
aus und fügen Sie die folgende Eigenschaft hinzu:
repLastModBy
Boolean
true
Diese Eigenschaft teilt der Klasse ExampleLiveAction
mit, dass die Eigenschaft cq:LastModifiedBy
vom Quell- zum Zielknoten repliziert werden soll.
Klicken Sie auf Alle speichern.
Erstellen Sie eine Live Copy des English/Products-Zweigs der We.Retail-Referenzwebsite mit Ihrer Rollout-Konfiguration:
Quelle: /content/we-retail/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 an Sprachen und Ländercodes.
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. Die folgenden Elemente der Liste können Sie bei Bedarf ändern:
en
, de
)Die sprachliche Liste wird 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 Sprachencode (z. B. en
oder de
) oder der Sprachencode (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 Sprachcode besteht (z. B. en
), ist die Eigenschaft country *
und eine zusätzliche defaultCountry
-Eigenschaft speichert den Code des Landes, um das zu verwendende Land anzugeben.
So bearbeiten Sie die Sprachen:
Öffnen Sie CRXDE Lite in Ihrem Webbrowser; z. B. http://localhost:4502/crx/de
Wählen Sie den Ordner /apps
aus und klicken Sie auf Erstellen, dann Ordner erstellen.
Benennen Sie den neuen Ordner wcm
.
Wiederholen Sie den vorherigen Schritt, um die Ordnerstruktur /apps/wcm/core
zu erstellen. Erstellen Sie eine Node des Typs sling:Folder
im 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. Bearbeiten 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.
Klicken Sie auf Day CQ WCM Language Manager und ändern Sie den Wert von Language Liste in /apps/wcm/core/resources/languages
und klicken Sie dann auf Save.
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:
Contact Email:
Key Visual Style:
Dann müssen Sie Folgendes sicherstellen:
E-Mail kontaktieren:
Wichtiger visueller Stil:
Ob eine Seiteneigenschaft bereitgestellt werden soll und daher bei der Bearbeitung abhängig vom Abbruch/der erneuten Aktivierung der Vererbung ist, wird durch die folgende Dialogeigenschaft gesteuert:
cq-msm-lockable
gilt für Elemente in einem Dialogfeld der Touch-optimierten Benutzeroberfläche
erstellt das Ketten-Linksymbol im Dialogfeld
lässt die Bearbeitung nur zu, wenn die Vererbung abgebrochen wird (also der Ketten-Link gebrochen ist)
nur für die erste untergeordnete Ebene der Ressource
Typ: String
Wert: den Namen der betreffenden Immobilie besitzt (und mit dem Wert der Immobilie vergleichbar ist name
; Siehe zum Beispiel
/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
:
Relativ (z. B. myProperty
oder ./myProperty
)
cq:propertyInheritanceCancelled
hinzugefügt und entfernt.Absolut (z. /image
)
cq:LiveSyncCancelled
mixin zu ./image
hinzufügen und cq:isCancelledForChildren
auf true
setzen.cq-msm-lockable wird auf die erste untergeordnete Ebene der zu bearbeitenden Ressource angewendet und funktioniert nicht auf einem übergeordneten Element, 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.