Erfahrungen und Arbeiten mit dem AEM Grid

Hinzufügen und Positionieren von Komponenten in einem responsiven Raster

„Ein guter Webdesigner muss Internetseiten ansprechend gestalten können.“

 

 

… Wir wissen alle, dass das schon längst nicht mehr zutrifft. Denn er muss beim Design der User Experience die Einhaltung sämtlicher Details der mobilen Internetnutzung im Auge haben, um auf jedem Gerät eine perfekte Customer Experience bieten zu können.

 

In der heutigen Zeit, in der ein Enduser den Webauftritt auf einem Smartphone, Tablet oder Desktop betrachten kann, muss er das Responsive Webdesign vollkommen beherrschen. Das bedeutet, dass sich Inhalts- und Navigationselemente, sowie auch der strukturelle Aufbau des Layout-Grids einer Website, an die Vielzahl zu bedienender Bildschirmauflösungen anpassen kann.

 

Dabei sollen in jeder erdenklichen Ansicht Bilder oder Texte im Layout-Grid genau platziert sein und sich Elemente der Website stimmig in das Gestaltungsraster einfügen.

 

Textkomponenten sollen mit unterschiedlichen Textlängen gepflegt werden können. In Bild-Komponenten sollten Motive mit unterschiedlichen Fokuspunkten und Zuschnitten abbildbar sein. Das stellt in der Planungs- und Konzeptionsphase eine immense Herausforderung dar und für einen Designer ist es häufig nicht möglich, die Vielzahl der Variationen im Blick zu haben.

 

Daher wäre es doch eine schicke Lösung, wenn der Autor, der für den Inhalt der Komponenten verantwortlich ist, die Breite (also die Anzahl der Gestaltungsraster-Spalten) je nach Inhalt individuell auswählen könnte? Oder?

 

 

Adobe Experience Manager (AEM)  bietet ab der Version AEM 6.3 eine enorme Erleichterung für das Erstellen eines responsiven Layouts an. Denn der Author, der für die Seitenpflege verantwortlich ist, kann Komponenten in einem responsiven Raster hinzufügen und positionieren.

 

Dies wird mit dem frei einsetzbaren Layout-Container ermöglicht, welcher vordefinierte Breakpoints verwendet und es somit zulässt, dass sich Komponenten horizontal an einem Raster ausrichten und platzieren lassen.

 

Der Redakteur kann über den sogenannten Layout-Modus frei definieren, bei welchem Viewport welches Verhalten des Inhalts stattfinden soll (sollen Textblöcke bei der Smartphone-Ansicht untereinander erscheinen, bei einer Desktop-Ansicht jedoch umfließen).

 

Wie funktioniert das Responsive Grid?

Zunächst verhält es sich wie ein gewöhnlicher Parsys (paragraph system), wobei es sich äußerlich ebenso nicht unterscheidet. Der Platzhalter „Komponenten hierher ziehen" erscheint und der Autor kann die Komponenten in den Layoutcontainer ziehen, die den eigentlichen Inhalt beinhalten.

Herkömmliches Paragraph System

Bild 1: Herkömmliches Paragraph System

 

Lasst uns einen Blick hinter die Kulissen werfen. Denn sehen wir uns an dieser Stelle die Implementierung dazu an, stellen wir fest, dass es sich lediglich um eine Erweiterung des herkömmlichen Paragraph System handelt.

 

Platziert der Author eine Text-Komponente in dem Layoutcontainer, hat er eine zusätzliche Möglichkeit den Text im dynamischen responsiven Layout anzupassen.

< sly data-sly-resource="${'parsys' @ resourceType='wcm/foundation/components/parsys'}"/>

< sly data-sly-resource="${'responsivegrid' @ resourceType='wcm/foundation/components/responsivegrid'}"/>
Responsive Grind: Layout in der Symbolleiste einer Komponente

Bild 2: Responsive Grind: Layout in der Symbolleiste einer Komponente

 

Ein Autor hat nun die Möglichkeit, die Anzahl der Rasterspalten für den verschachtelten Layoutcontainer zu bestimmen.

Dafür gibt es in der Symbolleiste ein „Layout“ Zeichen (ganz rechts in der Abbildung), um diese Änderung je nach Inhalt der Komponente vorzunehmen und den Layout-Container auf eine beliebige Breite und Position einstellen zu können.

12-Spalten Raster

Bild 3: 12-Spalten Raster im AEM Author Interface

 

Wie man dem Bild entnehmen kann ist, nutzt AEM standardmäßig ein 12-Spalten-Raster - unabhängig davon, wie verschachtelt die Layout-Container sind. Der Autor kann nun mit der automatischen Ausrichtung am Raster und intelligenter Hilfslinien die einzelnen Elemente stimmig im Layout positionieren.

 

Das vom Designer definierte Grid kann nun je nach Bedarf des Autors für die gewünschte Komponente platziert werden, ohne dass die Stimmigkeit, die Ordnung oder der Charakter des Layouts darunter leiden muss.

 

In Kombination mit dem AEM Emulator kann der Autor den Seiteninhalt entsprechend der simulierten Benutzeroberfläche angepasst betrachten und gesondert bearbeiten. Standardmäßig verwendet das AEM-Raster drei Haltepunkte für ein 12-Spalten-Raster.

Hierbei kann die gewünschte Positionierung der Komponente an den jeweiligen Viewport angepasst werden. Klickt der Autor z.B. auf das „iPad“ Zeichen in der Emulator-Leiste, kann er diesen angezeigten Bereich (bis zu 768px ) gesondert bearbeiten. Die entsprechenden Anpassungen werden dann lediglich für diesen Viewport gespeichert. Die gepunktete blaue Linie in Bild 4 stellt den „Falz“ für das ausgewählte iPad dar.

Der AEM Emulator ermöglicht es, bestimmte Viewports gesondert zu bearbeiten

Bild 4: Der AEM Emulator ermöglicht es, bestimmte Viewports gesondert zu bearbeiten

 

Fazit:

Mit Hilfe des AEM Grids ist der Autor flexibler geworden und kann das Layout an seine Bedürfnisse anpassen, ohne dass das Design der Website unstimmig wird.

Der Autor kann somit freier seine Texte und Bilder setzten und ist nicht mehr von dem Platz der jeweiligen Komponente abhängig - denn Content is King wie wir alle wissen.

Früher dagewesene Probleme, dass der Content leiden muss, wenn statische Komponenten nicht den geeigneten Platz bieten, sind somit aus der Welt.

 

Technisches Aufsetzen:

Sie können gerne jederzeit eine Schulung für sich und Ihr Team in unserem Hause oder bei Ihnen vor Ort vereinbaren, um Ihr technisches AEM Know How zu erweitern.

 

Um das AEM Grid nutzen zu können, bedarf es in der Entwicklung nur wenige Schritte:

 

  • Navigieren Sie in Ihrem Projekt zu der Komponente, die in der Seite an der gewünschten Stelle gerendert wird. Hier können Sie die Komponente „Responsive-Grid“ mit einem data-sly-ressource und dem entsprechenden Pfad, wie schon weiter oben im Text erwähnt, einfügen:
< sly data-sly-resource="${'responsivegrid' @ resourceType='wcm/foundation/components/responsivegrid'}"/>
  • Um den AEM Responsive Emulator erstellen zu können, benötigen Sie im Projekt den Ordner „config“, um eine neue Konfiguration erstellen zu können. In diesem Ordner wird nun eine Node vom Typ sling:OsgiConfig benötigt, welche den Namen der Persistent Identity (PID) des Emulator-Services hat, um diesen konfigurieren zu können. Bitte beachten Sie hierbei einen „Alias“ zu erstellen, also einen eindeutigen Namen hinter dem Konfigurations-Namen. (z.B. -eggs).

 

Name

com.day.cq.wcm.mobile.core.impl.MobileEmulatorProvider-eggs

jcr:primaryType:

sling:OsgiConfig

mobile.resourceTypes

eggsproject/components/pages/gridPage (String)

 

Die Eigenschaft mobile.resourceTypes stellt den Pfad Ihrer Seiten-Komponente dar, die gerendert wird.

 

  • Im Content-Bereich müssen ebenso Anpassungen durchgeführt werden:

Auf Ihrer entsprechenden Seite wird folgende Eigenschaft (im jcr:content-Knoten) benötigt:

 

cq:deviceGroups

/etc/mobile/groups/responsive (String[ ] )

 

Das dynamische responsive Layout wird ermöglicht. Das „Emulator“-Icon ist nun auf Ihrer erstellten Internetseite sichtbar.

 

 

  • Um die Breakpoints definieren zu können, erstellen Sie in dem jcr:content- Knoten folgenden Knoten:

Cq:responsive

nt:unstructured

 

  • Und unter diesem wiederum folgenden Knoten:

breakpoints

nt:unstructured

 

  • Unter dem Knoten können Sie eine beliebige Anzahl von Viewports erstellen. Jede Definition ist ein einzelner Knoten mit den folgenden Eigenschaften:

 

[name]

nt:unstructured

Width

Maximale Breite des Devices (Decimal)

 

z.B.:

 

Beispiel von vordefinierten Breakpoints einer Seite im CRX

Beispiel von vordefinierten Breakpoints einer Seite im CRX

 

Jedes Mal, wenn ein Autor über den Editor eine Layoutänderung vornimmt, wird unter der Komponente, in der das „Responsivegrid“ eingefügt ist, ein neuer Knoten namens cq: responsive mit dem Namen des Viewports und dessen Eigenschaften gespeichert.

Gespeicherte Positionierung und Breite einer Komponente im CRX

Bild 6: Gespeicherte Positionierung und Breite einer Komponente im CRX