Bearbeitbare Container-Komponenten

Feste Komponenten bieten eine gewisse Flexibilität beim Erstellen SPA Inhalts. Dieser Ansatz ist jedoch starr und erfordert, dass Entwickler die genaue Zusammensetzung des bearbeitbaren Inhalts definieren. Um die Erstellung außergewöhnlicher Erlebnisse durch Autoren zu unterstützen, unterstützt SPA Editor die Verwendung von Container-Komponenten in der SPA. Container-Komponenten ermöglichen es Autoren, zulässige Komponenten per Drag & Drop in den Container zu ziehen und sie wie beim herkömmlichen AEM Sites-Authoring zu erstellen!

Bearbeitbare Container-Komponenten

In diesem Kapitel fügen wir einen bearbeitbaren Container zur Startansicht hinzu, der es Autoren ermöglicht, Rich-Content-Erlebnisse mit AEM React-Kernkomponenten direkt in der SPA zu erstellen und anzuordnen.

WKND-App aktualisieren

Hinzufügen einer Container-Komponente zur Startansicht:

  • Importieren der Komponente "ResponsiveGrid"der AEM React Editable-Komponente
  • Importieren und registrieren Sie AEM React-Kernkomponenten (Text und Bild) zur Verwendung in der Container-Komponente

Importieren in die Komponente des responsivenGrid-Containers

Um einen bearbeitbaren Bereich in der Startansicht zu platzieren, müssen wir:

  1. Importieren Sie die Komponente "ResponsiveGrid"aus @adobe/aem-react-editable-components
  2. Registrieren Sie sie mithilfe von withMappable , damit Entwickler sie in die SPA platzieren können
  3. Registrieren Sie sich auch bei MapTo sodass sie in anderen Container-Komponenten wiederverwendet werden kann, wodurch Container effektiv verschachtelt werden.

Gehen Sie hierfür wie folgt vor:

  1. Öffnen Sie das SPA in Ihrer IDE.

  2. Erstellen einer React-Komponente unter src/components/aem/AEMResponsiveGrid.js

  3. Fügen Sie den folgenden Code zu AEMResponsiveGrid.js

    // Import the withMappable API provided bu the AEM SPA Editor JS SDK
    import { withMappable, MapTo } from '@adobe/aem-react-editable-components';
    
    // Import the base ResponsiveGrid component
    import { ResponsiveGrid } from "@adobe/aem-react-editable-components";
    
    // The sling:resourceType for which this Core Component is registered with in AEM
    const RESOURCE_TYPE = "wcm/foundation/components/responsivegrid";
    
    // Create an EditConfig to allow the AEM SPA Editor to properly render the component in the Editor's context
    const EditConfig = {
        emptyLabel: "Layout Container",  // The component placeholder in AEM SPA Editor
        isEmpty: function(props) {
            return props.cqItemsOrder == null || props.cqItemsOrder.length === 0;
        },                              // The function to determine if this component has been authored
        resourceType: RESOURCE_TYPE     // The sling:resourceType this SPA component is mapped to
    };
    
    // MapTo allows the AEM SPA Editor JS SDK to dynamically render components added to SPA Editor Containers
    MapTo(RESOURCE_TYPE)(ResponsiveGrid, EditConfig);
    
    // withMappable allows the component to be hardcoded into the SPA; <AEMResponsiveGrid .../>
    const AEMResponsiveGrid = withMappable(ResponsiveGrid, EditConfig);
    
    export default AEMResponsiveGrid;
    

Der Code ist ähnlich AEMTitle.js dass Importierte die Komponente Titel der AEM ReichweitenKernkomponenten.

Die AEMResponsiveGrid.js sollte wie folgt aussehen:

AEMResponsiveGrid.js

Verwenden der SPA-Komponente AEMResponsiveGrid

Nachdem AEM Komponente ResponsiveGrid in registriert ist und für die Verwendung in der SPA verfügbar ist, können wir sie in der Startansicht platzieren.

  1. Öffnen und Bearbeiten react-app/src/Home.js

  2. Importieren Sie die AEMResponsiveGrid -Komponente und platzieren Sie sie über dem <AEMTitle ...> -Komponente.

  3. Legen Sie die folgenden Attribute für die <AEMResponsiveGrid...> component

    • pagePath = '/content/wknd-app/us/en/home'
    • itemPath = 'root/responsivegrid'

    Dies weist die AEMResponsiveGrid -Komponente, um ihren Inhalt aus der AEM-Ressource abzurufen:

    • /content/wknd-app/us/en/home/jcr:content/root/responsivegrid

    Die itemPath der responsivegrid Knoten, der im Remote SPA Page AEM Vorlage und wird automatisch auf neuen AEM erstellt, die aus dem Remote SPA Page AEM Vorlage.

    Aktualisieren Home.js , um <AEMResponsiveGrid...> -Komponente.

    ...
    import AEMResponsiveGrid from './aem/AEMResponsiveGrid';
    ...
    
    function Home() {
        return (
            <div className="Home">
                <AEMResponsiveGrid
                    pagePath='/content/wknd-app/us/en/home'
                    itemPath='root/responsivegrid'/>
    
                <AEMTitle
                    pagePath='/content/wknd-app/us/en/home'
                    itemPath='title'/>
                <Adventures />
            </div>
        );
    }
    

Die Home.js sollte wie folgt aussehen:

Home.js

Erstellen bearbeitbarer Komponenten

Um die volle Wirkung der flexiblen Authoring-Erlebnis-Container im SPA Editor zu erzielen. Wir haben bereits eine bearbeitbare Titelkomponente erstellt, aber lassen Sie uns noch ein paar weitere Aspekte anstellen, die es Autoren ermöglichen, Text und Bild AEM WCM-Kernkomponenten in der neu hinzugefügten Container-Komponente zu verwenden.

Textkomponente

  1. Öffnen Sie das SPA in Ihrer IDE.

  2. Erstellen einer React-Komponente unter src/components/aem/AEMText.js

  3. Fügen Sie den folgenden Code zu AEMText.js

    import { withMappable, MapTo } from '@adobe/aem-react-editable-components';
    import { TextV2, TextV2IsEmptyFn } from "@adobe/aem-core-components-react-base";
    
    const RESOURCE_TYPE = "wknd-app/components/text";
    
    const EditConfig = {
        emptyLabel: "Text",
        isEmpty: TextV2IsEmptyFn,
        resourceType: RESOURCE_TYPE
    };
    
    MapTo(RESOURCE_TYPE)(TextV2, EditConfig);
    
    const AEMText = withMappable(TextV2, EditConfig);
    
    export default AEMText;
    

Die AEMText.js sollte wie folgt aussehen:

AEMText.js

Bildkomponente

  1. Öffnen Sie das SPA in Ihrer IDE.

  2. Erstellen einer React-Komponente unter src/components/aem/AEMImage.js

  3. Fügen Sie den folgenden Code zu AEMImage.js

    import { withMappable, MapTo } from '@adobe/aem-react-editable-components';
    import { ImageV2, ImageV2IsEmptyFn } from "@adobe/aem-core-components-react-base";
    
    const RESOURCE_TYPE = "wknd-app/components/image";
    
    const EditConfig = {
        emptyLabel: "Image",
        isEmpty: ImageV2IsEmptyFn,
        resourceType: RESOURCE_TYPE
    };
    
    MapTo(RESOURCE_TYPE)(ImageV2, EditConfig);
    
    const AEMImage = withMappable(ImageV2, EditConfig);
    
    export default AEMImage;
    
  4. Erstellen einer SCSS-Datei src/components/aem/AEMImage.scss , das benutzerdefinierte Stile für die AEMImage.scss. Diese Stile zielen auf die CSS-Klassen der AEM React-Kernkomponente mit BEM-Notation ab.

  5. Fügen Sie die folgende SCSS zu AEMImage.scss

    .cmp-image__image {
        margin: 1rem 0;
        width: 100%;
        border: 0;
     }
    
  6. Import AEMImage.scss in AEMImage.js

    ...
    import './AEMImage.scss';
    ...
    

Die AEMImage.js und AEMImage.scss sollte wie folgt aussehen:

AEMImage.js und AEMImage.scss

Importieren der bearbeitbaren Komponenten

Die neu erstellte AEMText und AEMImage SPA Komponenten werden in der SPA referenziert und basierend auf der von AEM zurückgegebenen JSON dynamisch instanziiert. Um sicherzustellen, dass diese Komponenten für die SPA verfügbar sind, erstellen Sie Importanweisungen für sie in Home.js

  1. Öffnen Sie das SPA in Ihrer IDE.

  2. Öffnen Sie die Datei src/Home.js

  3. Hinzufügen von Importanweisungen für AEMText und AEMImage

    ...
    import AEMText from './components/aem/AEMText';
    import AEMImage from './components/aem/AEMImage';
    ...
    

Das Ergebnis sollte wie folgt aussehen:

Home.js

Wenn diese Einfuhren not hinzugefügt, AEMText und AEMImage -Code von SPA nicht aufgerufen wird und daher werden die Komponenten nicht für die bereitgestellten Ressourcentypen registriert.

Container in AEM konfigurieren

AEM Container-Komponenten verwenden Richtlinien, um ihre zulässigen Komponenten anzugeben. Dies ist eine kritische Konfiguration bei der Verwendung des SPA-Editors, da nur AEM WCM-Kernkomponenten, die SPA Komponenten-Entsprechungen zugeordnet haben, vom SPA gerenderbar sind. Stellen Sie sicher, dass nur die Komponenten zulässig sind, für die wir SPA Implementierungen bereitgestellt haben:

  • AEMTitle zugeordnet zu wknd-app/components/title
  • AEMText zugeordnet zu wknd-app/components/text
  • AEMImage zugeordnet zu wknd-app/components/image

So konfigurieren Sie den Reponsivegrid-Container der Vorlage Remote-SPA:

  1. Bei der AEM-Autoreninstanz anmelden

  2. Navigieren Sie zu Tools > Allgemein > Vorlagen > WKND-App

  3. Bearbeiten SPA

    Richtlinien für responsive Raster

  4. Auswählen Struktur im Modusschalter oben rechts

  5. Tippen, um die Layout-Container

  6. Tippen Sie auf Politik Symbol in der Popup-Leiste

    Richtlinien für responsive Raster

  7. Rechts unter dem Zugelassene Komponenten Registerkarte, erweitern WKND-APP - INHALT

  8. Stellen Sie sicher, dass nur Folgendes ausgewählt ist:

    • Bild
    • Text
    • Titel

    Remote-SPA

  9. Tippen Sie auf Fertig

Container in AEM erstellen

Nach der Aktualisierung des SPA zum Einbetten des <AEMResponsiveGrid...>, Wrapper für drei AEM React-Kernkomponenten (AEMTitle, AEMTextund AEMImage) und AEM mit einer übereinstimmenden Vorlagenrichtlinie aktualisiert wird, können wir damit beginnen, Inhalte in der Container-Komponente zu erstellen.

  1. Bei der AEM-Autoreninstanz anmelden

  2. Navigieren Sie zu Sites > WKND-App

  3. Tippen Startseite und wählen Sie Bearbeiten in der oberen Aktionsleiste

    • Eine Textkomponente "Hello World"wird angezeigt, da diese automatisch hinzugefügt wurde, wenn das Projekt über den AEM Projektarchetyp generiert wurde
  4. Auswählen Bearbeiten über die Modusauswahl oben rechts im Seiteneditor

  5. Suchen Sie die Layout-Container bearbeitbarer Bereich unter dem Titel

  6. Öffnen Sie die Seitenleiste des Seiteneditors und wählen Sie die Komponentenansicht

  7. Ziehen Sie die folgenden Komponenten in die Layout-Container

    • Bild
    • Titel
  8. Ziehen Sie die Komponenten in die folgende Reihenfolge, um sie neu anzuordnen:

    1. Titel
    2. Bild
    3. Text
  9. Autor die Titel component

    1. Tippen Sie auf die Komponente Titel und dann auf Schraubenschlüssel Symbol zu edit die Titelkomponente
    2. Fügen Sie den folgenden Text hinzu:
      • Titel: Der Sommer kommt, lassen Sie uns das Beste daraus machen!
      • Typ: H1
    3. Tippen Sie auf Fertig
  10. Autor die Bild component

    1. Ziehen Sie ein Bild aus der Seitenleiste (nach dem Wechsel zur Asset-Ansicht) auf die Bildkomponente
    2. Tippen Sie auf die Bildkomponente und tippen Sie auf Schraubenschlüssel Symbol zum Bearbeiten
    3. Überprüfen Sie die Bild ist dekorativ Kontrollkästchen
    4. Tippen Sie auf Fertig
  11. Autor die Text component

    1. Bearbeiten Sie die Textkomponente, indem Sie auf die Textkomponente tippen und auf die Schraubenschlüssel icon
    2. Fügen Sie den folgenden Text hinzu:
      • Jetzt erhalten Sie 15% auf allen 1-wöchigen Abenteuern und 20% Rabatt auf alle Abenteuer, die 2 Wochen oder länger sind! Fügen Sie beim Checkout den Kampagnencode SUMMERISCOMING hinzu, um Ihre Rabatte zu erhalten!
    3. Tippen Sie auf Fertig
  12. Ihre Komponenten werden jetzt erstellt, aber vertikal stapelt.

    Erstellte Komponenten

    Verwenden Sie AEM Layout-Modus , um die Größe und das Layout der Komponenten anzupassen.

  13. Wechseln zu Layout-Modus Verwenden der Modusauswahl oben rechts

  14. Größe ändern die Bild- und Text-Komponenten, sodass sie nebeneinander angeordnet sind

    • Bild -Komponente sollte 8 Spalten breit
    • Text -Komponente sollte 3 Spalten breit

    Layout-Komponenten

  15. Vorschau Ihre Änderungen in AEM Seiteneditor

  16. Aktualisieren Sie die WKND-App, die lokal ausgeführt wird auf http://localhost:3000 um die erstellten Änderungen zu sehen!

    Container-Komponente in SPA

Herzlichen Glückwunsch!

Sie haben eine Container-Komponente hinzugefügt, mit der Autoren bearbeitbare Komponenten zur WKND-App hinzufügen können! Sie wissen jetzt, wie:

  • Verwenden Sie die Komponente "ResponsiveGrid"der AEM React Editable-Komponente im SPA
  • Registrieren AEM React-Kernkomponenten (Text und Bild) zur Verwendung in der SPA über die Container-Komponente
  • Konfigurieren Sie die Vorlage für die Remote-SPA, um die SPA aktivierten Kernkomponenten zuzulassen.
  • Hinzufügen bearbeitbarer Komponenten zur Container-Komponente
  • Autoren- und Layoutkomponenten im SPA Editor

Nächste Schritte

Im nächsten Schritt wird dieselbe Technik verwendet, um Hinzufügen einer bearbeitbaren Komponente zu einer Abenteuer-Details-Route im SPA.

Auf dieser Seite