Monatsarchive: Juni 2013

php.net in neuem Gewand

Seit ich denken kann hat sich php.net in ein und dem selben Layout präsentiert – doch das hat sich vor kurzem geändert: Endlich wurde ein neues Design veröffentlicht. Meiner Meinung nach längst überfällig. Der neue Look tut der Seite wirklich gut und man findet sich weiterhin überall ohne Probleme zurecht.

Aktuell ist das Design zwar noch im Beta-Stadium, aber meiner Meinung nach sieht das alles schon sehr fertig und brauchbar aus. Ich konnte bisher keine Fehler oder Probleme feststellen. Daumen hoch!

PHP: Image-Tags aus HTML-Code extrahieren

Bei der Entwicklung eines WordPress-PlugIns zum Bild-Import von Pinterest-Walls brauchte ich eine Funktion, um aus HTML-Code die Image-Tags zu extrahieren. Dabei habe ich mich aber unnötig schwer getan – dennoch führen sehr viele Wege nach Rom.

Regulärer Ausdruck

PHP-Klasse DOMDocument

Ich habe mich für den zweiten Weg entschieden – welcher Weg performanter ist kann ich an dieser Stelle nicht sagen – jedenfalls funktionieren beide Lösungen.

Referenzen:

ORO-Plattform-Installation

Einleiten möchte ich den Artikel mit einem Zitat von der offiziellen Webseite:

OroCRM is an easy-to-use, open source CRM with built-in marketing tools for your ecommerce business. It’s the CRM both marketing and sales can agree on!

Parallel dazu, existiert die grundlegende Plattform separat. Sie wurde entwickelt, um möglichst schnell und unkompliziert verschiedene Anwendungen aufsetzen zu können. Dabei wird auf folgende Technologien zurück gegriffen:

Getestet wird mit:

Aktuell befindet sich die Plattform allerdings noch im Beta-Status. Nichts desto trotz werde ich mich schon ab heute mit der Funktionalität und der Entwicklung auseinander setzen. Die erste stabile Version soll im vierten Quartal diesen Jahres veröffentlicht werden (2013).

Also starten wir mit der Installation:

Dann die Konfiguration anpassen und speichern. In meinem Fall habe ich nur die Datenbankverbindung angepasst.

Der Standardbenutzer für die Anmeldung (unter der URL /web/user/login) lautet „admin“ und hat ebenfalls das Passwort „admin“. Bei mir kam als erstes ein Fehler, dass keine Rolle zugewiesen wurde. Das wird sich natürlich im Laufe der Entwicklungsarbeit noch ändern. Nach einem weiteren Aufruf der URL fand ich dann folgende Seite vor:

Oro Application

Damit ist die Installation abgeschlossen und die Entwicklungarbeit kann beginnen. Dazu mehr im nächsten Blog-Post. Viel Erfolg!

HTML5-Videos im Firefox abspielen (ohne mp4)

Irgendjemand hat sich überlegt, dass der Firefox kein mp4 unterstützten soll, da es sich nicht um ein Open-Source-Format handelt. Generell bekommt der Browser bei allem was H.264 kodiert ist ein Problem. Schade – für HTML5-Videos muss man also auf webm zurück greifen.

Bisher dachte, dass Handbrake so ziemlich alles umwandeln kann was mit Video zu tun hat – diesmal nicht. Um mp4 in webm zu konvertieren gibt es das Firefox-PlugIn Firefogg. Nach der Installation besucht man die entsprechende Website (natürlich mit Firefox) und kann dort sein Video konvertieren. Nicht schön, aber funktioniert.

Eine Übersicht der Browser und dessen unterstützten Formaten findet man hier.

UTF-8 mit PHP richtig ausliefern

Um ein WordPress-Plugin richtig betreiben zu können musste ich vor ein paar Tagen von PHP 5.2 auf PHP 5.3 umstellen. Der Schritt war sowieso schon längst überfällig. Leider wurden Umlaute auf einer meiner Seiten plötzlich nichtmehr korrekt dargestellt. Das Ganze konnte nur an einem UTF-8-Problem liegen.

Alle PHP-Dateien auf dem Server sind mit UTF-8 encodiert. Weiterhin wollte ich dem Browser das genutzte Encoding auf der Seite folgendermaßen mitteilen:

Diese Angabe scheint dem Browser aber plötzlich egal gewesen zu sein. Auch die Chome Developer Tools haben mir nicht verraten ob der Server im Header eventuell nun ein anderen Encoding mitgibt und das im HTML angegebene Encoding überschreibt. Also habe ich es nun nochmals explizit im HTTP-Header mitgeliefert – doppelt hält ja bekanntlicherweise eh besser.
Als dritte Möglichkeit kann man das Encoding auch in der .htaccess festlegen. Dabei hängt es aber stark vom Provider ab ob dies möglich ist, und ob die Angabe dann auch genutzt wird:

Frames vergessen Namen nach AJAX-Request

In einem älteren Projekt mit Framesets hatte ich ein seltsames Problem. Die Seite ist in zwei bereiche unterteilt – Navigation/Menu und einen Content-Bereich. Die Links im Menu wurden mit entsprechenden target-Attributen versehen um anzugeben, dass diese in dem anderen Frame geöffnet werden sollen. Das hat auch alles sehr gut funktioniert – solange man keinen Ajax-Request im Content-Frame ausgelöst hat. Scheinbar verstehen sich die beiden Technologien nicht so richtig.

Das komische daran ist, dass es im Firefox seit Ewigkeiten korrekt funktioniert hat – nur Chrome ging nicht so richtig. Seit den neueren Firefox-Versionen trat dann das selbe Problem auf. Nach einem Ajax-Call sind die Links im Menu in neuen Tabs geöffnet worden anstatt direkt in dem anderen Frame.

Ich habe viel ausprobiert um das Problem zu lösen – das erneute setzen des Frame-Namens nach jedem Request (per JavaScript) hat das Problem schließlich gelöst.

Am besten man nutzt einfach keine Frames mehr und geht solchen Problemen direkt aus dem Weg.

Magento Entwicklung – Hilfreiche Snippets

Während der Entwicklung von Magento-Modulen merkt man doch sehr oft, dass man oft das gleiche braucht oder sucht. In den meisten fällen weiß ich dann einfach wo (in welchem Projekt) ich eine bestimmte Funktionalität schonmal genutzt habe und kopiere sie mir dann von dort.

Damit das ganze öffnen, kopieren, schließen von Projekten ein Ende hat, habe ich in letzter Zeit immer wieder Snippets für bestimmte Funktionen in ein gist gepackt. Ich versuche ab jetzt immer daran zu denken die Snippets die man öfter brauchen könnte dort hinzuzufügen.

https://gist.github.com/klein0r/5441524

Wer Lust hat, kann meine Sammlung natürlich als Basis nutzen und Forken. So habe ich es schließlich auch gemacht. Falls euch etwas fehlt könnt ihr es mich natürlich gerne in den Kommentaren wissen lassen!