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

Neuer Arbeitgeber

So, seit diesem Jahr, also erst seit wenigen Tagen, bin ich wieder in DĂŒsseldorf tĂ€tig, bei TWT. Das ist meine erste Agentur in der GrĂ¶ĂŸenordnung. Ich bin mal gespannt, wie es so wird. Nur so viel, die ersten Tage waren schon mal sehr nett und machen Spaß auf mehr. Und jetzt genug geschleimt, ich muss ins Bett 😉

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.