Magnolia Apps (Teil 2) – Technischer Background an Hand der pages App

Im ersten Teil meiner Serie habe ich kurz skizziert, was eine Magnolia App ausmacht und welche Kategorien von Apps es gibt. In diesem zweiten Teil konzentriere ich mich auf das Thema Content App, da es aus meiner Sicht für uns Implementierer der Bereich mit der grösseren Auswirkung ist.

(mehr …)

Magnolia Apps (Teil 1) – Einführung – Yet another App definition?

Seit der Einführung des App Store durch Apple im Jahr 2008 hat sich der Begriff „App“ für Anwendungssoftware etabliert und wird meistens mit „Mobile App“ assoziert. Mittlerweile wird der Begriff aber auch für Web-Anwendungen und sogar Desktop-Anwendungen verwendet.

Auch Magnolia bietet ab der Version 5 (mittlerweile auch schon seit zwei Jahren) die Möglichkeit „Apps“ zu entwickeln. Was aber heisst das im Magnolia Kontext? Kann man mit Magnolia jetzt Anwendungen fürs iPhone bauen? Was für Arten von „Magnolia Apps“ gibt es überhaupt, wo liegen die Unterschiede und welche verwendet man wann? (mehr …)

Kampagnenbasierte Segmentierung mit Magnolia – Teil 2 – Implementierung

personalization-apps

Wir werden nun in Magnolia den im Ersten Teil beschriebenen Use Case mittels eines Custom Traits umsetzen. Hierfür benötigen wir einen Trait, welcher eine Segmentierung basierend auf dem HTTP Referrer Header erlaubt.

TL;DR

Magnolia setzt für personalisierten Content auf Seitenvarianten – Variants genannt. Welche Seitenvariante für den Endbenutzer gewählt wird, wird mittels Segments bestimmt. Ein Segment besteht aus einem oder mehreren Traits welche zusammen Regeln bilden anhand derer die Besucher klassifiziert werden.

Um die Segmentierung zu testen können fiktive Personen – Personas definiert werden, welche ebenfalls mehrere Traits aufweisen können. Mittels diesen können Autoren die einzelnen Varianten testen um festzustellen, ob der korrekte Inhalt an die korrekten Zielpersonen ausgespielt wird.

Eigene Traits können mit geringem programmatischen Aufwand hinzugefügt werden.

(mehr …)

Personalisierung (benutzerspezifischer Content) mit Magnolia

Ziele der Personalisierung

Mittels Personalisierung möchte man unterschiedliche Inhalte einer Seite verschiedenen Websitebesuchern möglichst zielgerichtet anzeigen. Ein ganz simples Beispiel wäre zum Beispiel, dass man einem Besucher aus der Schweiz andere Inhalte auf der Startseite anzeigen möchte als einem Besucher aus Deutschland. Ein etwas umfangreicheres Beispiel könnte sein, dass man am 24.12. einem Besucher aus Deutschland welcher zum ersten Mal die Webseite besucht einen anderen Inhalt anzeigt wie allen anderen Besuchern. Hier sind noch sehr viele weitere unterschiedliche Szenarien vorstellbar.

Seit Version 5.3 bietet Magnolia Personalisierung mit Bordmitteln an

Die Auslieferung von personalisiertem Content ist seit der Version 5.3 von Magnolia mit Bordmitteln möglich, hierbei wurde der sogenannte „Target“ Bereich eingeführt.

Target in Magnolia

Personalisierung in Magnolia – Target Bereich

(mehr …)

Magnolia CMS und Apache Solr Facettensuche – Teil 2 (Technische Perspektive)

Ausgangslage

Wie in Teil 1 bereits beschrieben, ist es manchmal erforderlich, dass eine gewisse Menge an Informationsitems angezeigt werden muss. Um dem Benutzer hier die Möglichkeit zu geben, die für ihn relevanten Informationen zu filtern sollen mehrere unterschiedliche Filter aus verschiedenen Kategorien gewählt werden können. Die Filter sollen sich beliebig kombinieren lassen, so dass am Ende nur die für den Benutzer wirklich relevanten Informationen angezeigt werden. (In diesem Fall zu sehen bei: www.famigros.ch)

Den Teasern können beliebige Fakten aus beliebigen Kategorien zugewiesen werden. Ein Beispiel wäre „location/Ostschweiz“.

Grundidee

Für die Lösung des Problems wird die Facettensuche des Apache Solr Servers verwendet. Um den Solr Server mit Daten zu versorgen benutzen wir Magnolias Aktivierungs Workflow und pushen beim Aktivieren die entsprechenden Daten. Die Abfrage der Ergebnissmenge erfolgt aus dem Frontend. Der Ablauf für das Bereitstellen der Solr-Dokumente ist also dieser:

  1. Es wird ein neues Informationsitem (z.B. Teaser) in Magnolia erfasst.
  2. Der Benutzer kann diesem aus einem Katalog Ausprägungen verschiedener Kategorien zuweisen
  3. Der Benutzer aktiviert den Content
  4. Während der Aktivierung wird das Informationsitem an den SOLR gepusht

Im Frontend ist der Ablauf dieser:

  1. Besucher gehen auf die Seite mit den Items
  2. Besucher wählen einen Filter
  3. Es gibt einen Request auf den Solr, der die gefilterten Ergebnisse in Form eines JSON zurückgibt
  4. Das Frontend stellt die gefilterten Items dar

(mehr …)

Umgebungsspezifische Konfigurationen in Magnolia CMS

Einführung

Wenn ich ein grösseres Magnolia Projekt mit verschiedensten Instanzen aufsetze (local development, development, staging, integration, production), stellt sich früher oder später die Frage,  wie ich verschiedene Konfigurationen kontrolliert auf die verschiedenen Instanzen installieren kann.

In diesem Blog Post zeige ich einen einfachen Lösungsansatz auf, der sich beliebig erweitern und auf projektspezifische Bedürfnisse abstimmen lässt.

Problemstellung

Magnolia bringt out-of-the-box bereits einen Mechanismus mit, der umgebungsspezifisches Einspielen von XML Bootstrap Files erlaubt. Dieser Mechanismus ist aber beschränkt auf die Initialisierung des JCR Repositories und erlaubt deshalb weder das Einspielen von Updates via XML Files, noch eine Interaktion mit Java Code.

Im Laufe eines Projektes kommt oft der Punkt, an dem ich ein Update / Delta Task nur auf einem oder mehreren bestimmten Systemen ausführen möchte. Dazu zählen zum Beispiel das Ändern des SMTP Server im Mail Modul, oder das Aktualisieren eines Subscribers. Zudem kann es auf der lokalen Entwicklungsumgebung sinnvoll sein, bei jedem Neustart des Systems einen Teil der Konfigurationen neu zu schreiben, um die Entwicklung auf einem sauberen Stand zu starten oder Änderungen von anderen Entwicklern im eigenen Repository zu sehen.

Lösungsansatz

Im magnolia.properties File wird ein neues Property magnolia.environment definiert, welches den Namen der Umgebung beinhalten wird.

magnolia.properties

...
magnolia.environment = <env_name>
...

Dieser Lösungsansatz erfordert lediglich, dass für jede zu unterscheidende Umgebung ein eigenes magnolia.properties File existiert, was aber in grösseren Projekten weitgehend der Fall sein sollte.

Das neue Property wird durch eine simple Java Hilfsklasse ausgelesen, und erlaubt auf einfache Weise das Unterscheiden der verschiedenen Umgebungen, insbesondere der lokalen Entwicklungsumgebung. 

(mehr …)

Design Pattern – Dependency Injection

Zur Freude von vielen Entwicklern setzt Magnolia ab Version 4.5 auf das Dependency Injection Design-Pattern (oder Inversion of Control). Dieses Pattern gibt es jetzt schon eine ganze Weile und hat sich spätestens mit dem Spring Framework für Java bei vielen Projekten bewährt.
(mehr …)

Label- und Konfigurations-Verwaltung in Magnolia

In vielen Namics-Projekten steht die Anforderung im Raum, Übersetzungs-Labels und andere Kongifurations-Werte direkt im CMS anpassen zu können – ohne dass dazu ein Deployment resp. eine Änderung am Code stattfinden muss. Obendrauf muss es vorallem in Multisite-Auftritten möglich sein, einzelne global definierte Default-Werte bei Bedarf für z.B. eine Länder-Site anzupassen.

Alle diese Anforderungen haben uns dazu gebracht, ein Magnolia Modul zu entwickeln dass einfach zu einem Projekt (im Maven pom.xml oder direkt JAR File) hinzugefügt werden kann.
(mehr …)

Integration Celum Imagine in Magnolia

Setzen Sie Celum für die Verwaltung Ihrer Dokumente und Bilder ein welche Sie auch auf Ihrem Webauftritt verwenden möchten? Wir haben einen Magnolia-Celum Connector implementiert.

Installation und Inbetriebnahme

Das Modul wird als Maven-Abhängigkeit dem Projekt hinzugefügt und steht danach per sofort zur Verfügung. Es müssen nur noch der Servername, der Benutzer und das Passwort für die Verwendung von Celum in der Konfiguration des Moduls eingetragen werden.

Es empfiehlt sich, für die Verwendung des Celum Connectors einen eigenen (technischen) Benutzer in Celum anzulegen. Dieser gilt danach für alle Autoren die sich eingeloggt haben sowie die Wartungs-Jobs des Systems.
(mehr …)