Multi Site Manager の拡張 extending-the-multi-site-manager

CAUTION
AEM 6.4 の拡張サポートは終了し、このドキュメントは更新されなくなりました。 詳細は、 技術サポート期間. サポートされているバージョンを見つける ここ.

このページでは、マルチサイトマネージャーの機能を拡張する方法について説明します。

  • MSM Java API の主なメンバーについて説明します。
  • ロールアウト設定で使用できる、新しい同期アクションを作成します。
  • デフォルトの言語コードと国コードを変更します。
NOTE
このページは、次と共にお読みください。
CAUTION
Multi Site Manager とその API は、Web サイトのオーサリング時に使用されるので、オーサー環境でのみ使用することを目的としています。

Java API の概要 overview-of-the-java-api

マルチサイト管理は、次のパッケージで構成されています。

主な MSM API オブジェクトは、次のように操作します ( 使用された用語):

chlimage_1-35

  • BlueprintBlueprintブループリント設定)は、ライブコピーのコンテンツ継承元となるページを指定します。

    chlimage_1-36

    • ブループリント設定(Blueprint)の使用は任意ですが、これを使用すると、

      • 作成者がソースに対して「ロールアウト」オプションを使用できます(これにより、このソースから継承するライブコピーに変更を(明示的に)プッシュできます)。
      • 作成者が サイトを作成;これにより、ユーザーは簡単に言語を選択し、ライブコピーの構造を設定できます。
      • 結果のライブコピーに対するデフォルトのロールアウト設定を定義します。
  • LiveRelationshipLiveRelationship は、ライブコピーブランチのリソースと、同等のソースまたはブループリントのリソースとの関連付け(関係)を指定します。

    • この関係は、継承およびロールアウトの実現時に使用されます。
    • LiveRelationship オブジェクトは、ロールアウト設定(RolloutConfig)、LiveCopy 、および関係に関連付けた LiveStatus オブジェクトへのアクセス(参照)を可能にします。
    • 例えば、/content/we-retail/language-masters にあるソースまたはブループリントから、/content/copy/us にライブコピーが作成されるとします。リソース /content/we.retail/language-masters/en/jcr:content および /content/copy/us/en/jcr:content は関係を築きます。
  • LiveCopy は、ライブコピーのリソースとそのソースまたはブループリントのリソースとの関係(LiveRelationship)の詳細な設定を保持します。

    • LiveCopy クラスを使用すると、ページのパスや、ソースまたはブループリントページのパス、ロールアウト設定にアクセスでき、さらに子ページも LiveCopy に含まれるかどうかを決めます。
    • LiveCopy ノードは、「サイトを作成」または「ライブコピーを作成」を使用するたびに作成されます。
  • LiveStatus オブジェクトは、LiveRelationship の実行時ステータスへのアクセスを可能にします。このオブジェクトを使用して、ライブコピーの同期ステータスを問い合わせます。

  • LiveAction は、ロールアウトに関係する各リソースで実行されるアクションです。

    • LiveAction は、RolloutConfig によってのみ生成されます。
  • LiveActionFactory 作成 LiveAction 与えられたオブジェクト LiveAction 設定。 設定は、リポジトリ内にリソースとして保存されます。

  • RolloutConfig 次のリストを保持: LiveActions:トリガー時に使用します。 LiveCopyRolloutConfig を継承し、その結果が LiveRelationship に含まれます。

    • ライブコピーの初回セットアップでは、(LiveActions をトリガーする )RolloutConfig も使用します。

新しい同期アクションの作成 creating-a-new-synchronization-action

ロールアウト設定で使用するカスタム同期アクションを作成します。 同期アクションを作成する ( インストール済みのアクション 特定のアプリケーション要件を満たさないでください。 これをおこなうには、次の 2 つのクラスを作成します。

LiveActionFactory は、指定された設定の LiveAction クラスのインスタンスを作成します。

  • LiveAction クラスには次のメソッドが含まれます。

    • getName:アクション名を返します。この名前は、ロールアウト設定などで、アクションを参照するために使用します。
      • execute:アクションのタスクを実行します。
  • LiveActionFactory クラスには次のメンバーが含まれます。

    • LIVE_ACTION_NAME:関連付けた LiveAction の名前を格納するフィールド。この名前は、getName クラスの LiveAction メソッドが返す値と一致する必要があります。
    • createActionLiveAction のインスタンスを作成します。オプションの Resource パラメーターを使用して、設定情報を提供できます。
    • createsAction:関連付けられた LiveAction の名前を返します。

LiveAction 設定ノードへのアクセス accessing-the-liveaction-configuration-node

リポジトリ内の LiveAction 設定ノードを使用して、LiveAction インスタンスの実行時動作に影響を与える情報を保存します。LiveAction 設定を保存するリポジトリ内のノードは、実行時に LiveActionFactory オブジェクトに使用できます。そのため、設定ノードにプロパティを追加し、必要に応じて LiveActionFactory 実装内で使用することができます。

例えば、LiveAction にはブループリント作成者の名前を保存する必要があります。設定ノードのプロパティには、情報を保存するブループリントページのプロパティ名が含まれます。実行時、LiveAction は設定からプロパティ名を取得して、そのプロパティ値を取得します。

LiveActionFactory メソッドのパラメーターは .createAction オブジェクトです。Resource Resource オブジェクトは、ロールアウト設定内のこのライブアクションの cq:LiveSyncAction ノードを表します。詳しくはロールアウト設定の作成を参照してください。通常どおり、設定ノードを使用する場合は、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);
}

ターゲットノード、ソースノード、LiveRelationship へのアクセス accessing-target-nodes-source-nodes-and-the-liverelationship

execute オブジェクトの LiveAction メソッドのパラメーターとして、以下のオブジェクトを指定します。

  • ライブコピーのソースを表す Resource オブジェクト。

  • ライブコピーのターゲットを表す Resource オブジェクト。

  • ライブコピーの LiveRelationship オブジェクト。

  • autoSave は、LiveAction がリポジトリに対しておこなわれた変更を保存する必要があることを示します。

  • リセット値は、ロールアウトのリセットモードを示します。

これらのオブジェクトから、LiveCopy に関するすべての情報を取得できます。Resource オブジェクトを使用して、ResourceResolverSessionNode の各オブジェクトも取得できます。これらのオブジェクトは、リポジトリコンテンツの操作に役立ちます。

以下のコードの先頭行で、source はソースページの Resource オブジェクトです。

ResourceResolver resolver = source.getResourceResolver();
Session session = resolver.adaptTo(javax.jcr.Session.class);
Node sourcenode = source.adaptTo(javax.jcr.Node.class);
NOTE
Resource 引数には、null Resources オブジェクトなどの Node オブジェクトに適応しない NonExistingResource またはオブジェクトを指定できます。

新しいロールアウト設定の作成 creating-a-new-rollout-configuration

インストールされたロールアウト設定がアプリケーションの要件を満たさない場合は、ロールアウト設定を作成します。

新しいロールアウト設定は、ブループリントページまたはライブコピーページでロールアウト設定を設定する際に使用できます。

ロールアウト設定の作成 create-the-rollout-configuration

新しいロールアウト設定を作成するには:

  1. CRXDE Lite を開きます。例:
    http://localhost:4502/crx/de

  2. 次に移動します。
    /apps/msm/<your-project>/rolloutconfigs

    note note
    NOTE
    これは、次のプロジェクトのカスタマイズバージョンです。
    /libs/msm/wcm/rolloutconfigs
    これが最初の設定の場合は、作成する必要があります。
    note note
    NOTE
    /libs パス内の設定は一切変更しないでください。
    /libs のコンテンツは、インスタンスを次回アップグレードするとき(場合によってはホットフィックスまたは機能パックを適用したとき)に上書きされるからです。
    設定およびその他の変更に推奨される方法は次のとおりです。
    • 必要な項目(例:/libs 内に存在する項目)を、/apps の下で再作成します。
    • /apps 内で変更作業を行います。
  3. この下に、次のプロパティを持つノードを​ 作成 ​します。

    • 名前:ロールアウト設定のノード名です。md#installed-synchronization-actions)、例えば、 contentCopy または workflow です。
    • タイプcq:RolloutConfig
  4. このノードに次のプロパティを追加します。

    • 名前jcr:title

      String
      :UI に表示される識別タイトルです。

    • 名前jcr:description

      String
      :オプションの説明です。

    • 名前cq:trigger

      String
      ロールアウトトリガーを使用します。 次から選択します。

      • rollout
      • modification
      • publish
      • deactivate
  5. すべて保存」をクリックします。

ロールアウト設定への同期アクションの追加 add-synchronization-actions-to-the-rollout-configuration

ロールアウト設定は、 /apps/msm/<your-project>/rolloutconfigs ノードの下に作成したロールアウト設定ノードの下に保存されています。

タイプ cq:LiveSyncAction の子ノードを追加して、同期アクションをロールアウト設定に追加します。同期アクションノードの順序によって、アクションが実行される順序が決まります。

  1. CRXDE Lite のまま、ロールアウト設定ノードを選択します。

    次に例を示します。
    /apps/msm/myproject/rolloutconfigs/myrolloutconfig

  2. 次のノードプロパティを持つノードを​ 作成

    • 名前:同期アクションのノード名。
      名前は、同期アクションの下の表の「アクション名」と同じである必要があります。例えば、contentCopy または workflow です。
    • タイプcq:LiveSyncAction
  3. 必要な数の同期アクションノードを追加して構成します。 アクションノードの順序が、実行する順序に一致するようにアクションノードを並べ替えます。 最上位のアクションノードが最初に発生します。

  4. すべて保存」をクリックします。

シンプルな LiveActionFactory クラスの作成と使用 creating-and-using-a-simple-liveactionfactory-class

この節の手順を実行して LiveActionFactory を作成し、ロールアウト設定で使用します。この手順では、Maven と Eclipse を使用して、LiveActionFactory を作成およびデプロイします。

  1. Maven プロジェクトの作成 Eclipse に読み込みます。
  2. 依存関係を追加 を POM ファイルに追加します。
  3. LiveActionFactory インターフェイスを実装し、OSGi バンドルをデプロイします。
  4. ロールアウト設定の作成.
  5. ライブコピーを作成します。

Maven プロジェクトと Java クラスのソースコードは、公開されている Git リポジトリで入手できます。

GitHub のコード

このページのコードは GitHub にあります

Maven プロジェクトの作成 create-the-maven-project

以下の手順では、Maven 設定ファイルに adobe-public プロファイルを追加している必要があります。

  1. ターミナルまたはコマンドラインセッションを開き、プロジェクトを作成する場所を指すようにディレクトリを変更します。

  2. 以下のコマンドを入力します。

    code language-xml
    mvn archetype:generate -DarchetypeGroupId=com.day.jcr.vault -DarchetypeArtifactId=multimodule-content-package-archetype -DarchetypeVersion=1.0.0 -DarchetypeRepository=adobe-public-releases
    
  3. インタラクティブプロンプトで次の値を指定します。

    • groupIdcom.adobe.example.msm
    • artifactIdMyLiveActionFactory
    • version1.0-SNAPSHOT
    • packageMyPackage
    • appsFolderNamemyapp
    • artifactNameMyLiveActionFactory package
    • packageGroupmyPackages
  4. Eclipse を起動し、 Maven プロジェクトを読み込む.

POM ファイルへの依存関係の追加 add-dependencies-to-the-pom-file

LiveActionFactory コード内で使用されるクラスを Eclipse コンパイラーが参照できるようにするために、依存関係を追加します。

  1. Eclipse Project Explorer から次のファイルを開きます。

    MyLiveActionFactory/pom.xml

  2. エディターで、「pom.xml」タブをクリックし、project/dependencyManagement/dependencies セクションを探します。

  3. 次の XML を dependencyManagement 要素内に追加して、ファイルを保存します。

    code language-xml
     <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. Project Explorer から、バンドルの POM ファイルを MyLiveActionFactory-bundle/pom.xml で開きます。

  5. エディターで、「pom.xml」タブをクリックし、project/dependencies セクションを探します。次の XML を dependencies 要素内に追加し、ファイルを保存します。

    code language-xml
     <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>
    

LiveActionFactory の実装 implement-liveactionfactory

次の LiveActionFactory クラスは、ソースページおよびターゲットページに関するメッセージをログに記録し、ソースノードからターゲットノードに cq:lastModifiedBy プロパティをコピーする LiveAction を実装します。ライブアクションの名前は exampleLiveAction です。

  1. Eclipse Project Explorer で、MyLiveActionFactory-bundle/src/main/java/com.adobe.example.msm パッケージを右クリックし、新規クラス ​をクリックします。「名前」に「ExampleLiveActionFactory」と入力し、「完了」をクリックします。

  2. ExampleLiveActionFactory.java ファイルを開き、内容を次のコードで置き変えて、ファイルを保存します。

    code language-java
    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. ターミナルまたはコマンドセッションを使用して、ディレクトリを MyLiveActionFactory ディレクトリ(Maven プロジェクトディレクトリ)に変更します。次のコマンドを入力します。

    code language-shell
    mvn -PautoInstallPackage clean install
    

    AEM の error.log ファイルに、バンドルが開始されたことが記録されます。

    例: http://localhost:4502/system/console/status-slinglogs.

    code language-xml
    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]
    

ロールアウト設定例の作成 create-the-example-rollout-configuration

作成した LiveActionFactory を使用する MSM ロールアウト設定を作成します。

  1. 次のプロパティと標準の手順を使用して、ロールアウト設定を作成および設定します。

    • タイトル:ロールアウト設定の例
    • 名前:examplerolloutconfig
    • cq:triggerpublish

ロールアウト設定例へのライブアクションの追加 add-the-live-action-to-the-example-rollout-configuration

前の手順で作成したロールアウト設定で ExampleLiveActionFactory クラスを使用するように設定します。

  1. オープンCRXDE Lite;例: http://localhost:4502/crx/de.

  2. /apps/msm/rolloutconfigs/examplerolloutconfig/jcr:content 以下に、次のノードを作成します。

    • 名前exampleLiveAction
    • cq:LiveSyncAction
  3. すべて保存」をクリックします。

  4. exampleLiveAction ノードを選択して、次のプロパティを追加します。

    • 名前repLastModBy
    • Boolean
    • true

    このプロパティは、cq:LastModifiedBy プロパティをソースノードからターゲットノードにレプリケートする必要がある ExampleLiveAction クラスを示します。

  5. すべて保存」をクリックします。

ライブコピーの作成 create-the-live-copy

ライブコピーの作成 (We.Retail 参照サイトの英語/製品ブランチのロールアウト設定を使用):

  • ソース/content/we-retail/language-masters/en/products

  • ロールアウト設定:ロールアウト設定例

ソースブランチの Products(英語)ページをアクティベートし、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 ***

言語名とデフォルトの国の変更 changing-language-names-and-default-countries

AEMでは、デフォルトの言語と国コードのセットが使用されます。

  • デフォルトの言語コードは、ISO-639-1 で定義されている小文字の 2 文字のコードです。
  • デフォルトの国コードは、ISO 3166 で定義されている小文字または大文字の 2 文字コードです。

MSM では、保存されている言語と国コードのリストを使用して、ページの言語バージョンの名前に関連付けられている国名を特定します。 必要に応じて、リストの以下の側面を変更できます。

  • 言語タイトル
  • 国名
  • ende などのコードの)言語に対するデフォルトの国

言語のリストは、/libs/wcm/core/resources/languages ノードの下に格納されます。各子ノードは、言語または言語-国を表します。

  • ノード名は、言語コード(en または de など)や言語_国コード(en_us または de_ch など)です。

  • ノードの language プロパティには、そのコードが表す言語の正式名称が格納されます。

  • ノードの country プロパティには、そのコードが表す国の正式名称が格納されます。

  • ノード名が言語コードのみ(en など)で構成されている場合、country プロパティは * で、追加の defaultCountry プロパティには、使用する国を示す言語-国のコードが格納されます。

chlimage_1-38

言語の変更手順

  1. WebCRXDE Liteでブラウザを開く。例: http://localhost:4502/crx/de

  2. /apps フォルダーを選択し、「作成」をクリックして、「フォルダーを作成」をクリックします。

    新しいフォルダーに「wcm」という名前を付けます。

  3. 前のステップを繰り返して、/apps/wcm/core フォルダーツリーを作成します。タイプのノードの作成 sling:Folder ~と呼ばれるコアで resources.

  4. /libs/wcm/core/resources/languages ノードを右クリックして、「コピー」をクリックします。

  5. /apps/wcm/core/resources フォルダーを右クリックして、「貼り付け」をクリックします。必要に応じて子ノードを変更します。

  6. すべて保存」をクリックします。

  7. クリック ツール, 運用 その後 Web コンソール. このコンソールで、 OSGi ​を、 設定.

  8. Day CQ WCM Language Manager を探してクリックし、「言語リスト」の値を /apps/wcm/core/resources/languages に変更して、「保存」をクリックします。

    chlimage_1-40

ページプロパティに対する MSM ロックの設定(タッチ操作対応 UI) configuring-msm-locks-on-page-properties-touch-enabled-ui

カスタムページプロパティを作成する際には、新しいプロパティがライブコピーへのロールアウトの対象になるかどうかを検討する必要が生じる場合があります。

例えば、2 つの新しいページプロパティを追加する場合は、次のようになります。

  • 連絡先メール:

    • このプロパティは、国(またはブランドなど)ごとに異なるので、ロールアウトする必要はありません。
  • キービジュアルのスタイル:

    • プロジェクト要件は、このプロパティが(通常は)すべての国(またはブランドなど)共通の状態でロールアウトされることです。

次の点を確認する必要があります。

  • 連絡先メール:

  • キービジュアルのスタイル:

    • 継承がキャンセルされた場合を除き、タッチ操作対応 UI でこのプロパティを編集できないようにしてください。また、継承を元に戻すこともできます。これは、接続の状態を示す切り替えを行うチェーンリンクまたは破断リンクをクリックすることで制御します。

ページプロパティをロールアウトの対象にするかどうか(したがって編集時に継承をキャンセルまたは復元するかどうか)は、次のダイアログプロパティで制御されます。

  • cq-msm-lockable

    • タッチ操作対応 UI ダイアログの項目に適用されます。

    • ダイアログ内にチェーンリンクシンボルを作成します。

    • 継承がキャンセルされている(チェーンリンクが解除されている)場合は、編集のみ可能です。

    • リソースの最初の子レベルにのみ適用されます。

    • タイプString

    • :対象のプロパティ名を保持します(また、name プロパティの値と比較できます)。例として、次を参照してください。

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

cq-msm-lockable が定義されている場合は、次の方法でチェーンの解除またはクローズを MSM と連携できます。

  • cq-msm-lockable の値が次のような場合:

    • 相対指定 ​の場合(例:myProperty または ./myProperty

      • プロパティを cq:propertyInheritanceCancelled から追加および削除します。
    • 絶対指定 ​の場合(例:/image/)

      • チェーンを解除すると、cq:LiveSyncCancelled mixin を ./image に追加し、cq:isCancelledForChildrentrue に設定することで、継承がキャンセルされます。
      • チェーンを閉じると、継承が元に戻ります。
NOTE
cq-msm-lockable は、編集するリソースの最初の子レベルに適用され、値が絶対値または相対値として定義されているかどうかに関係なく、より深いレベルの親レベルでは機能しません。
NOTE
継承を再度有効にした場合、ライブコピーページのプロパティはソースプロパティと自動的に同期されません。 必要な場合は、手動で同期をリクエストできます。
recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e