Archiv der Kategorie: Webentwicklung

Lokale Web-Entwicklungsumgebung: Z-WAMP statt Wamp-Server

Um PHP-Dateien und Datenbankzugriffe auf dem lokalen PC testen zu können, installiert man sich ja bekanntlich eine Entwicklungsumgebung. Man kann alles einzeln installieren, also zum Beispiel den Apache-HTTP-Server, einen MySQL- oder Maria-Datenbankserver und natürlich die Programmiersprache PHP. Der Konfigurationsaufwand ist allerdings beträchtlich, und so greift man doch lieber zu einem fertigen Paket. Solche Pakete nennen sich WAMP (Windows-Apache-MySQL/MariaDB-PHP), LAMP (Linux-etc.) und MAMP (Mac-etc.).

Bisher hatte ich immer Wamp-Server benutzt, das auf zwei PCs gut lief. Doch nachdem ich den zweiten Rechner von Windows® 7 auf 10 umgestellt hatte, wollte der Apache-Teil dieses Wamp-Servers nicht mehr laufen, der Apache-Dienst ließ sich einfach nicht starten. Aber es gibt ja noch etliche andere WAMP-Stacks. Der Uniform Server gefiel mir ganz gut, ebenfalls der EasyPHP Devserver, aber letzten Endes landete ich bei Z-WAMP und blieb begeistert an ihm hängen.

Z-WAMP benötigt keine Installation. Man entpackt eine Zip-Datei und das war’s. Die Konfiguration beschränkte sich in meinem Fall darauf, in der Apache-Konfigurationsdatei anzugeben, welches Verzeichnis als localhost anzusehen ist, und dann noch die Datenbanken aus dem alten Wamp-Server-Ordner in den Z-WAMP-Unterordner vdrive\.sys\mysql\data zu kopieren. Ach ja, die bisherigen Datenbankbenutzer mussten noch neu eingerichtet werden. Übrigens, man sollte alle eventuell noch vorhanden vorherigen WAMP-Installationen deinstallieren, um Konflikte zu vermeiden. Die Datenbanken waren bei der Deinstallation von Wamp-Server sogar erhalten geblieben, aber natürlich sollte man (nicht nur vor solchen Aktionen) immer zuverlässige Backups angefertigt haben (externe Festplatte, FTP-Server, …).

Z-WAMP startet sehr schnell und lief bisher auf beiden Rechnern zuverlässig.

URLs mit oder ohne Querstrich am Ende

Bei einem Blick auf die Adressleiste des Browsers fällt auf, dass viele Blog- und Content-Management-Systeme die Webseiten an den Webbrowser ohne Dateiendung ausliefern, also ohne .html oder .php.

Nun kann es Fälle geben, wo Teile des Webauftritts, etwa ein Blog oder Newsbereich, über ein CMS laufen, daneben aber auch statische, von Hand erstellte Seiten existieren. Wir wollen nicht über den Sinn oder Unsinn solcher gemischten Umgebungen diskutieren – Gründe kann es verschiedene geben.

In einem anderen Artikel hatte ich schon darüber geschrieben, wie man die Anzeige der Dateiendungen unterdrückt. Das hat bei mir übrigens bei einem Webhoster funktioniert, bei einem anderen nicht.

Heute soll es darum gehen, wie man einen Schrägstrich am Ende des URL erzeugt oder entfernt (um die statischen Seiten in der Adresszeile des Browsers genauso aussehen zu lassen wie die durchs CMS erzeugten Seiten). Und das bewerkstelligt man dadurch, dass man folgenden Code in die Datei .htaccess (im Falle eines Apache-HTTP-Servers) einträgt:

Ohne Trailing-Slash:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

Mit Trailing-Slash:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

Quelle des Codes: Stack Overflow

Dateiendung .php aus dem URL entfernen

Viele Content-Management-Systeme bieten an, die Dateiendung .php aus dem URL, also aus der Webadresse, zu entfernen. Mit einem Mausklick ist das in aller Regel erledigt. Dies kann aus verschiedenen Gründen gewünscht sein. Was aber, wenn man ein Webseite von Hand erstellt hat und ohne CMS arbeitet?

Des Rätsels Lösung ist ein Eintrag in der Datei .htaccess, die auf Apache-HTTP-Servern üblich ist und verschiedenste Anweisungen enthalten kann. Die wenigen Zeilen Code, die man eintragen muss, lauten folgendermaßen:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/]+)/$ $1.php

Quelle:
Diesen Tipp von Dejan Jacimovic habe ich gefunden auf StuntCoders.

concrete5: Editor (Redactor) ohne Menüleiste

Nachdem ich ein Theme (Thema) für concrete5 gebaut hatte, stellte sich heraus, dass der WYSIWYG-Editor Redactor nicht richtig funktionierte. Zum Beispiel fehlte die Menüleiste und der Dateimanager wurde nicht angezeigt, wenn man eine Datei hochladen wollte. Ich musste ziemlich lange nach einer Lösung suchen.

Da ich kein gelernter Programmierer bin, verstehe ich die Details nicht; aber es ist jedenfalls so, dass concrete5 in der Version 7 mit sogenannten Assets arbeitet. Damit sind CSS- und JavaScript-Dateien gemeint, die typischer Weise gleichzeitig erforderlich sind, um bestimmte Funktionalitäten hinzufügen zu können. Damit zum Beispiel der Redactor-Editor funktionieren kann, müssen bestimmte CSS- und JavaScript-Dateien inkludiert werden. Diese Assets müssen im Theme registriert werden. Zu diesem Zweck wird folgender Code in die Datei application/themes/[theme]/page_theme.php eingetragen:

class PageTheme extends Theme {
	public function registerAssets() {
		$this->requireAsset('redactor');
	}
}

Da auch noch JQuery und der Dateimanager benötigt werden, lautet der gesamte Code:

class PageTheme extends Theme {
	public function registerAssets() {
       	$this->requireAsset('javascript', 'jquery');
		$this->requireAsset('redactor');
		$this->requireAsset('core/file-manager');
	}
}

Nachdem ich das so eingetragen hatte, funktionierten sowohl der Redactor als auch der Dateimanager.

Quellen:
concrete5-Forum
Stack Overflow
concrete5-Dokumentation

PHP: Scandir erzeugt komische Zeichen unter Windows

Ich programmierte vor kurzem ein PHP-Skript, das die Dateien aus einem bestimmten Verzeichnis auslesen und als Links auf einer Webseite ausgeben sollte, um die Dateien zum Herunterladen anzubieten. In meiner Testumgebung auf dem lokalen Windows®-PC wurden bei einigen Dateinamen komische Zeichen angezeigt. Und zwar bei allen Dateinamen, die Umlaute, Akzente oder Sonderzeichen enthielten. Auf dem Webserver, der unter einem Linux-Betriebssystem läuft, trat dieses Problem nicht auf.

Nach langer Suche fand ich bei ComputerBase den Hinweis, dass es wohl daran liegt, dass Windows Dateinamen nicht in UTF-8 kodiert, sondern in CP-1252 oder ISO-8859-1. Mein Skript war allerdings in UTF-8 gespeichert (wie es ja üblich ist), was zu dem Zeichensalat führen musste.

Um von vornherein Problemen aus dem Weg zu gehen, verwendet man in Dateinamen fürs Web am besten gar keine Umlaute, Akzente, Leerzeichen und Sonderzeichen. Und wenn Dateien automatisch chronologisch sortiert werden sollen, benutzt man natürlich ein immer gleich bleibendes Dateinamensschema, also zum Beispiel katzenfoto-2016-03.pdf, katzenfoto-2016-04.pdf und so weiter, und nicht ein Mischmasch wie etwa KATZENFOTO März 2016.pdf und Katzenfoto 04.2016.pdf oder ähnlich, noch zumal unter UNIX® und Linux Groß- und Kleinschreibung unterschieden wird, anders als unter Windows. »Schön« sind natürlich auch Namen, die keinerlei Hinweis auf den Inhalt der Datei geben, wie etwa P3290153.JPG. Doch genau solche Dateien mit Namen, die durcheinander sind wie Kraut und Rüben, erhalte ich immer wieder von Kunden. Denn sie wissen nicht, was sie tun.

Alle Feeds in WordPress deaktivieren

Wenn man WordPress nicht zum Bloggen, sondern als Content-Management-System für eine sozusagen klassische Website ohne Blog- oder Newsbereich verwendet (was ich wohl nie tun würde, da es für diesen Zweck meines Erachtens ganz einfach geeignetere Systeme gibt), dann wird man in aller Regel auch keinen Feed anbieten wollen.

Doch wie kann man die Feedfunktion in WordPress komplett ausschalten? Die Antwort gibt uns Vladimir Simovic auf Perun.net in seinem Artikel WordPress: alle Feeds deaktivieren. Vielen Dank dafür!

WordPress-Suchmaschine für Entwickler

Kürzlich habe ich eine auf WordPress spezialisierte Suchmaschine namens WPSeek.com für Plugin-Entwickler und Theme-Autoren entdeckt. Hier kann man in ein Suchfeld WordPress-Funktionen, Filter, Aktionen und Konstanten eingeben, zu denen man nähere Informationen wünscht.

Nun ist es bloß leider so, dass einem ja die genauen Namen meistens nicht geläufig sind. Doch die Suchmaschine findet natürlich auch etwas, wenn man nur ein Wort eingibt, zum Beispiel category. Dann klappt unter dem Eingabefeld eine Liste der gefundenen Begriffe auf – und schließt sich nach kurzer Zeit wieder. Dumm, wenn man so schnell nicht auf einen der verlinkten Begriffe geklickt hat. Und komischer Weise passiert nichts, wenn man dann rechts neben dem Suchfeld das Lupensymbol anklickt; betätigt man allerdings die Eingabetaste, während der Cursor im Textfeld steht, wird unter dem Suchfeld eine Liste mit Vorschlägen ausgespuckt. Dieses Bedienkonzept ist meiner Meinung nach verbesserungswürdig. Doch auf jeden Fall findet man hier eine ganze Menge an Informationen und Quellcodes.

Meine ersten Anlaufstellen werden aber vermutlich immer die offizielle WordPress-Code-Dokumentation namens Codex sowie die Code-Referenz bleiben. Auf diesen beiden Plattformen findet man eigentlich alles, was man sucht und braucht.

Pulse CMS in neuen Händen

Mark und Ulli, die bisher das datenbanklose Content-Management-System Pulse CMS programmiert und vertrieben hatten, haben am 12. Dezember 2015 verkündet, dass sie ihr CMS jetzt an einen neuen Besitzer übergeben haben. Ich hatte vorher schon gelesen, dass sie ihr CMS mitsamt der Domain verkaufen wollten.

Der neue Besitzer ist Michael Frankland, von dem Dropkick CMS stammt. Ich war froh zu hören, dass Mark und Ulli sich für ihn als Käufer entschieden haben, denn sein Dropkick CMS habe ich vor gar nicht langer Zeit entdeckt und bin auch von diesem CMS sehr angetan. Da ich Fragen zu Dropkick hatte, habe ich per E-Mail Kontakt zu ihm aufgenommen und schnell und freundlich Antwort bekommen. Deswegen gehe ich davon aus, dass er auch Pulse gewissenhaft weiter entwickeln und vertreiben wird. Er hat außerdem geäußert, beide Systeme bestehen zu lassen, sie also nicht miteinander verschmelzen zu wollen. Das ist eine gute Entscheidung, denn beide Content-Management-Systeme sind doch recht unterschiedlich.

Da ich neben concrete5 und WordPress neuerdings auch Pulse für Kunden-Websites einsetze, werde ich zukünftig hier im Blog auch immer mal wieder über dieses CMS schreiben.

MarkdownPad: Live-Vorschau klappte nicht

MarkdownPad ist ein Editor für das Windows®-Betriebssystem, mit dem man Markdown-Dateien erstellen und bearbeiten kann (Markdown ist eine Textauszeichnungssprache mit einfacher Syntax). Eine sehr schöne Funktion von MarkdownPad ist es, links den Text zu schreiben und rechts sich eine HTML-Vorschau anzeigen zu lassen – um zu sehen, wie der Text später in einem Webbrowser aussehen wird. Und diese Vorschau klappte auf einmal nicht mehr.

This view has crashed
(Aufs Bild klicken zum Vergrößern)

Unter Windows 7 hatte diese Vorschau tadellos funktioniert, doch nach dem Upgrade auf Windows 10 tat sie das nicht mehr. Dieses Phänomen soll schon unter Windows 8 gelegentlich aufgetreten sein, und die entsprechende Lösung klappte bei mir auch in Windows 10. Man soll das Awesomium-SDK (Software Development Kit) installieren, außerdem Microsofts DirectX End-User Runtimes (June 2010). Das tat ich beides, und anschließend klappte die Vorschau wieder. Allerdings nicht sofort – ich musste im Texteingabebereich des Editors ein bisschen hin und her scrollen und mit der Maus in den Text klicken, und irgendwann sprang die Vorschau im rechten Bereich der Programmoberfläche wieder an. Klingt verrückt, war aber so. Vermutlich hätte auch ein Neustart des Programms geholfen.

Concrete5: Vereinfachtes Bloggen in 5.7

Das Bloggen war in concrete5 früher ziemlich umständlich, und auch sonst war die Bedienung des Systems nicht ganz intuitiv. Aber das CMS ist ja im Jahr 2014 von Grund auf neu programmiert worden. Mit den ersten Versionen des Entwicklungszweiges 5.7 war ich äußerst unzufrieden, sie waren – mit Verlaub gesagt – unbrauchbar. Doch die aktuelle Version 5.7.5.1 (Stand: November 2015) ist richtig klasse. Was mir besonders gut gefällt: Endlich kann man auf einfache Weise mit concrete5 bloggen. Klar, auch in 5.6 war ein im Kern eingebautes Blogmodul vorhanden – allerdings war die Handhabung, wie gesagt, alles andere als benutzerfreundlich. Jetzt geht das einfacher. Loggen wir uns ins Backend einer Standardinstallation ein und schauen uns das an!

Im rechten Bereich der oberen Menüleiste klickt man auf das Seitensymbol und dann auf Blogeintrag.

Concrete5: Vereinfachtes Bloggen in 5.7 (Bild 1)
(Aufs Bild klicken zum Vergrößern)

Daraufhin öffnet sich automatisch der Composer und erlaubt es, auf einfache Weise einen Blogartikel zu verfassen. Oben gibt man die Meta-Daten ein, die für die Suchmaschinen von Bedeutung sind: Seitentitel und Beschreibung. Der Seitentitel ist gleichzeitig die Hauptüberschrift des Artikels. Der freundliche URL wird aus dem vergebenen Titel automatisch generiert, aber er lässt sich auch von Hand ändern.

Concrete5: Vereinfachtes Bloggen in 5.7 (Bild 2)
(Aufs Bild klicken zum Vergrößern)

Rollt man nach unten, erscheint der Texteditor zur Eingabe des Inhalts. Darüber gibt es ein Eingabefeld zur Auswahl eines Beitragsbildes, das in den Blogartikel eingefügt werden soll; das heißt, man gelangt zur Dateiverwaltung, wo man ein bestehendes Bild auswählen kann, oder man lädt dort erst einmal eins hoch.

Über dem Eingabebereich für den Inhalt und das Beitragsbild sieht man noch einen Kasten, der in der deutschen Sprachversion mit Themen betitelt ist – in anderen Blogsystemen wird das oft als Kategorien bezeichnet. So etwas ist nützlich für Blogs, die sich mit verschiedenen Themenbereichen befassen, sodass die Leser die Einträge nach ihren eigenen Interessen filtern können.

Concrete5: Vereinfachtes Bloggen in 5.7 (Bild 3)
(Aufs Bild klicken zum Vergrößern)

Ist man mit dem Erstellen des Artikels fertig, klickt man auf Veröffentlichen, und der Artikel reiht sich an oberster Position auf der Blogartikel-Übersichtsseite in die vorhandenen Beiträge ein.