ContentConnect

For Spryker Commerce OS

e-Spirit AG

15.05.2020
Inhaltsverzeichnis

1. Einleitung

FirstSpirit dient der Erstellung vielseitiger und projektspezifischer Inhalte. Mit dem Modul ContentConnect For Spryker Commerce OS wurde die Möglichkeit geschaffen, diese Inhalte in das E-Commerce-Shopsystem Spryker Commerce OS zu übertragen und dort zu nutzen.

Im restlichen Dokument wird anstelle von "Spryker Commerce OS" die Kurzform "Spryker" benutzt.

Des Weiteren ist die gesamte Dokumentation auf die Anbindung des Spryker B2C Demo Shops in der Version 201907.0 ausgerichtet. Die Erwähnung des Shops bezieht sich somit ausschließlich auf den B2C Demo Shop.

Das Modul kombiniert die funktionalen Stärken beider Systeme, um so die besten Vorteile zu erzielen und ein erfolgreiches Gesamtsystem zu schaffen. Dieses Gesamtsystem besteht aus zwei Bereichen, die parallel und größtenteils entkoppelt voneinander arbeiten:

FirstSpirit-seitige Komponenten
Diese Komponenten dienen der Erstellung und Pflege der redaktionellen Daten. Sie werden im JSON-Format an die jeweilige CaaS-Instanz übermittelt und aus dieser von Spryker abgefragt.
Spryker-seitige Komponenten
Diese Komponenten dienen der Einbindung der in FirstSpirit erstellten redaktionellen Inhalte. Spryker importiert diese Daten und integriert sie in den Shop.

Ein Bestandteil der Auslieferung des ContentConnect For Spryker Commerce OS-Moduls ist das Referenzprojekt ContentConnect Reference Project. Die vorliegende Dokumentation orientiert sich durchgängig an dem Referenzprojekt und erläutert die mit dem Modul bereitgestellten Funktionalitäten anhand gängiger Anwendungsfälle.

Das vorliegende Dokument richtet sich sowohl an Spryker- als auch an FirstSpirit-Entwickler, die mithilfe der Dokumentation die Integration durchführen können sollen.

Es ist kein Handbuch für FirstSpirit-Redakteure.

Es wird vorausgesetzt, dass der Leser sicher in der Verwendung FirstSpirits und Sprykers sowie des CaaS und des Omnichannel Managers ist.

1.1. Funktionsumfang

ContentConnect stellt Redakteuren die folgenden Möglichkeiten zur Verfügung:

  • Erstellung nativer Shop-Inhalte mit FirstSpirit
  • Zugriff auf Produkt- und Kategorieinformationen
  • gleichzeitige Darstellung von Shop-Elementen und redaktionellen Inhalten in der FirstSpirit-Vorschau
  • Übertragung von Inhalten in das Spryker Commerce OS

Die entsprechenden Funktionalitäten werden mit der Installation und Konfiguration des Moduls im ContentCreator bereitgestellt.

Die Pflege der Inhalte findet über die gewohnten FirstSpirit-Mittel statt. Mit FirstSpirit vertraute Redakteure benötigen daher keine darüber hinausgehenden Kenntnisse. Die Inhalte werden Spryker im Rahmen eines Deployments zum Import bereitgestellt. Spryker integriert die Informationen in den Shop.

Für Spryker ergibt sich somit bei der Auslieferung redaktioneller Inhalte in den Live-Stand keinerlei Unterschied. Auch wenn der FirstSpirit-Server beispielsweise aufgrund von Wartungsarbeiten heruntergefahren wird, beeinflusst dies Spryker nicht.

1.2. Architektur

Die Verbindung von FirstSpirit und Spryker wird über eine Architektur aus verschiedenen Komponenten realisiert (vgl. Abbildung Architektur).

Diese Komponenten sind:

  • die auf dem FirstSpirit-Server installierten Module:

    • ContentConnect
    • Omnichannel Manager
    • Content as a Service
  • Spryker-Instanz
Architektur
Abbildung 1. Architektur


Das Zusammenspiel der einzelnen Komponenten erfolgt immer nach dem folgenden Schema:

  1. Die Erstellung und Bearbeitung redaktioneller Inhalte findet FirstSpirit-seitig im ContentCreator statt. In diesem ist mithilfe des Omnichannel Managers der Storefront eingebettet.
  2. Der Storefront greift seinerseits auf den Preview CaaS zu und ermittelt aus diesem die aktuellen FirstSpirit-Inhalte. Gleichzeitig bindet er das für den Omnichannel Manager notwendige JavaScript ein, das die Bearbeitung und das Highlighting der Inhalte im ContentCreator ermöglicht.
  3. Die Übertragung der redaktionellen Inhalte in den Preview CaaS findet automatisch bei jeder Speicheraktion statt.
  4. Die Befüllung des Online CaaS mit den freigegebenen Inhalten wird durch ein Deployment angestoßen. Der Online CaaS stellt die Inhalte für den Importer zur Verfügung, der sie nach Spryker überträgt und dort persistiert.

Spryker stellt somit die Hauptkomponente dieser Architektur dar. Neben der Bereitstellung sämtlicher Shop-Funktionalitäten importiert es die in FirstSpirit erstellten bzw. gepflegten Inhalte aus dem Online CaaS und integriert sie in den Shop. Zwischen FirstSpirit und Spryker existiert lediglich eine lose Kopplung. Die beiden Systeme arbeiten hauptsächlich parallel zueinander. Wird der FirstSpirit-Server beispielsweise aufgrund von Wartungsarbeiten heruntergefahren, beeinflusst dies Spryker nicht.

1.3. Konzept

Das ContentConnect-Modul bietet die Möglichkeit, redaktionelle Inhalte FirstSpirit-seitig zu pflegen und diese anschließend per Deployment an Spryker zu übertragen. Dafür muss die Verarbeitung von Inhalten in beiden Systemen aufeinander abgestimmt und zueinander kompatibel sein. Die nachfolgenden Unterkapitel beschreiben das zugrunde liegende Konzept, mit dem diese Kompatibilität erreicht wird.

1.3.1. Seiten

Ähnlich wie in FirstSpirit basieren Seiten in Spryker auf einer Struktur unterschiedlicher Komponenten. Um redaktionelle Inhalte zwischen den beiden Systemen austauschen zu können, müssen diese Komponenten aufeinander abgestimmt sein.

Innerhalb des in der Auslieferung enthaltenen Referenzprojekts ContentConnect Reference Project werden die CMS Placeholder aus Spryker durch die Inhaltsbereiche einer Seitenvorlage in FirstSpirit repräsentiert. Ihnen können Absätze hinzugefügt werden, die jeweils einem CMS Block entsprechen.

Page Rendering
Abbildung 2. Page Rendering


Mit FirstSpirit lassen sich somit CMS Blöcke generieren, die über CMS Placeholder in einer Seite dargestellt werden.

1.3.2. Vorschau

Die mit dem ContentConnect-Modul realisierte Integration sieht FirstSpirit-seitig lediglich die Erzeugung und Pflege der redaktionellen Inhalte sowie ihre Publizierung in Form von CMS Blöcken vor. Spryker bestimmt jedoch weiterhin das Rahmenwerk einer Seite, deren CMS Placeholder die generierten Blöcke einbinden.

Für die Darstellung der Vorschau einer Seite ermittelt FirstSpirit daher ihre aktuelle Ansicht im Storefront. Dieser fragt seinerseits die redaktionellen Inhalte aus dem Preview CaaS ab und ersetzt die entsprechenden CMS Blöcke. FirstSpirit stellt das Resultat mithilfe des Omnichannel Managers im ContentCreator dar.

1.3.3. Deployment

Die Übertragung der FirstSpirit-seitig erstellten Inhalte in den Live-Stand erfolgt durch Spryker. Dafür müssen die Inhalte bereitgestellt werden, was in Form des Online CaaS geschieht. Aus ihm importiert Spryker die redaktionellen Inhalte und persistiert sie in seinem Datensystem.

1.4. Technische Voraussetzungen

Für den Einsatz des ContentConnect-Moduls müssen die folgenden technischen Voraussetzungen erfüllt sein:

  • die Module ContentConnect, Content as a Service und Omnichannel Manager in der jeweils aktuellen Version
  • FirstSpirit (Legacy oder Isolated Modus) ab der Version 2019-05
  • Java 8 oder 11
  • Spryker Commerce OS

Bei der Verwendung des mitgelieferten Referenzprojekts ContentConnect Reference Project ist außerdem das BasicWorkflows-Modul in der jeweils aktuellen Version erforderlich.

1.5. Wichtige Hinweise

Dieses Kapitel enthält Hinweise, die bei der Verwendung des ContentConnect-Moduls zu beachten sind.

1.5.1. Konfiguration des Glue-Webservers

Die in FirstSpirit gepflegten Inhalte werden während eines Deployments mithilfe des Importers aus dem Online CaaS abgefragt. Der Importer überträgt die Daten nach Spryker und persistiert sie Backend-seitig in dessen Datensystem.

Da der Online CaaS potentiell eine große Datenmenge enthält, erfordert die Übertragung der Inhalte eine gewisse Zeitspanne. Frühzeitige Timeouts während des Imports sind daher zu vermeiden. Aus diesem Grund ist der Webserver der Glue-API so zu konfigurieren, dass er http-Requests für eine Dauer von mindestens 60 Sekunden erlaubt.

1.5.2. Konfiguration der FirstSpirit-Einstellungsseite

Die CaaS-Generierungen setzen voraus, dass im FirstSpirit-Projekt eine Vorlage für die Projekteinstellungen gepflegt ist. Andernfalls bricht der Generierungsauftrag frühzeitig ab und meldet den folgenden Fehler in den Auftragslogs:

Exception bei fehlender Einstellungsseite. 

error during script execution : java.lang.IllegalStateException:
Invalid value for key 'usedCaasProjects' - Value is not a HashMap (null).
This can happen when a deployment does not include a single PageRef (blue), which is not supported (e.g. remote-media-project).

Aus diesem Grund muss im Projekt eine entsprechende Vorlage existieren und diese in den Projektoptionen im ServerManager konfiguriert sein, selbst wenn sie keinen Inhalt besitzt.

Konfiguration der Einstellungsseite in den Projektoptionen
Abbildung 3. Konfiguration der Einstellungsseite in den Projektoptionen


1.5.3. Verwendung des Spryker B2C Demo Shops

Wie zuvor erwähnt ist die gesamte Dokumentation auf die Anbindung des Spryker B2C Demo Shops ausgerichtet. Bei dessen Verwendung können einige Schwierigkeiten auftreten, deren Ursache weder das ContentConnect-Modul noch die Integration ist. Dennoch werden sie nachfolgend aufgelistet und eine mögliche Lösung skizziert.

Vagrant findet VirtualBox nicht

Ist es Vagrant nicht möglich, VirtualBox zu finden, ist der vagrant up-Befehl wie folgt zu erweitern:

Erweiterung des Befehls vagrant up. 

vagrant up --provider=virtualbox

Vorschauseite wird im ContentCreator nicht gefunden

Kann der ContentCreator die Vorschauseite nicht finden, ist das Zertifikat der Seite ungültig oder nicht vorhanden. In diesem Fall muss die Seite in einem separaten Browser-Tab geöffnet werden, um das SSL-Zertifikat zu erneuern und die Anzeige der Seite zu erlauben. Anschließend ist die Vorschauseite im ContentCreator wieder sichtbar.

Fehlender RAM bei Composer-Aufrufen

Für PHP existiert standardmäßig ein RAM-Limit, das für die Ausführung von Composer-Aktionen jedoch zu niedrig ist. Aus diesem Grund muss das Limit, das in der Konfigurationsdatei php.ini im Verzeichnis etcphp7.2cli definiert ist, deaktiviert werden:

Deaktivierung des RAM-Limits. 

[...]
set memory_limit=-1
[...]

2. Spryker - Installation und Konfiguration

FirstSpirit dient der Erstellung und Pflege redaktioneller Daten, die in den CaaS übertragen und von diesem persistiert werden. Um die Daten zu integrieren, benötigt Spryker eine Zugriffsmöglichkeit auf den CaaS. Diese wird durch die Spryker-Module firstspirit-preview und firstspirit-caas bereitgestellt, die eine Spryker-seitige Installation und Konfiguration erfordern. Das Modul firstspirit-preview ermöglicht die Darstellung des Storefronts im ContentCreator. Die Abfrage der Inhalte aus dem CaaS erfolgt mithilfe des Moduls firstspirit-caas.

Die nachfolgenden Kapitel beschreiben alle notwendigen Schritte für die Installation und die Konfiguration sowie zusätzlich erforderliche Spryker-seitige Erweiterungen.

2.1. Spryker-Module

Sowohl die Abfrage der CaaS-Inhalte durch Spryker als auch ihre Darstellung und Bearbeitung im ContentCreator erfolgt mithilfe verschiedener Spryker-Module. Diese erfordern eine Spryker-seitige Installation sowie eine Erweiterung der Konfiguration. Des Weiteren benötigen sie verschiedene JavaScript- und CSS-Dateien, die Spryker-seitig einzubinden sind.

Die nachfolgenden Kapitel beschreiben die Durchführung der notwendigen Schritte.

2.1.1. Installation der Spryker-Module

Die Pflege von Shop-Inhalten im ContentCreator erfordert die Installation mehrerer Spryker-Module, die in Form von zip-Dateien in der Auslieferung enthalten sind. Sie müssen in einem beliebigen Verzeichnis unterhalb des Spryker-Projektverzeichnisses gespeichert werden, das Composer als weiteres Repository bekannt zu machen ist. Dies geschieht über den im Projektverzeichnis auszuführenden Befehl, der die composer.json-Datei des Spryker-Servers entsprechend erweitert.

Erweiterung der composer.json-Datei. 

composer config repo.espirit artifact ./PATH-TO-DIRECTORY

Die zu installierenden Spryker-Module nutzen den Namespace FirstSpirit, der Spryker bekannt zu machen ist. Dafür ist in der Environment-unabhängigen Datei config_default.php im Verzeichnis configShared eine Erweiterung der KernelConstants erforderlich:

Erweiterung der KernelConstants. 

$config[KernelConstants::CORE_NAMESPACES] = [
   'SprykerShop',
   'SprykerEco',
   'Spryker',
   'FirstSpirit'
];

Die Installation der Spryker-Module erfolgt anschließend über die nachfolgenden Befehle, die ebenfalls im Spryker-Projektverzeichnis in der angegebenen Reihenfolge auszuführen sind.

Installationsbefehle. 

composer require firstspirit/firstspirit-caas
composer require firstspirit/firstspirit-preview
composer require firstspirit/firstspirit-data-cleanup
composer require firstspirit/firstspirit-data-import
composer require firstspirit/firstspirit-data-rest-api
composer require firstspirit/firstspirit-cms-data-connector
composer require firstspirit/firstspirit-cms-data-storage

Die Befehle laden die Module aus dem erstellten Repository und installieren sie automatisch.

Der letzte Schritt der Installation entspricht der Generierung der Transfer-Objekte des Data Import-Moduls sowie der Erzeugung des Datenbankschemas, das im CMS Block Data Connector-Modul enthalten ist:

Generierung der Transfer-Objekte und Erzeugung des Datenbankschemas. 

vendor/bin/console transfer:generate
vendor/bin/console propel:install

2.1.2. Twig-Templates

Das ContentConnect-Modul stellt unterschiedliche Möglichkeiten bereit, auf Shop-Inhalte aus Spryker zuzugreifen und diese in FirstSpirit zu verwenden. Diese Möglichkeiten werden im weiteren Verlauf dieser Dokumentation anhand des mitgelieferten Referenzprojekts in Form von Anwendungsfällen beschrieben.

Besteht der Wunsch, die im Referenzprojekt enthaltenen Absatz- und Seitenvorlagen zu verwenden, setzt dies Spryker-seitig unterschiedliche Twig-Templates voraus.

Die Absätze entsprechen Spryker-seitig verschiedenen Molekülen, Atomen und Organismen, die im Ordner FirstSpiritReferenceComponents zusammengefasst sind. Dieser ist ein Bestandteil der Auslieferung und wird in Form eines weiteren Spryker-Moduls bereitgestellt, das über den folgenden Befehl zu installieren ist:

Installationsbefehl. 

composer require firstspirit/firstspirit-reference-components

Damit die mit dem Modul zur Verfügung gestellten Komponenten Spryker-seitig einsetzbar sind, muss der ihnen zugehörige Pfad in Spryker bekannt gemacht werden. Dies erfolgt über die Anpassung der Dateien settings.js und tsconfig.json.

Innerhalb der settings.js-Datei im Verzeichnis Spryker-Verzeichnisfrontend ist eine Erweiterung des Kontextes notwendig:

Anpassung der settings.js-Datei. 

[...]

dirs: [
   join(globalSettings.context, paths.core),
   join(globalSettings.context, './vendor/firstspirit'),
   join(globalSettings.context, paths.eco),
   join(globalSettings.context, paths.project)
],

Der tsconfig.json-Datei im Spryker-Verzeichnis ist ein weiterer Include hinzuzufügen:

Anpassung der tsconfig.json-Datei. 

[...]

"include": [
   "./vendor/spryker-shop/**/*",
   "./vendor/spryker-eco/**/*",
   "./src/Pyz/Yves/**/*",
   "./vendor/firstspirit/**/*"
],

In derselben Datei sind darüber hinaus die compilerOptions zu erweitern, falls das mitgelieferte Shoppable Video im Projekt eingesetzt wird. Diese Anpassung ist notwendig, weil das TypeScript des Twig-Templates fs-shoppable-video auf die Youtube-API zugreift.

Erweiterung der compilerOptions. 

[...]

"compilerOptions": {
   "baseUrl": ".",
   [...],
   "paths": {
      [...]
   },
   "types": ["youtube"]
},

Außerdem erwartet das Twig-Template fs-shoppable-video ein Youtube-Iframe, das manuell zu installieren ist. Die Installation des Iframes sowie die Übernahme der Änderungen an den compilerOptions erfolgt über die nachfolgenden Befehle:

Shoppable Video - Befehle. 

npm install youtube-iframe
npm install @types/youtube

Für die Verwendung des ebenfalls in dem Modul enthaltenen Twig-Templates fs-carousel ist die Aktivierung eines Swipe-Effekts notwendig. Die Aktivierung erfolgt über den nachfolgenden Befehl:

Aktivierung des Swipe-Effekts. 

 npm install swiper

Das generische Twig-Template fs_molecule_block.twig steuert die Ausgabe der mitgelieferten Moleküle. Es ist ein Bestandteil der in der Auslieferung enthaltenen zip-Datei b2c-demo-shop-extensions-<VERSION>.zip und muss Spryker-seitig unter dem Pfad srcPyzSharedCmsBlockThemedefaulttemplate abgelegt werden.

Die Spryker-seitige Einbindung der Twig-Templates erfolgt über den nachfolgenden Befehl, der abschließend im Spryker-Projektverzeichnis auszuführen ist.

Einbindung der Twig-Templates. 

npm run yves

Die FirstSpirit-Vorlagen ermöglichen die Erweiterung bestehender statischer Seiten und Kategorieseiten sowie die Erzeugung dynamischer Inhaltsseiten oder eines Magazins. Die im Referenzprojekt enthaltenen Seitenvorlagen homepage, categorypage, contentpage und magazine_detail_page bilden dafür die Twig-Templates home.twig, catalog-with-cms-block.twig und fs-content-page.twig ab.

Das Twig-Template home.twig, das unter dem Pfad srcPyzYvesHomePageThemedefaultviewshome zu finden ist, benötigt einige Anpassungen. Diese werden in der Beschreibung statischer Seiten erläutert. Die übrigen Twig-Templates sind ein Bestandteil der in der Auslieferung enthaltenen zip-Datei und unter den folgenden Pfaden abzulegen:

  • Kategorieseiten: srcPyzYvesCmsBlockWidgetThemedefaultviewscatalog-with-cms-block
  • dynamische Inhaltsseiten: srcPyzSharedCmsThemedefaulttemplatesfs-content-page

2.1.3. Erweiterung der Konfiguration

Die Erstellung und Bearbeitung redaktioneller Inhalte findet FirstSpirit-seitig im ContentCreator statt. Im diesem ist mithilfe des Omnichannel Manager der Storefront eingebettet.

Um die Darstellung der Shop-Inhalte aus Spryker im ContentCreator zu ermöglichen, ist eine Erweiterung der umgebungsspezifischen Konfiguration erforderlich. Dafür muss in der Datei config_default-[environment].php im Verzeichnis configShared die Definition eines Tokens sowie die Angabe des Hosts und Ports der FirstSpirit-Startseite erfolgen. Außerdem erfordert der Betrieb des CaaS die Angabe einiger Parameter. Diese Parameter sind sowohl für den Produktivbetrieb als auch für den Einsatz des CaaS für die Vorschau notwendig.

Erweiterung der Konfiguration. 

// ----------- FirstSpirit Preview Configurations
$config[FirstSpiritPreviewConstants::FIRSTSPIRIT_PREVIEW_AUTHENTICATION_INIT_TOKEN] = '<ADD TOKEN>';
$config[FirstSpiritPreviewConstants::FIRSTSPIRIT_PREVIEW_WEB_HOST] = '<ADD FS PREVIEW HOST>';
$config[FirstSpiritPreviewConstants::FIRSTSPIRIT_PREVIEW_CAAS_CONTENT_PAGE_COLLECTION] = '<CAAS COLLECTION>';
$config[FirstSpiritPreviewConstants::FIRSTSPIRIT_PREVIEW_CAAS_CATEGORY_PAGE_COLLECTION] = '<CAAS COLLECTION>';
$config[FirstSpiritPreviewConstants::FIRSTSPIRIT_PREVIEW_CAAS_TECHNICAL_PAGE_COLLECTION] = '<CAAS COLLECTION>';
$config[FirstSpiritPreviewConstants::FIRSTSPIRIT_PREVIEW_CAAS_NAVIGATION_DOCUMENT] = '<NAVIGATION DOCUMENT>';
$config[FirstSpiritPreviewConstants::FIRSTSPIRIT_PREVIEW_DISPLAY_BLOCK_RENDER_ERRORS] = true;

// ----------- FirstSpirit Data Import Configurations
$config[FirstSpiritDataImportConstants::FIRSTSPIRIT_DATA_IMPORT_BLOCK_DATA_CAAS_PATH] = '/_aggrs/blocks';
$config[FirstSpiritDataImportConstants::FIRSTSPIRIT_CAAS_REQUEST_PAGESIZE] = <VALUE>;

// ----------- FirstSpirit CaaS Configurations
$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_HOSTNAME_PREVIEW] = '<ADD CAAS HOST>';
$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_PORT_PREVIEW] = '<ADD CAAS PORT>';
$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_SCHEME_PREVIEW] = '<ADD CAAS SCHEME>';
$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_APIKEY_PREVIEW] = '<ADD APIKEY>';
$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_DATABASE_PREVIEW] = '<ADD CAAS DATABASE>';

$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_HOSTNAME_ONLINE] = '<ADD CAAS HOST>';
$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_PORT_ONLINE] = '<ADD CAAS PORT>';
$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_SCHEME_ONLINE] = '<ADD CAAS SCHEME>';
$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_APIKEY_ONLINE] = '<ADD APIKEY>';
$config[FirstSpiritCaaSConstants::FIRSTSPIRIT_CAAS_DATABASE_ONLINE] = '<ADD CAAS DATABASE>';

FirstSpirit Preview Configurations

Der Token dient der Authentifizierung und ist während der FirstSpirit-seitig durchzuführenden Konfiguration als Query-Parameter der externen Vorschau-URL in den ContentCreator-Einstellungen anzugeben. Er kann beliebig definiert werden.

Die Angabe des vollqualifizierten Hosts der FirstSpirit-Startseite (z. B. http://localhost:8000) ist eine Anforderung des noch zu installierenden HeadersSecurityExtensionPlugins. Es nutzt die Information, um die Vorschauanzeige im ContentCreator zu erlauben.

Die Nennungen der CaaS Collections für Inhalts- und Kategorieseiten ermöglichen den Zugriff auf die im Preview CaaS gespeicherten redaktionellen Inhalte und ihre Darstellung im ContentCreator.

Die Konfiguration der CaaS Collection für technische Seiten sowie des Dokuments für Navigationen sind für die Pflege und Erweiterung der im Shop enthaltenen Navigationen mit FirstSpirit erforderlich. Da beide Parameter einen Standardwert (technical bzw. navigations) besitzen, ist ihre Konfiguration optional und lediglich bei Abweichungen notwendig.

Der Error-Parameter ermöglicht die Anzeige von Fehlerausgaben in der Seite. Die Verwendung des Werts true ist daher nur für Dev- und QA-Instanzen sinnvoll.

FirstSpirit Data Import Configurations

Der Pfad dient der Abfrage und Persistierung der im Online CaaS gespeicherten Block-Daten. Er wird vom FsDataImportConsole-Befehl benötigt, der bei einer FirstSpirit-Veröffentlichung den Importer anstößt.

Mithilfe der Pagesize lässt sich die Anzahl der Dokumente definieren, die der CaaS bei einem Request zurückgibt. Der Parameter, dessen Wert durch den CaaS auf maximal 1000 Dokumente limitiert wird, ist optional und besitzt standardmäßig den Wert 100.

FirstSpirit CaaS Configurations

Der CaaS-Host, der zugehörige Port und das zu verwendende Scheme (http oder https) ermöglichen Spryker die Verbindung zum CaaS. Der Zugriff auf die in ihm gespeicherten Daten setzt einen gültigen API Key voraus, der das Leserecht auf das entsprechende Projekt benötigt. Der Name des im CaaS gespeicherten Projekts ist in der Konfigurationsdatei als Wert des Database-Parameters anzugeben.

Weitere Informationen zur Verwendung des CaaS sind in der Content as a Service-Dokumentation enthalten.

Damit die verwendete Klassen FirstSpiritPreviewConstants, FirstSpiritDataImportConstants und FirstSpiritCaaSConstants gefunden werden, sind sie per use-Statement in die Konfigurationsdatei einzubinden:

Einbindung der Klassen. 

use FirstSpirit\Shared\FirstSpiritPreview\FirstSpiritPreviewConstants;
use FirstSpirit\Shared\FirstSpiritDataImport\FirstSpiritDataImportConstants;
use FirstSpirit\Shared\FirstSpiritCaaS\FirstSpiritCaaSConstants;

2.1.4. Erweiterung des Basis-Templates

Der Omnichannel Manager ermöglicht die Darstellung und Bearbeitung externer Inhalte im ContentCreator, wofür er einige vorschauspezifische Data-Attribute benötigt. Darüber hinaus setzt er Spryker-seitig die vorschauspezifischen JavaScript-Dateien ocm-content-editing.bundle.js und fs-preview-user-authentification.js sowie die CSS-Dateien fs-preview-ocm.css und fs-preview-user-authentication.css voraus. Die Dateien sind ein Bestandteil der in der Auslieferung enthaltenen zip-Datei b2c-demo-shop-extensions-<VERSION>.zip und müssen in das Verzeichnis js bzw. css unterhalb von publicYvesassetsSTOREdefault kopiert werden.

Sowohl die JavaScript- als auch die CSS-Dateien sind anschließend dem Twig-Template hinzuzufügen, das für das Basis-Layout aller Shopseiten verantwortlich ist. Im Standardfall handelt es sich dabei um das page-blank.twig-Template, das unter dem Pfad srcPyzYvesShopUiThemedefaulttemplatespage-blank abgelegt ist. In demselben Template muss außerdem die Ermittlung der Data-Attribute durch die Twig-Funktion fsIncludeDataAttributes stattfinden.

Die Anpassung des Twig-Templates erfolgt über den Aufruf der Twig-Funktionen fsIncludeDataAttributes und fsIncludeOcmFiles sowie über die Erweiterung der Template-Daten. Die Twig-Funktion fsIncludeOcmFiles erwartet für die Einbindung der JavaScript- bzw. CSS-Dateien einen entsprechenden Identifier.

Anpassung des Twig-Templates. 

{% block headStyles %}
   <link rel="stylesheet" href="{{publicPath('css/yves_default.app.css')}}" />
   {{ fsIncludeOcmFiles(identifier='css') }}
{% endblock %}

<body [..] {{ fsIncludeDataAttributes() }}>

   [..]

   {% block footerScripts %}
      <script src="{{publicPath('js/yves_default.es6-polyfill.js')}}"></script>
      <script src="{{publicPath('js/yves_default.vendor.js')}}"></script>
      <script src="{{publicPath('js/yves_default.app.js')}}"></script>
      {{ fsIncludeOcmFiles(identifier='js') }}
   {% endblock %}

</body>

2.2. Plugins

Zusätzlich zur Installation der Spryker-Module ist die Einbindung folgender Plugins erforderlich:

  • HeadersSecurityExtensionPlugin
  • FsTwigExtensionPlugin
  • FirstSpiritDataImportsResourceRoutePlugin
  • FirstSpiritDataCleanupsResourceRoutePlugin
  • FirstSpiritCmsPagesResourceRoutePlugin
  • UserAndCustomerOauthScopeProviderPlugin
HeadersSecurityExtensionPlugin und FsTwigExtensionPlugin

Das HeadersSecurityExtensionPlugin nutzt den in der Konfigurationsdatei config_default-[environment].php angegebenen Hosts der FirstSpirit-Startseite, um die Anzeige des Storefronts im ContentCreator zu erlauben. Dafür prüft es, ob Storefront-Abfragen den ebenfalls in der Konfigurationsdatei definierten Token enthalten bzw. ob ein eingeloggter Benutzer existiert. Trifft eine der beiden Optionen zu, setzt das Plugin den Content Security Policy Header und erweitert die Cookie Header.

Das FsTwigExtensionPlugin ermöglicht die FirstSpirit-seitige Pflege von CMS Placeholdern und CMS Blöcken. Dafür greift es auf Informationen zu, die der noch zu installierende CmsController bereitstellt. Die Informationen werden für das Mapping zwischen den in FirstSpirit und den in Spryker gespeicherten Daten benötigt.

Die Einbindung der beiden Plugins erfolgt mithilfe des folgenden Codes, der dem ShopApplicationDependencyProvider im Verzeichnis srcPyzYvesShopApplication hinzuzufügen ist.

Erweiterung des ShopApplicationDependencyProviders. 

use FirstSpirit\Yves\FirstSpiritPreview\Plugin\HeadersSecurityExtensionPlugin;
use FirstSpirit\Yves\FirstSpiritPreview\Plugin\FsTwigExtensionPlugin;

[...]

protected function getApplicationPlugins(): array
{
   return [
      new HeadersSecurityExtensionPlugin(),
      new FsTwigExtensionPlugin()
   ];
}

FirstSpiritDataImportsResourceRoutePlugin und FirstSpiritDataCleanupsResourceRoutePlugin

Das FirstSpiritDataImportsResourceRoutePlugin und das FirstSpiritDataCleanupsResourceRoutePlugin stellen jeweils einen API-Endpunkt bereit. Mithilfe dieses Endpunkts kann der FirstSpirit-seitige Deployment-Auftrag den Importer ansprechen.

Das FirstSpiritDataImportsResourceRoutePlugin steuert auf diesem Weg die Übertragung der redaktionellen Inhalte aus dem Online CaaS nach Spryker und ihre dortige Persistierung. Im Gegensatz dazu dient das FirstSpiritDataCleanupsResourceRoutePlugin der Ermittlung und Löschung veralteter Daten in Spryker.

Beide Plugins und das nachfolgende FirstSpiritCmsPagesResourceRoutePlugin sind dem GlueApplicationDependencyProvider hinzuzufügen.

FirstSpiritCmsPagesResourceRoutePlugin

Wird innerhalb des ContentCreators eine neue Seite angelegt, ist parallel die Erzeugung einer CMS Page in Spryker erforderlich. Da der ContentCreator den Storefront anzeigt, wäre die neu erstellte Seite andernfalls nicht in der Vorschau sichtbar. Stattdessen wäre sie bereits gleichzeitig im Live-Stand verfügbar, würde sie erst mit einem Deployment Spryker-seitig erstellt.

Das FirstSpiritCmsPagesResourceRoutePlugin dient der Erzeugung der neuen Seite. Dieses Plugin und die zuvor beschriebenen anderen beiden ResourceRoutePlugins sind dem GlueApplicationDependencyProvider im Verzeichnis srcPyzGlueGlueApplication hinzuzufügen:

Erweiterung des GlueApplicationDependencyProviders. 

use FirstSpirit\Glue\FirstSpiritDataRestApi\Plugin\FirstSpiritDataImportsResourceRoutePlugin;
use FirstSpirit\Glue\FirstSpiritDataRestApi\Plugin\FirstSpiritDataCleanupsResourceRoutePlugin;
use FirstSpirit\Glue\FirstSpiritDataRestApi\Plugin\FirstSpiritCmsPagesResourceRoutePlugin;

[...]

protected function getResourceRoutePlugins(): array
{
   return [
      new FirstSpiritDataImportsResourceRoutePlugin(),
      new FirstSpiritDataCleanupsResourceRoutePlugin(),
      new FirstSpiritCmsPagesResourceRoutePlugin()
      [...]
   ];
}

UserAndCustomerOauthScopeProviderPlugin

Während der FirstSpirit-Generierung erfolgt eine Spryker-seitige Authentifizierung mit dem Customer, der während der FirstSpirit-seitig durchzuführenden Konfiguration in der Projekt-Komponente anzugeben ist. Das UserAndCustomerOauthScopeProviderPlugin prüft, ob dieser Customer einem Zed-User zugewiesen ist. Ist dies der Fall, fügt das Plugin dem von Spryker zurückgelieferten Authentifizierungstoken die für den Import notwendige Berechtigung zed-user hinzu.

Das Plugin erfordert eine Registrierung innerhalb des OauthDependencyProviders im Verzeichnis srcPyzZedOauth. Dafür ist innerhalb der Methode getScopeProviderPlugins das CustomerOauthScopeProviderPlugin wie folgt zu ersetzen:

Registrierung des UserAndCustomerOauthScopeProviderPlugins. 

use FirstSpirit\Zed\FirstSpiritDataImport\Communication\Plugin\Oauth\UserAndCustomerOauthScopeProviderPlugin;

[...]

protected function getScopeProviderPlugins(): array
{
   return [
      new UserAndCustomerOauthScopeProviderPlugin()
   ];
}

2.3. Widgets

Neben den Spryker-Modulen und den Plugins enthält die Auslieferung die nachfolgenden Widgets. Sie ermöglichen die Erweiterbarkeit der im Shop enthaltenen Navigationen sowie den Einsatz der im Referenzprojekt enthaltenen DOM-Verweise und des Shoppable Images. Ausschließlich bei der Verwendung dieser Elemente ist eine Registrierung der Widgets erforderlich.

  • FirstSpiritCategoryLinkWidget
  • FirstSpiritProductLinkWidget
  • FirstSpiritContentLinkWidget
  • FirstSpiritMagazineLinkWidget
  • FirstSpiritExternalLinkWidget
  • FirstSpiritProductFlyoutWidget
  • ExtendedNavigationWidget

Die ersten beiden Widgets dienen der Darstellung redaktioneller DOM-Verweise auf Kategorie- bzw. Produkt-Detailseiten. In beiden Fällen ermittelt das Widget dafür die entsprechende Kategorie bzw. das Produkt anhand eines eindeutigen Identifiers und übergibt das Ergebnis dem Twig-Template, das die Spryker-seitige Darstellung des jeweiligen Verweises steuert. Jedes der beiden Widgets referenziert das ihm zugehörige Twig-Template. Die Twig-Templates werden durch das zuvor installierte FirstSpiritPreview-Modul bereitgestellt.

Das FirstSpiritContentLinkWidget, das FirstSpiritMagazineLinkWidget und das FirstSpiritExternalLinkWidget ermöglichen DOM-Verweise auf redaktionelle Inhalte, wobei sich die Art dieser Inhalte jeweils unterscheidet. Das FirstSpiritExternalLinkWidget erlaubt ausschließlich die Referenzierung externer Inhalte. Im Gegensatz dazu dienen das FirstSpiritContentLinkWidget sowie das FirstSpiritMagazineLinkWidget der Darstellung interner DOM-Verweise auf dynamische Inhaltsseiten bzw. Magazinartikel, die innerhalb des FirstSpirit-Projekts gepflegt sind. Ein wichtiger Aspekt dabei ist, dass die Ziel-URL interner Verweise auf dynamische Inhaltsseiten von der Ausgabe abhängig sind: Während sich der Verweis im Live-Stand auf die veröffentlichte CMS Page bezieht, muss in der Vorschau die zugehörige Vorschau-URL verwendet werden. Das Widget steuert in beiden Fällen die Ermittlung der jeweils benötigten URL.

Die Registrierung des FirstSpiritProductFlyoutWidgets ist nur dann erforderlich, wenn das mit der Auslieferung bereitgestellte Shoppable Image im Projekt verwendet wird. Das Widget steuert die Darstellung der Flyouts für die auf dem Shoppable Image verlinkten Produkte.

Das ExtendedNavigationWidget schafft die Möglichkeit, die im Shop enthaltenen Navigationen mit FirstSpirit zu pflegen und um weitere Menüpunkte zu ergänzen. Es erweitert das bestehende NavigationWidget in Spryker und stellt verschiedene Attribute zur Verfügung, die für die Darstellung der entsprechenden Navigation in der Vorschau erforderlich sind.

Die Registrierung der Widgets erfolgt mithilfe des folgenden Codes, der dem ShopApplicationDependencyProvider im srcPyzYvesShopApplication hinzuzufügen ist.

Erweiterung des ShopApplicationDependencyProviders. 

use FirstSpirit\Yves\FirstSpiritPreview\Widget\FirstSpiritCategoryLinkWidget;
use FirstSpirit\Yves\FirstSpiritPreview\Widget\FirstSpiritProductLinkWidget;
use FirstSpirit\Yves\FirstSpiritPreview\Widget\FirstSpiritContentLinkWidget;
use FirstSpirit\Yves\FirstSpiritPreview\Widget\FirstSpiritMagazineLinkWidget;
use FirstSpirit\Yves\FirstSpiritPreview\Widget\FirstSpiritExternalLinkWidget;
use FirstSpirit\Yves\FirstSpiritPreview\Widget\FirstSpiritProductFlyoutWidget;
use Pyz\Yves\NavigationWidget\Widget\ExtendedNavigationWidget;

[...]

protected function getGlobalWidgets(): array
{
   return [
      [...]
      FirstSpiritCategoryLinkWidget::class,
      FirstSpiritProductLinkWidget::class,
      FirstSpiritContentLinkWidget::class,
      FirstSpiritMagazineLinkWidget::class,
      FirstSpiritExternalLinkWidget::class,
      FirstSpiritProductFlyoutWidget::class
   ];
}

2.4. Controller

Das zuvor installierte CmsBlockTwigFunctionPlugin ermöglicht das Mapping zwischen den in FirstSpirit und den in Spryker gespeicherten Inhalten. Dafür setzt es voraus, dass die View-Daten einer Page deren Id und Typ enthalten. Diese Informationen stellen die Controller von Spryker standardmäßig jedoch nicht bereit. Aus diesem Grund ist sowohl für Inhalts- und Kategorieseiten als auch im Fall der Homepage, die einer statischen Seite entspricht, eine Überschreibung der folgenden Controller notwendig:

  • IndexController
  • CatalogController
  • CmsController
  • PreviewController

Die Überschreibung erfolgt durch das Anlegen der zugehörigen Klassen, die alle ein Bestandteil der in der Auslieferung enthaltenen zip-Datei b2c-demo-shop-extensions-<VERSION>.zip sind. Sie müssen in das jeweils zu erzeugende Verzeichnis Controller unterhalb von srcPyzYvesHomePage|CatalogPage|CmsPage kopiert werden.

Existieren die Klassen bereits unter dem für sie genannten Pfad, werden die Controller bereits projektspezifisch überschrieben. In diesem Fall ist jeweils sicherzustellen, dass die View-Parameter entsprechend erweitert werden.

Zusätzlich zu den genannten Controllern enthält die Auslieferung den CmsBlockRenderController, der die Aktualisierung eines einzelnen CMS Blocks in der Vorschau ermöglicht. Er existiert initial nicht in Spryker und erfordert daher eine Registrierung in der YvesBootstrap-Datei im Verzeichnis PyzYvesShopApplication. Innerhalb der Datei ist die Methode getControllerProviderStack wie folgt zu erweitern.

Erweiterung der Methode getControllerProviderStack. 

use FirstSpirit\Yves\FirstSpiritPreview\Plugin\Provider\CmsBlockRenderControllerProvider;

[...]
protected function getControllerProviderStack($isSsl)
{
   return [
      [...]
      new CmsBlockRenderControllerProvider($isSsl)
   ];
}

2.5. Hauptnavigation

Der Spryker B2C Demo Shop enthält standardmäßig unterschiedliche Navigationen, die sich Spryker-seitig erzeugen und bearbeiten lassen. Die mit dem ContentConnect-Modul realisierte Integration bietet die Möglichkeit, diese Navigationen auch mit FirstSpirit zu pflegen und um weitere Menüpunkte zu ergänzen.

Innerhalb des Referenzprojekts ist die Funktionalität exemplarisch für die Hauptnavigation sowohl in der Desktop- als auch in der mobilen Version umgesetzt. Ihre Verwendung setzt die Referenzierung des ExtendedNavigationWidgets, die Erzeugung eines Platzhalters sowie die Ergänzung einer Preview ID voraus.

Das ExtendedNavigationWidget erweitert das bestehende NavigationWidget und stellt verschiedene Attribute für die Vorschaudarstellung der Navigation bereit. Es muss daher anstelle des NavigationWidgets referenziert werden. Für die Desktopversion ist dafür die Anpassung der header.twig-Datei im Verzeichnis srcPyzYvesShopUiThemedefaultcomponentsorganismsheader erforderlich:

Anpassung der header.twig-Datei. 

[..]
   {% widget 'ExtendedNavigationWidget' args ['MAIN_NAVIGATION_DESKTOP', 'navigation-header'] %}
   {% endwidget %}
[..]

Die Referenzierung des ExtendedNavigationWidgets für die mobile Hauptnavigation erfolgt in der side-drawer.twig-Datei im Verzeichnis srcPyzYvesShopUiThemedefaultcomponentsorganismsside-drawer:

Anpassung der side-drawer.twig-Datei. 

[..]
   {% widget 'ExtendedNavigationWidget' args ['MAIN_NAVIGATION', 'navigation-header-mobile'] %}
   {% endwidget %}
[..]

Die Darstellung der Navigation in der Vorschau erfordert die Erzeugung eines weiteren Menüpunkts, der als Platzhalter dient. Dieser ist für die Desktopversion in der navigation-header.twig-Datei im Verzeichnis srcPyzYvesShopUiThemedefaultcomponentsmoleculesnavigation-header hinzuzufügen:

Anpassung der navigation-header.twig-Datei. 

[..]
<ul class="menu {{ menuClass }} grid grid--center grid--no-wrap">
   {% for node in data.nodes %}
      [..]
   {% endfor %}

   {% if isFsPreview() %}
      <li class="fs-navigation-extension"
         style="padding-left: 1rem; transform: translate(0,15% );">
      </li>
   {% endif %}
</ul>
[..]

Die Ergänzung des Platzhalters in der mobilen Hauptnavigation erfolgt über eine Änderung der navigation-header-mobile.twig-Datei im Verzeichnis srcPyzYvesNavigationWidgetThemedefaultcomponentsmoleculesnavigation-header-mobile:

Anpassung der navigation-header-mobile.twig-Datei. 

[...]
{% block body %}
   [...]
   {% include molecule('toggler-accordion') with {
      attributes: {
         trigger: '.js-navigation-multilevel-node__trigger',
         'class-to-toggle': 'navigation-multilevel-node__menu--hidden',
         activeClass: 'navigation-multilevel-node__icon--active'
      }
   } only %}
   {% if isFsPreview() %}
      <li class="fs-navigation-extension"></li>
   {% endif %}
{% endblock %}
[...]

Für die Darstellung der Hauptnavigation in der Vorschau ist darüber hinaus eine Preview ID erforderlich. Ihre Definition erfolgt in der navigation-multilevel-node.twig-Datei im Verzeichnis srcPyzYvesShopUiThemedefaultcomponentsmoleculesnavigation-multilevel-node. Da beide Versionen der Hauptnavigation auf diese Datei zugreifen, ist in diesem Schritt lediglich eine Anpassung notwendig:

Anpassung der navigation-multilevel-node.twig-Datei. 

{% block attributes %}
   {% if isFsPreview() and data.node.previewId is defined and data.node.previewId is not empty %}
      data-preview-id="{{ data.node.previewId }}" style="min-height: unset;"
   {% endif %}
{% endblock %}

Unter Umständen ist nach den vorgenommenen Änderungen eine Leerung des Caches für die Twig-Templates sowie eine Neuerzeugung des Frontends notwendig.

2.6. Error Page

Enthält eine Seite illegalen Code zeigt Spryker einen sogenannten Fail Whale an. Dabei handelt es sich um eine von Spryker standardmäßig bereitgestellte Fehlerseite. Da diese keine Navigationsmöglichkeiten besitzt, versetzt sie den Benutzer in einen Zustand, aus dem er keine andere Shopseite mehr aufrufen kann.

In der Auslieferung ist daher eine Fehlerseite enthalten, die sich dem Design der übrigen Shopseiten anpasst und sowohl einen Header als auch einen Footer einbindet. Für ihre Verwendung muss der Inhalt des Ordners ErrorPage in das bereits bestehende Verzeichnis srcPyzYvesErrorPage kopiert werden. Der Ordner ist ein Bestandteil der mitgelieferten zip-Datei b2c-demo-shop-extensions-<VERSION>.zip.

Des Weiteren ist der Seite error.html im Verzeichnis srcpublicYveserrorpage die folgende Zeile hinzuzufügen:

Erweitererung der error.html. 

<meta http-equiv="Refresh" content="0; url=/error/500" />

2.7. Query Container

Das zuvor installierte Cms Block Data Connector-Modul erzeugt eine Zed-Tabelle. In dieser Tabelle werden während des Imports die aus dem Online CaaS ermittelten redaktionellen Inhalte gespeichert. Die Persistierung der CMS Blöcke erfolgt in einer weiteren Tabelle.

Da die CMS Blöcke keine Placeholder enthalten, werden sie von Spryker standardmäßig nicht publiziert. Aus diesem Grund ist es notwendig, den CmsBlockStorageQueryContainer zu überschreiben und damit das Spryker-seitige Standardverhalten zur Publizierung von CMS Blöcken anzupassen. Die Überschreibung des Query Containers erfolgt durch das Anlegen der Klasse CmsBlockStorageQueryContainer.php. Sie ist ein Bestandteil der in der Auslieferung enthaltenen zip-Datei b2c-demo-shop-extensions-<VERSION>.zip und ist in das zu erzeugenden Verzeichnis srcPyzZedCmsBlockStoragePersistence zu kopieren.

2.8. Technischer Benutzer

Die mit dem ContentConnect-Modul realisierte Integration sieht FirstSpirit-seitig lediglich die Erzeugung und Pflege der redaktionellen Inhalte sowie ihre Publizierung in Form von JSON-Objekten vor. Die Einbindung dieser Inhalte und die Erzeugung der Vorschau findet jedoch weiterhin Spryker-seitig statt.

Im Vorschaufall ermittelt FirstSpirit die aktuelle Ansicht einer Seite im Storefront und zeigt sie mithilfe des Omnichannel Managers im ContentCreator an. Für die Integration der redaktionellen Inhalte in den Shop, importiert Spryker sie aus dem Online CaaS und persistiert sie in seinem internen Datensystem.

Da sowohl die Vorschau als auch der Importprozess per Authentifizierung geschützt ist, muss in der Projekt-Komponente des ContentConnect-Moduls ein technischer Benutzer angegeben werden. Dieser entspricht einem Customer, der wiederum einem Zed-User zugewiesen ist. Die Zuweisung lässt sich im Menü Users ControlUser über den Button Assign Customers durchführen.

Eine genauere Beschreibung der für die Zuweisung notwendigen Schritte ist in den Kapiteln Assigning Customers und Previewing a Page der Spryker-Dokumentation enthalten.

2.9. Import-Befehl

Die Integration der FirstSpirit-seitig erstellten bzw. gepflegten Inhalte in den Shop erfolgt durch Spryker. Dafür importiert Spryker die Daten aus dem Online CaaS und persistiert sie in seinem Datensystem. Die Übertragung der Informationen muss bei jeder FirstSpirit-Veröffentlichung stattfinden, die aus diesem Grund jedes Mal einen Spryker-seitigen Import-Befehl anstößt.

Der Befehl weist den Importer an, die im Online CaaS gespeicherten Block-Daten zu importieren. Dabei nutzt er den in der Konfigurationsdatei config_default-[environment].php angegebenen FirstSpirit Data Import Block CaaS Path. Mithilfe dieses Pfads greift der Importer auf die CaaS-Aggregation zu, die während der FirstSpirit-Veröffentlichung erzeugt wird.

Der Import-Befehl muss Spryker-seitig in den getConsoleCommands registriert werden. Dafür ist die folgende Erweiterung der ConsoleDependencyProvider.php-Datei im Verzeichnis srcPyzZedConsole erforderlich:

Erweiterung der getConsoleCommands. 

use FirstSpirit\Zed\FirstSpiritDataImport\Communication\Console\FsDataImportConsole;

[...]

$commands = [
   // Default commands
   [...]

   // FirstSpirit Data importers
   new FsDataImportConsole(FsDataImportConsole::DEFAULT_NAME)
];

2.10. Frontend-Einstiegspunkt

Der FirstSpirit ContentCreator generiert und aktualisiert standardmäßig lediglich vollständige Seiten. Um innerhalb der Vorschau zusätzlich die Aktualisierung einzelner Absätze zu ermöglichen, wird Spryker-seitig ein weiterer EventListener benötigt. Dieser muss dem Frontend-Einstiegspunkt hinzugefügt werden. Dafür ist die app.ts-Datei im Verzeichnis srcPyzYvesShopUiThemedefault wie folgt zu erweitern:

Erweiterung der Datei app.ts. 

import { bootstrap, mount } from 'ShopUi/app';
bootstrap();
document.addEventListener('NewComponentAttached', () => mount());

Existiert die app.ts-Datei unter dem genannten Pfad nicht, muss sie mit dem beschriebenen Inhalt angelegt werden.

2.11. Synchronisation

Die in FirstSpirit gepflegten redaktionellen Inhalte werden während des Deployments mithilfe des Importers aus dem Online CaaS abgefragt. Der Importer überträgt die Daten nach Spryker und persistiert sie Backend-seitig in dessen Datensystem. Die Anzeige der Daten im Live-Stand erfordert zusätzlich ihre Übertragung nach Yves. Die Übertragung der Daten erfordert die Registrierung eines Event Subscribers, zweier Queues und eines Message Processors notwendig.

Nähere Informationen sind im Kapitel Publish and Synchronization der Spryker Dokumentation enthalten.

Die Registrierung des EventSubscribers erfolgt mithilfe des folgenden Codes, der dem EventDependencyProviders im Verzeichnis PyzZedEvent hinzuzufügen ist.

Erweiterung des EventDependencyProviders. 

use FirstSpirit\Zed\FirstSpiritCmsDataStorage\Communication\Plugin\Event\Subscriber\FirstSpiritCmsDataStorageEventSubscriber;

[...]

public function getEventSubscriberCollection()
   {
      $eventSubscriberCollection = parent::getEventSubscriberCollection();

      [...]
      $eventSubscriberCollection->add(new FirstSpiritCmsDataStorageEventSubscriber());
      [...]

      return $eventSubscriberCollection;
   }
}

Die Registrierung der Queues setzt die folgende Anpassung der RabbitMqConfig-Datei im Verzeichnis PyzClientRabbitMq voraus:

Erweiterung der RabbitMqConfig-Datei. 

use FirstSpirit\Shared\FirstSpiritCmsDataStorage\FirstSpiritCmsDataStorageConstants;

[...]

class RabbitMqConfig extends SprykerRabbitMqConfig
{
   protected function getQueueOptions()
   {
      $queueOptionCollection = new ArrayObject();

      [...]

      $queueOptionCollection->append($this->createQueueOption(
         FirstSpiritCmsDataStorageConstants::FS_CMS_BLOCK_DATA_SYNC_STORAGE_QUEUE,
         FirstSpiritCmsDataStorageConstants::FS_CMS_BLOCK_DATA_SYNC_STORAGE_ERROR_QUEUE));

      [...]

      return $queueOptionCollection;
   }
}

Die Registrierung des für die Queues notwendigen Event Subscribers macht eine Anpassung des QueueDependencyProviders im Verzeichnis PyzZedQueue erforderlich:

Erweiterung des QueueDependencyProviders. 

use FirstSpirit\Shared\FirstSpiritCmsDataStorage\FirstSpiritCmsDataStorageConstants;

[...]

protected function getProcessorMessagePlugins(Container $container)
{
   return [
      [...]
      FirstSpiritCmsDataStorageConstants::FS_CMS_BLOCK_DATA_SYNC_STORAGE_QUEUE =>
         new SynchronizationStorageQueueMessageProcessorPlugin(),
      [...]
   ];
}

3. FirstSpirit - Installation und Konfiguration

Für die Verwendung der Funktionalitäten des ContentConnect-Moduls ist FirstSpirit-seitig die Installation und Konfiguration unterschiedlicher Komponenten erforderlich. Die folgenden Unterkapitel erläutern die dafür notwendigen Schritte.

3.1. Installation der Module

Für die Bereitstellung der Funktionen des ContentConnect-Moduls werden zusätzlich die Module Content as a Service und Omnichannel Manager benötigt, die ebenfalls auf dem FirstSpirit-Server zu installieren sind.

Die Auslieferung enthält nur das ContentConnect-Modul. Das Content as a Service- sowie das Omnichannel Manager-Modul sind über den Technical Support zu beziehen.

Öffnen Sie für die Installation der Module den ServerManager und wählen Sie den Bereich Server-EigenschaftenModule.

Server-Eigenschaften - Modulinstallation
Abbildung 4. Server-Eigenschaften - Modulinstallation


Im Hauptpanel ist eine Liste aller auf dem FirstSpirit-Server installierten Module zu sehen. Wählen Sie nach dem Klicken auf Installieren nacheinander die contentconnect-spryker-module-<Versionnumber>.fsm, caas-<Versionnumber>.fsm und fs-tpp-api-<Versionnumber>.fsm aus und bestätigen Sie die Auswahl jeweils mit Öffnen. Nach der erfolgreichen Installation wurden der Liste die Ordner ContentConnect, Content as a Service und FirstSpirit ThirdPartyPreview hinzugefügt, die jeweils Alle Rechte erhalten müssen.

Das Content as a Service-Modul enthält einen Service, über den eine Standardkonfiguration anzugeben ist. Die dafür notwendigen Schritte sind in der Content as a Service-Dokumentation beschrieben.

Nach jeder Installation oder Aktualisierung eines Moduls ist ein Neustart des FirstSpirit-Servers notwendig.

3.2. Projektimport

Ein Bestandteil der Auslieferung ist das Referenzprojekt ContentConnect Reference Project, das auf dem FirstSpirit-Server zu installieren ist. Öffnen Sie dafür im ServerManager den Import-Dialog über den Menüpunkt ProjektImportieren und wählen Sie über den Button Lokal die Datei referenceproject.tar.gz aus ihrem lokalen Dateisystem aus. Vergeben Sie anschließend einen Projektnamen sowie eine Beschreibung und bestätigen Sie den Import mit Ja. Nach der erfolgreichen Installation wurde das Projekt der Liste im Hauptpanel hinzugefügt.

Importiertes Projekt im ServerManager
Abbildung 5. Importiertes Projekt im ServerManager


Neben den Standardgruppen Everyone und Administrators existieren im Referenzprojekt drei weitere Benutzergruppen: Editors, ChiefEditors und ProjectAdmins. Die Gruppen besitzen verschiedene Rechte, die entsprechend ihrer Aufgaben gewählt und für die verschiedenen Verwaltungen definiert wurden. Benutzer außerhalb dieser Gruppen sind standardmäßig nicht berechtigt das Referenzprojekt zu verwenden.

3.3. Konfiguration der Projekt-Komponente

Für den Einsatz des ContentConnect-Moduls ist eine projektspezifische Konfiguration notwendig. Diese wird über die Projekt-Komponente vorgenommen, die dem mitgelieferten Referenzprojekt bereits hinzugefügt ist.

Zur Nutzung des ContentConnect-Moduls müssen außerdem das Content as a Service- sowie das Omnichannel Manager-Modul konfiguriert werden. Die dafür notwendigen Schritte sind in der Content as a Service-Dokumentation bzw. in der Dokumentation des Omnichannel Managers beschrieben.

Innerhalb des Referenzprojekts ist in der Projekt-Komponente des CaaS für die Mediennutzung die Generierung der Medien in den CaaS definiert. Diese Konfiguration ist explizit nicht im Produktivbetrieb einzusetzen. Für den Produktivbetrieb muss die Mediennutzung auf die Verwendung eines CDNs umgestellt werden.

Öffnen Sie für die Konfiguration der Projekt-Komponente den ServerManager und wählen Sie den Bereich Projekt-EigenschaftenProjekt-Komponenten.

Server-Eigenschaften - Projekt-Komponenten
Abbildung 6. Server-Eigenschaften - Projekt-Komponenten


Im Hauptpanel ist eine Liste aller bereits vorhandenen Projekt-Komponenten zu sehen. Selektieren Sie den Eintrag ContentConnect For FirstSpirit Commerce OS Project Configuration und öffnen Sie den zugehörigen Konfigurationsdialog über Konfigurieren.

Der Dialog gliedert sich in die Tabs Allgemein, Vorschau und Veröffentlichung:

Allgemein

Innerhalb des Reiters Allgemein sind die Storefront Basis URL und die Glue-API Basis URL anzugeben. Sie müssen dem FirstSpirit-Server bekannt sein, um eine Verbindung zu Spryker herstellen und Daten abfragen zu können.

Projekt-Komponente - Allgemein
Abbildung 7. Projekt-Komponente - Allgemein


Vorschau

Innerhalb des Reiters Vorschau wird zunächst der Login-Pfad benötigt. Das entsprechende Feld enthält vorausgefüllt den Default-Wert /login_check, der sich bei Bedarf anpassen lässt.

Des Weiteren sind in diesem Reiter die Login-Daten eines technischen Benutzers einzutragen. Dieser muss dem Customer entsprechen, der während der Spryker-seitig auszuführenden Schritte definiert wurde. Er dient der Spryker-seitigen Abfrage des Storefronts, der mithilfe des Omnichannel Managers im ContentCreator eingebunden wird.

Projekt-Komponente - Vorschau
Abbildung 8. Projekt-Komponente - Vorschau


Veröffentlichung

Der Reiter Veröffentlichung enthält jeweils eine Liste aller im Projekt verfügbaren Gruppen und Voll-Deployment-Aufträge. Er ermöglicht die Bereitstellung des selektierten Deployment-Auftrags im Aktionen-Menü des ContentCreators für die im Reiter aktivierten Gruppen. Das Aktionen-Menü enthält für die Ausführung des Auftrags den Menüpunkt Veröffentlichung. Für Gruppen, denen die Ausführung des Auftrags nicht erlaubt ist, ist der Eintrag sichtbar, aber deaktiviert.

Innerhalb des mitgelieferten Referenzprojekts kann dem ChiefEditor auf diesem Weg beispielsweise die Ausführung des Voll-Deployments ermöglicht werden.

Darüber hinaus verwenden der Freigabe- und der Lösch-Arbeitsablauf den an dieser Stelle selektierten Auftrag, wenn zusätzlich zur Freigabe bzw. Löschung einer Seite die Publikation des gesamten Projekts angestoßen werden soll.

Für Server- und Projektadministratoren ist die Ausführung des Voll-Deployments standardmäßig erlaubt, unabhängig von der Konfiguration innerhalb des Reiters.

Projekt-Komponente - Veröffentlichung
Abbildung 9. Projekt-Komponente - Veröffentlichung


3.4. Hinzufügen der Web-Komponenten

Für den ContentCreator wird eine Web-Komponente benötigt, die dem mitgelieferten Referenzprojekt bereits hinzugefügt ist. Diese muss jedoch noch auf einem aktiven Webserver installiert werden. Öffnen Sie hierfür den ServerManager und wählen Sie den Bereich Projekt-EigenschaftenWeb-Komponenten.

Innerhalb des Hauptpanels sind verschiedene Registerkarten zu sehen, in denen jeweils eine Liste der bereits vorhandenen Web-Komponenten sichtbar ist. Diese Liste enthält für die Vorschau und den ContentCreator die ContentConnect For Spryker Commerce OS Web App. Im ContentCreator-Tab ist darüber hinaus die FirstSpirit ThirdPartyPreview WebApp hinzugefügt (vgl. Abbildung Web-Komponenten in den Projekt-Eigenschaften).

Selektieren Sie in beiden Registerkarten einen Webserver über die Auswahlbox und starten Sie die Installation jeweils über den Button Installieren. Nach der erfolgreichen Installation öffnet sich ein Dialog, in welchem die Aktivierung des Webservers zu bestätigen ist.

Für die Nutzung der Web-Komponente FirstSpirit ThirdPartyPreview WebApp ist eine Konfiguration notwendig, die in der Dokumentation des Omnichannel Managers beschrieben ist.

Detaillierte Informationen zum Hinzufügen von Web-Komponenten finden Sie in der FirstSpirit Dokumentation für Administratoren.

Web-Komponenten in den Projekt-Eigenschaften
Abbildung 10. Web-Komponenten in den Projekt-Eigenschaften


3.5. Definition der externen Vorschau-URL

Durch die Verwendung des Omnichannel Managers stellt der ContentCreator externe Inhalte aus Spryker dar, auf die der Omnichannel Manager eine Zugriffsmöglichkeit benötigt. In den ContentCreator-Eigenschaften ist daher die Vorschau-URL des Spryker-Storefronts anzugeben. Da die Angabe stets projektspezifisch ist, existiert für sie innerhalb des Referenzprojekts keine Standardkonfiguration.

Öffnen Sie für die Eingabe den Bereich Projekt-EigenschaftenContentCreator innerhalb des ServerManagers und tragen Sie in dem Feld Externe Vorschau-URL die URL des Storefronts mit der folgenden Syntax an:

https://[STOREFRONT_HOST_DOMAIN]/en/?firstSpiritPreview=[PREVIEW_INIT_TOKEN]

Der für den Queryparameter firstSpiritPreview anzugebende Token muss mit dem Authentifizierungstoken übereinstimmen, der während der Spryker-seitig durchzuführenden Konfiguration definiert wurde. Er ist in der Datei config_default-[environment].php im Verzeichnis configShared gespeichert.

Externe Vorschau-URL
Abbildung 11. Externe Vorschau-URL


3.6. Konvertierungsregel

Die Definition der an den CaaS zu übertragenden Daten findet im noch anzulegenden Ausgabekanal statt. Die Verwendung bestimmter Sonderzeichen könnte zu invaliden JSON-Objekten führen. Aus diesem Grund muss eine Konvertierungsregel angelegt werden, um potentielle Fehler zu vermeiden.

Es empfiehlt sich, eine neue Konvertierungsregel anzulegen, anstatt eine bestehende zu bearbeiten. Erzeugen Sie hierfür eine Textdatei in Ihrem Dateisystem und fügen Sie dieser den folgenden Inhalt hinzu:

Konvertierungsregel. 

0x22="\""
[convert]
0x3c="&lt;"
0x3e="&gt;"
0x22="&#34;"
0x26="&amp;"
0x27="&#39;"

Öffnen Sie anschließend den ServerManager und selektieren Sie den Punkt Server-EigenschaftenKonvertierungs-Regeln. Im Hauptpanel ist eine Liste der bereits existierenden Konvertierungsregeln zu sehen. Wählen Sie nach dem Klicken auf Hinzufügen die zuvor erstellte Textdatei aus Ihrem Dateisystem aus und bestätigen Sie die Auswahl mit Öffnen. Die Liste im Hauptpanel wird daraufhin um die neue Regel ergänzt, die dem zu erstellenden Ausgabekanal zuzuordnen ist.

Weitere Informationen finden Sie in der FirstSpirit Dokumentation für Administratoren.

3.7. Ausgabekanal

Zusätzlich zu den bereits vorhandenen Ausgabekanälen eines Projekts wird ein weiterer XML-Kanal benötigt. Dieser muss für leere Projekte manuell angelegt werden, ist innerhalb des mitgelieferten Referenzprojekts ContentConnect Reference Project jedoch bereits enthalten.

Der Ausgabekanal wurde im ServerManager unter dem Punkt Projekt-EigenschaftenVorlagensätze angelegt und besitzt folgende Konfiguration:

Ausgabekanal
Abbildung 12. Ausgabekanal


In der gleichnamigen Auswahlbox muss die zuvor erzeugte Konvertierungsregel ausgewählt werden.

Der Ausgabekanal ist aktiviert und steht somit im Projekt zur Verfügung. Er dient der Definition der zu übertragenden Inhalte, die während der Generierung in Nachrichten zusammengefasst und an den CaaS übermittelt werden.

3.8. Auflösungen

Das Referenzprojekt ContentConnect Reference Project besitzt unterschiedliche Absätze, mit denen sich auf den verschiedenen Seiten Bilder einbinden lassen. Die Bilder sollen durch den Redakteur auf einen bestimmten Bildausschnitt zugeschnitten werden können. Diese Funktionalität wird über die Angabe einer Auflösung aktiviert.

Für das Referenzprojekt werden die Auflösungen CONTENT_IMAGE, BANNER_IMAGE and MAGAZINE_ARTICLE_BANNER benötigt. Sie sind bereits innerhalb des ServerManagers im Bereich Projekt-EigenschaftenAuflösungen angelegt und an den entsprechenden Stellen angegeben.

Auflösungen
Abbildung 13. Auflösungen


3.9. Generierungsauftrag - Vollgenerierung

Die Freigabe von Inhalten sieht standardmäßig keine Aktualisierung des Online CaaS und keine Datenübertragung nach Spryker vor. Sie umfasst stattdessen lediglich den FirstSpirit-Freigabeprozess, der sich beispielsweise durch die Benutzung des Freigabe-Arbeitsablaufs der BasicWorkflows abbilden lässt. Eine Aktualisierung des Online CaaS sowie eine Datenübertragung nach Spryker findet erst im Rahmen einer Veröffentlichung statt.

Die Veröffentlichung freigegebener redaktioneller Inhalte erfolgt durch die Ausführung eines CaaS-Auftrags. Das Referenzprojekt besitzt dafür den Auftrag Spryker Deployment, der innerhalb des ServerManagers im Bereich Projekt-EigenschaftenAuftragsverwaltung angelegt ist. Er lässt sich mithilfe der im ContentCreator verfügbaren Aktion Veröffentlichung starten und enthält die folgenden Aktionen:

Aktionen der Vollgenerierung
Abbildung 14. Aktionen der Vollgenerierung


Der Auftrag führt eine Vollgenerierung aus und überträgt die Daten in den Online CaaS, der sie Spryker für den Import bereitstellt. Dabei dienen die Aktionen Initialize CaaS Generation, CaaS Generate, CaaS Cleanup und Finalize CaaS Generation der Befüllung des Online CaaS. Sie sind in der Content as a Service-Dokumentation beschrieben.

Die Aktionen Setup CaaS Blocks Aggregations, Trigger Spryker Import, Trigger Spryker Cleanup und Send Result Mail erweitern den Auftrag und sind in den nachfolgenden Unterkapiteln beschrieben.

Die Aktion Send Result Mail verschickt im Fehlerfall eine E-Mail mit allen relevanten Informationen an einen zu definierenden Empfänger. Dessen E-Mail-Adresse ist dafür im Feld eMail-Verteiler in den Eigenschaften des Auftrags anzugeben.

Darüber hinaus muss es der Gruppe ChiefEditors innerhalb des Referenzprojekts möglich sein, die Vollgenerierung auszuführen. Dafür muss der Gruppe die Interaktive Ausführung in den Eigenschaften des Auftrags erlaubt werden. In dem mitgelieferten Auftrag ist diese Einstellung bereits vorgenommen.

Eigenschaften des Auftrags
Abbildung 15. Eigenschaften des Auftrags


3.9.1. Setup CaaS Blocks Aggregations

Standardmäßig speichert der CaaS die aus FirstSpirit übertragenden Inhalte seitenbasiert ab und liefert sie ebenso aus. Die Verarbeitung und Persistierung redaktioneller Inhalte erfolgt in Spryker jedoch auf der Grundlage von CMS Blöcken, die jeweils einem FirstSpirit-Absatz entprechen. Um diese Diskrepanz aufzulösen, müssen die im Online CaaS gespeicherten Daten daher vor dem Import entsprechend aufbereitet werden. Aus diesem Grund ist ausschließlich allen Collections des Online CaaS eine Aggregation hinzuzufügen. Für den Preview CaaS ist diese Anpassung nicht notwendig, da die Informationen im Vorschaufall direkt von ihm bezogen werden und keine Verarbeitung in Spryker stattfindet.

Der Auftrag enthält für die Erzeugung der Aggregationen die Skript-Aktion Setup CaaS Blocks Aggregations.

Setup CaaS Blocks Aggregations. 

#! executable-class
com.espirit.ecom.contentconnect.spryker.module.caas.BlocksAggregationSetupExecutable

Das Skript führt für die konfigurierten Collections des Online CaaS einen PUT-Request aus. Dieser erzeugt die Aggregationen, mit deren Hilfe alle in den erweiterten Collections enthaltenen CMS Blöcke für Spryker zum Import bereitgestellt werden. Das Skript benötigt dafür die Liste der betreffenden Collections, die sich ihm mithilfe des optionalen Parameters caas_collections übergeben lässt.

Der Parameter besitzt standardmäßig den Wert contentpages;categorypages;productpages;technical und muss daher im Referenzprojekt nicht konfiguriert werden. Um den Default-Wert zu überschreiben, ist der Parameter caas_collections im Eigenschaftendialog des Skripts hinzuzufügen. Sein Wert muss einer per Semikolons separierten Liste aller Collections, für die eine Aggregation zu erzeugen ist, entsprechen.

Konfigurationsparameter
Abbildung 16. Konfigurationsparameter


3.9.2. Trigger Spryker Import

Die Erstellung und Bearbeitung redaktioneller Inhalte findet FirstSpirit-seitig im ContentCreator statt. Sie werden nach der Freigabe per Deployment in den Online CaaS übertragen und aus diesem von Spryker importiert, um sie in den Shop zu integrieren. Um die Inhalte Spryker-seitig stets aktuell zu halten, muss der Importprozess durch das Deployment angestoßen werden. Der Auftrag enthält daher die Skript-Aktion Trigger Spryker Import. Das Skript aktiviert einen Spryker-seitigen Import-Job, der seinerseits den Import und die Persistierung der im Online CaaS gespeicherten Inhalte anstößt.

Trigger Spryker Import. 

#!executable-class
com.espirit.ecom.contentconnect.spryker.module.trigger.triggerimport.TriggerImportExecutable

Bei der Verwendung des Spryker B2C Demo Shops schlägt der Import möglicherweise beim Zugriff auf den Endpunkt access-tokens mit einem Response Code 500 fehl. In diesem Fall müssen die Key-Dateien dev_only_private.key und dev_only_public.key innerhalb des Verzeichnisses datashopdevelopmentcurrentconfigZed die Berechtigung 600 bzw. 660 erhalten.

Die Spryker-seitige Löschung von Kategorien oder Produkten, die im FirstSpirit-Projekt referenziert sind, kann möglicherweise zu einem Abbruch des Imports führen.

3.9.3. Trigger Spryker Cleanup

Die Erstellung und Bearbeitung redaktioneller Inhalte findet FirstSpirit-seitig statt, bevor sie per Deployment in den Online CaaS übertragen und aus diesem von Spryker importiert werden. Um den Datenbestand in beiden Systemen stets aktuell zu halten, sind aus dem FirstSpirit-Projekt gelöschte Inhalte auch Spryker-seitig zu entfernen. Der Auftrag enthält dafür die Skript-Aktion Trigger Spryker Cleanup. Das Skript stößt einen Abgleich zwischen den Inhalten an, die im Online CaaS gespeichert sowie im Datensystem Sprykers persistiert sind. Auf diesem Weg lassen sich Spryker-seitig die veralteten Daten ermitteln und anschließend entfernen.

Trigger Spryker Cleanup. 

#!executable-class
com.espirit.ecom.contentconnect.spryker.module.trigger.triggercleanup.TriggerCleanupExecutable

3.9.4. Send Result Mail

Die Ausführung des Deployments der in FirstSpirit erstellten bzw. bearbeiteten Inhalte erfolgt in den meisten Fällen über den ContentCreator. Der ContentCreator informiert den Redakteur jedoch nicht darüber, ob eine Publikation erfolgreich war oder fehlgeschlagen ist. Aus diesem Grund enthält der Auftrag die Skript-Aktion Send Result Mail. Diese verschickt im Fehlerfall eine E-Mail mit allen relevanten Informationen an den Empfänger, der in den Eigenschaften des Auftrags im Feld eMail-Verteiler definiert ist. Die E-Mail enthält außerdem die Möglichkeit, diese Informationen an den Technical Support der e-Spirit AG weiterzuleiten.

Trigger Spryker Cleanup. 

#! executable-class
com.espirit.ecom.contentconnect.spryker.module.schedule.ReviewScheduleResultExecutable

3.10. Generierungsauftrag - Vorschaugenerierung

Unter bestimmten Umständen kann es vorkommen, dass die Datenbestände aus dem FirstSpirit-Projekt, dem CaaS und in Spryker divergieren. Die Datenbestände des Online CaaS und in Spryker lassen sich in diesem Fall durch eine Vollgenerierung aktualisieren. Im Gegensatz dazu müssten für die Aktualisierung des Preview CaaS alle Seiten innerhalb des FirstSpirit-Projekts einzeln neu gespeichert werden.

Das Referenzprojekt enthält aus diesem Grund den Auftrag Spryker Preview Deployment, der innerhalb des ServerManagers im Bereich Projekt-EigenschaftenAuftragsverwaltung angelegt und ausschließlich von Projektadministratoren ausführbar ist. Der Auftrag besitzt mit Ausnahme der Aktionen Setup CaaS Blocks Aggregations und Send Result Mail dieselben Aktionen wie die Vollgenerierung. Da die Informationen im Vorschaufall direkt aus dem Preview CaaS bezogen werden und keine Verarbeitung in Spryker stattfindet, ist die Erzeugung von Aggregationen für die Vorschaugenerierung nicht notwendig. Da die Vorschaugenerierung außerdem aus dem ServerManager heraus gestartet wird, ist der Versand einer E-Mail an einen Adminstrator ebenfalls nicht erforderlich.

Nach dem Import eines FirstSpirit-Projekts ist die Durchführung eines Inhaltsabgleichs zwingend erforderlich.