Platzhirsch Duisburg – Neues Projekt mit Pimcore

Vor einigen Monaten kam ich mal wieder zu einem Projekt, welches mit Pimcore umgesetzt wurde. Dabei handelt es sich um ein kleines Indie-3-Tages-Festival in Duisburg. Das ganze war quasi Nachbarschaftshilfe. 😉

Jedenfalls hat es mal wieder Spaß gemacht, etwas mit der aktuellen Pimcore Version umsetzen zu können. Und eine große Einarbeitungszeit für die Redakteure und Festival-Betreuer war auch nicht nötig.

Die Seite findet ihr hier: http://www.platzhirsch-duisburg.de/

Nächstes Jahr geht das ganze dann mit einer, in Details überarbeiteten Version, in die dritte Auflage 😉

platzhirsch-duisburg-start

CSS Support in Newsletter

Falls man mal eine CSS-Übersicht für die wichtigsten E-Mail-Clients benötigt, weil man sich wieder fragt, warum dieses oder jenes zum Beispiel nicht in Gmail funktioniert, dann kann die Seite http://www.campaignmonitor.com/css/ ganz hilfreich sein. Jedenfalls muss man sich dann nicht ewig fragen, warum das jetzt wieder nicht geht…

css-nl-overview

Neue Seite meines Arbeitgebers

In den letzten Wochen hatte ich kaum kaum Zeit mich groß um irgendwas zu kümmern, was dieses Blog hier anging, da ich beruflich doch ziemlich eingespannt war, zudem hatte ich im November noch zwei Wochen Urlaub, in denen ich Computer eher versucht habe komplett zu meiden. Jedenfalls sind wir jetzt mit einer neuen Unternehmens-Webseite am Start, die man auch unter www.rsk.com findet. Basis des Projekts ist wieder das CMS Pimcore.

Auschnitt Webseite

Die Seite ist noch nicht ganz fertig. Es fehlen noch einige Kleinigkeiten, die aber wegen eines festen Abgabe-Termins hinten angestellt werden mussten. Alles in allem ist es eine Single-Side-Page, was auch immer man davon halten mag. Optisch hat es sicher Vorteile, von den Ladezeiten sind hier aber Abstriche zu machen. Ach, und irgendwie muss man dann auch noch die Javascript-Verweigerer irgendwie außen vor lassen. Ich muss zugeben, ist nicht so meine Welt, aber na ja, dennoch kann sich das Ergebnis jetzt schon sehen lassen (vor allem im Vergleich zur alten Seite) und reichlich bei gelernt habe ich zwangsläufig auch bei der Umsetzung, vor allem im Bezug auf Ajax.

Nebenbei: Ich habe vorhin mal Testweise Javascript deaktiviert und zu meiner Überraschung sieht man noch erstaunlich viel. Ok, die Funktionsweise der meisten Elemente ist quasi im Eimer, aber immerhin sieht man noch die wesentlichen Inhalte und die auch noch nah am eigentlichen Layout.

Neben dieser Seite gab es natürlich auch noch einige Kundenpräsenzen zu betreuen, so dass für eigene Projekte weder die Zeit noch Lust vorhanden waren. Ich hoffe, im neuen Jahr wird es hier etwas entspannter, denn ich hätte schon gern mal wieder Lust auf ein eigenes Projekt.

Double Opt-In ohne Datenbank

Wenn man von Nutzern Daten in irgendeiner Art erhebt, in der Regel via eines Online-Formulars und man Aufgrund des angestossenen Vorgangs reagieren möchte, zum Beispiel dem Versenden von Newslettern, kommt man um ein sogenanntes Double Opt-In nicht drum herum, wenn man sich nicht mit Schadensersatzansprüchen des Nutzers herumschlagen möchte, weil dieser vielleicht unerwünschte E-Mails oder Anrufe erhalten hat.

Wir haben bisher immer alle Benutzerdaten bei diesem Prozess in Datenbanken gesichert, was natürlich bedeutet, dass man den Nutzer zusätzlich auf Datenschutz-Bestimmungen hinweisen muss. Je nach Formulierungen ein weiterer juristischer Knackpunkt. Auf der technischen Seite wird man gezwungen eine Datenbank aufzusetzen, diese Daten zu pflegen und gegebenenfalls per definiertem Regelwerk den Datenbestand wieder zu bereinigen. Wie man sieht, im laufe der Zeit nicht wenig Aufwand, den man sich damit einfängt.

Ich muss zugegeben, es gibt Szenarien, wo man nicht darum herum kommt, die oben genannten Punkte alle zu berücksichtigen, aber wir hatten letztens den Fall, dass Daten via eines Bestellformulars für Probefahrten direkt an ein CRM (Customer-Relationship-Management) weitergeleitet werden sollen und wir die Datenvorhaltung lediglich für das Double Opt-In benötigen. Da kam ein ehemaliger Kollege von mir auf die Idee, doch alles via E-Mail inkl. der Daten per Get-Parameter zu übergeben. Da in diesem Fall sämtliche Daten in dem Link für das Double Opt-In innerhalb der E-Mail sind, benötigen wir hier keine weitere Instanz, um die Daten zu speichern.

Damit nicht jeder sofort erkennt, was da versendet wird, sollte man den Wert des Get-Parameters maskieren, zum Beispiel mit der PHP-Funktion base64_encode. Noch besser wäre es, das ganze zu verschlüsseln, wobei sich hier in PHP die mcrypt-Library eignet. Aus dem ganzen könnte dann folgende Klasse entstehen:

Nun braucht man einen passenden String, den man mit der oben aufgeführten Klasse verschlüsseln möchte. Ich fand einen JSON Formatierten String für diesen Zweck ideal, da man ja am Ende die Daten wieder irgendwie nach Keys und Values auflösen möchte. Hier kann man entweder mit entsprechenden Libraries einen JSON String erstellen (JSON Encode), oder, da das Format recht überschaubar ist, den String selbst erstellen.

Ich habe mich für Letzteres entschieden und am Ende sollte das dann so oder ähnlich aussehen. Das Ergebnis wird dann für das Double Opt-In via E-Mail an den User gesendet. Die Daten kommen aus einem vorher ausgefüllten Formular:

Ich habe den String vor allem selbst erstellt, um die Möglichkeit zu haben, die Key-Namen um einiges zu verkürzen, damit der String bei mehreren Feldern nicht zu lang wird. URLs sollten eine länge von ca. 2000 Zeichen nicht übersteigen und da beim Verschlüsseln, trotz des komprimierens die Länge etwas zunimmt, schadet es nicht, dort zu sparen, wo es geht und Sinn macht.

Der User erhält eine E-Mail, wenn er korrekterweise der richtige Empfänger ist, wird er auf den Link klicken und auf der Zielseite wird der verschlüsselte Wert wieder dekodiert, das JSON Objekt wieder in ein Array umgewandelt und die Daten dann weiter verarbeitet, zum Beispiel an ein externes CRM geschickt.

Wie man sieht, kommt man so um eine eigene Datenhaltung herum und spart sich eine Menge Aufwand.

Facebook, iFrames, HTML5 und der liebe IE

Bei dem aktuellen Projekt, welches eine Implementierung einer Facebook App war, gab es allerhand Hürden zu nehmen. Zum einen finde ich die Dokumentation der Facebook API stellenweise immer noch dürftig, zum Anderen ändert Sie sich auch relativ häufig, was manch Hilfestellungen, die man per Google findet, schon wieder veraltet sind, selbst, wenn sie aus dem Jahr 2010 stammen.

Nachdem ich mich auf diversen Seiten eingelesen habe konnte ich schließlich die kleine Bewerbungsseite für unseren Kunden als App auf Facebook erstellen. Seitdem Tabs auf Facebook-Fanseiten und Apps prinzipiell als iFrame realisiert werden und dort eigentlich zumindest Serverseitig nahezu alles möglich ist, was auch auf einer eigenen Seite umgesetzt werden kann, faktisch läuft es ja in einer eigenen Umgebung, ist es um einiges einfacher geworden. Vor ca. 2 Jahren, bei meinem ersten Versuch, mich mit dem Thema auseinander zu setzen, fand ich mehr Probleme und vor allem Einschränkungen vor.

Jedenfalls kam ich auf die Idee, als Grundgerüst für die View auf HTML5 zu setzen, dank Boilerplate ist das ja kein großes Problem mehr, wenn es um die Crossbrowser-Kompatibilität geht. Na ja, nach kurzer Zeit sah das ganze ja auch gut aus, dachte ich. In den bevorzugten Browsern (Chrome und Firefox) sah das ganze wie gewünscht aus, aber der Internet Explorer in Versionen kleiner als 9 spielte nicht mit. Haben der IE7 und der IE8 eigentlich mit nativen HTML5 Seiten danke Boilerplate keine Probleme (siehe www.nissan-in-berlin.de), stellte sich bei der Facebook-App heraus, dass hier die HTML5 Elemente im verwendeten iFrame nicht mehr interpretiert wurden. Der IE9 zeigte dieses Verhalten nicht. Letzten Endes musste ich alle section, article, aside (und viele mehr) Elemente wieder entfernen und durch Divs mit aussagekräftigen IDs versehen.

NISSAN Fame by Frame APP

eine von mehreren Bewerbungsseiten der Fame by Frame Aktiob

Merke: Bei Facebook Applikations lieber noch auf XHTML1.0 oder HTML4.01 setzen.

Ein weiteres Projekt auf Pimcore Basis

Vor zwei Wochen haben wir das zweite Projekt auf Pimcore Basis gelauncht, NISSAN in Berlin (www.nissan-in-berlin.de). Hierbei handelt es um den ersten Teil einer Multisite-Lösung, da neben Berlin in späteren Stufen noch andere Bundesländer folgen werden, die alle auf der gleichen Basis beruhen. Sprich, der Pflegeaufwand wird minimiert. Das meiste wird hier mit dem doch recht mächtigen Objekt-Modell von Pimcore gelöst, mit dem nahezu alle Inhalte, wie Events, Angebote und eben die jeweiligen Händler abgebildet werden. Lediglich die News werden via RSS von einer externen Quelle eingespeist.

Bei dem Projekt fiel mir auf, dass es äußerst ungünstig ist, Snippets den Default-Controller zuzuweisen, vor allem dann, wenn er in seiner Init-Methode ein Layout zugewiesen bekommt. Wie ich letztens im Pimcore Forum sah, bin ich aber nicht der Einzige, dem so was passiert ist.

Startseite von NISSAN in Berlin

http://www.nissan-in-berlin.de

Blog der Frankfurter Buchmesse

Bereits letztes Jahr durfte ich das Neue, noch heute verwendete Blog der Frankfurter Buchmesse umsetzten. Hierfür musste ein neues Template für WordPress, angereichert mit zahlreichen Plugins, erstellt werden. Eine weitere Hürde war die Zweisprachigkeit des Ganzen, die teilweise auch Inhaltlich voneinander getrennt sind, daher wurde es eine Multisite-Installation von WordPress, die noch so manche schwächen bei der Userverwaltung zu Tage führt.

Im Zuge der Neugestaltung des Blogs mussten die alten Beiträge, aus vormals vier getrennten Blogs, in den neuen Auftritt integriert werden. Das Resultat seht auf auf dem unten eingefügten Screenshot.

Blog der Frankfurter Buchmesse

www.buchmesse.de/blog/de

Projekt Nummer 1 auf Pimcore Basis

Vor einiger Zeit habe ich das erste Projekt mit Pimcore umgesetzt, ein Auftritt für unseren Kunden Nissan. Hierbei ging es um eine Informations- und Bestellplattform für Webauftritte der zahlreichen Nissan Händler in Deutschland, Österreich und der Schweiz.

Der Auftritt befindet sich unter www.nissan-haendler.de.

Startseite von www.nissan-haendler.de

www.nissan-haendler.de

 

Das war eine gute Basis, um das Pimcore-CMS kennen zu lernen. Ich kann es jedem ans Herz legen, dem Systeme wie Drupal oder Typo3 zu starr sind.