Archiv der Kategorie: Webentwicklung

concrete5: Upgrade von 5.4.x auf 5.5.x

Das CMS concrete5 wurde ja vor einigen Monaten (Dezember 2011) komplett runderneuert. Die 5.5er-Versionen unterscheiden sich nicht nur in Aussehen und Bedienung des Dashboards von den 5.4ern und einem neuen Standard-Theme mit Gewichtung auf der Blogfunktion. Nein, es wurden auch Änderungen an einigen Datenbank-Tabellen vorgenommen.

Und das kann bei manchen Webhostern bzw. in bestimmten Server­kon­fi­gu­ra­tio­nen zu Problemen beim Upgrade führen. Im schlimmsten Fall ist die Website nach dem Upgrade nicht mehr erreichbar und spuckt Fehler­meld­un­gen aus. Man kann zwar die Datenbank von Hand nachkonfigurieren, aber das ist sehr aufwändig. Und nach meinen Erfahrungen treten immer wieder neue Fehler auf. Bei kleineren Websites geht da eine komplette Neuinstallation schneller von der Hand.

Auf jeden Fall sollten kurz vor dem Upgrade Datensicherungen durchgeführt werden! Speichern Sie den Datenbank-Dump (Dashboard > Verwaltung > System & Wartung > Sicherung & Wiederherstellung) sowohl auf dem Werbserver als auch auf Ihrem PC ab. Und vorsichtshalber kopieren Sie auch alle Dateien per FTP auf Ihren lokalen PC.

Wie gesagt: Im Regelfall wird wohl alles glatt gehen. Aber wenn nicht, ist es gut, wenn man Backups zur Hand hat und erst mal schnell die Website wieder in den vorherigen Zustand zurück versetzen kann.

concrete5: Date Navigation eindeutschen

Die Datumsnavigation (Date Navigation) in concrete5 kann zum Beispiel die Artikelüberschriften eines Blogbereiches nach Erscheinungsdatum sortiert ausgeben. Das Problem ist nur, dass PHP die als Wort ausgeschriebenen Zeit- und Datumsangaben nur in englischer Sprache kennt. Man kann das normalerweise mit Hilfe eines Arrays, der den englischen Monatsnamen die deutschen zuordnet, zwar übersetzt ausgeben lassen, aber im Falle dieses DateNav-Blockes habe ich das nicht hinbekommen.

Und in der deutschen Übersetzungsdatei (/languages/de_DE/LC_MESSAGES/messages.po), die man bekommt, wenn man die deutsche Entwicklerversion von c5 über Github herunter lädt, sind weder Monatsnamen noch Wochentage eingepflegt.

Man kann aber selber eine Sprachdatei anfertigen. Man erstellt sich eine PHP-Datei, die einfach nur den folgenden Inhalt hat:

<?php
print t('Monday');
print t('Tuesday');
print t('Wednesday');
print t('Thursday');
print t('Friday');
print t('Saturday');
print t('Sunday');

print t('January');
print t('February');
print t('March');
print t('April');
print t('May');
print t('June');
print t('July');
print t('August');
print t('September');
print t('October');
print t('November');
print t('December');
?>

Diese Datei speichert man zum Beispiel als datumsangaben_de.php auf dem heimischen Rechner. Dann legt man mit Poedit (kostenlos für Windows®, Mac OS X® und Linux erhältlich) einen neuen Katalog an und liest die genannte Datei ein (Menü > Katalog > Aus Quelltexten aktualisieren). Die englischen Wörter kann man nun übersetzen. Anschließend speichert man die Übersetzung zum Beispiel als datumsangaben_de.po ab. Dabei wird auch automatisch eine bis auf die Dateiendung gleichnamige, aber kompilierte Datei erzeugt, also in unserem Fall datumsangaben_de.mo. Diese lädt man in das Sprachverzeichnis von concrete5 hoch, genauer gesagt in /languages/de_DE/LC_MESSAGES/datumsangaben_de.mo.

Beim nächsten Seitenaufruf, zumindest nach einem Leeren des Cache in concrete5 und im Webbrowser, werden nun die deutschen Da­tums­be­zeich­nun­gen angezeigt.

Und hier sind die fertigen Dateien (Zip, 2,2 KiB).


Danke für den Tipp an Tomislav Huic im concrete5-Forum.

concrete5: Duplicate Content trotz .htaccess

Ich hatte kürzlich das Problem, dass eine mit dem CMS concrete5 erstellte Website sowohl ohne das www. davor als auch mit angezeigt wurde. Suchmaschinen können das als unerwünschten doppelten Inhalt werten.

Ich hatte im Dashboard die »Pretty URLs« eingeschaltet und zusätzlich in der Datei .htaccess einen permanenten Redirect eingerichtet, aber seltsamer Weise ohne Wirkung (»domain« muss im Beispiel unten natürlich durch den richtigen Domainnamen ersetzt werden):

# --- Doppelten Content vermeiden ---
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.de\.de$
RewriteRule ^(.*)$ http://www.domain.de/$1 [R=permanent]

Normalerweise führt das dazu, dass immer auf die Subdomain www. umgeleitet wird. Dass sie eigentlich unnützer Ballast ist, soll an dieser Stelle nicht diskutiert werden. Es hat sich so eingebürgert, und mancher Benutzer ist vermutlich befremdet, wenn es fehlt. Doch wer will, kann ja genau umgekehrt vorgehen, also von mit www. auf ohne umleiten.

Jedenfalls, wie gesagt, nützte das nichts, was ich sehr seltsam finde. (Ich hatte allerdings schon mehrmals das Problem, dass unter concrete5 bestimmte, normale Angaben in der .htaccess in bestimmten Serverumgebungen nicht funktionieren oder zu Fehlern führen.) Nach langer Suche fand ich endlich die Lösung. Eine Zeile zusätzlichen Quelltextes in der Datei /config/site.php brachte den gewünschten Erfolg:

define('BASE_URL', 'http://www.domain.de');

Der Quelltext der /config/site.php sollte übrigens kein schließendes ?> enthalten und keine Leerzeilen am Ende, weil das auch wieder in bestimmten Umgebungen zu Fehlern führen kann.

HeidiSQL 7.0

Ich habe es erst heute bemerkt: Bereits seit dem 12. Februar gibt es Ansgar Beckers HeidiSQL in der Version 7.0. Die Neuerungen und Bugfixes kann man hier ablesen: HeidiSQL 7.0 released. Es handelt sich um einen kostenlosen Editor für MySQL®-Datenbanken. Natürlich wird auch der Open-Source-Ableger MariaDB unterstützt.

Kommerzielle Tools ähnlicher Güteklasse sind richtig teuer. Wer also HeidiSQL regelmäßig und vor allem beruflich nutzt, sollte die Weiterentwicklung durch eine Spende unterstützen.

Unix-Zeitstempel konvertieren

Es kann vorkommen, dass man einen Unix-Zeitstempel benötigt, zum Beispiel um Datenbankeinträge auf ein bestimmtes Datum zu setzen. Oder man muss umgekehrt aus einem Unix-Zeitstempel ein lesbares Datum machen.

Die Unixzeit ist eine ziemlich lange Ziffernfolge, die nicht wie eine gewohnte Datumsangabe ein Datum erkennen lässt, denn seit Unix Version 6 zählt die Unixzeit die vergangenen Sekunden seit dem 1. Januar 1970 00:00 Uhr UTC, wobei Schaltsekunden nicht mitgezählt werden (Wikipedia). Computer kommen damit, im Gegensatz zu Menschen, natürlich wunderbar klar.

Was also tun, wenn man ein Datum in die Unixzeit umwandeln muss oder umgekehrt? Nun, ich habe einen Online-Konverter gefunden, mit dem das schnell und einfach geht: www.gaijin.at/olsutc.php. Sicherlich gibt es noch mehr solcher Konvertierer, aber dieser gefiel mir auf Anhieb. Außerdem wird er mit erweiterten Funktionen zum Download angeboten – allerdings nur für das Windows®-Betriebssystem.

concrete5: Absender im Kontaktformular (1)

In concrete5 ist ein Modul integriert, mit dem man auf bequeme Art und Weise Kontaktformulare erstellen kann. Nur leider wird automatisch immer die E-Mail-Adresse des Superbenutzers (= obersten Administrators), die ja im System eingepflegt ist, als Absenderadresse der Anfragen angegeben. Das führt natürlich zu Verwirrung bei den Kunden. Sie nehmen in aller Regel an, der Administrator würde die an sie gerichteten Nachrichten empfangen und an sie weiterleiten, möglicherweise sogar vorher lesen.

Dies ist nicht der Fall (oder sollte es jedenfalls nicht sein), denn beim Anlegen des Kontaktformulars gibt man natürlich die E-Mail-Adresse des Kunden als Empfängeradresse an, der die Nachrichten ja auch tatächlich direkt übers System erhält. Die Adresse im »Von«-Feld bedeutet im Grunde nichts, trägt aber in dieser Form nicht gerade zum Vertrauen des Kunden in den Webdesigner bei.

Da muss man ein wenig Hand anlegen. […]

Nachtrag:
Meine ursprüngliche Lösung war nicht die bestmögliche, daher habe ich den entsprechenden Text gelöscht. Die gute Lösung steht in dem neueren Artikel
concrete5: Absender im Kontaktformular (2).

TinyMCE Fiddle

Der WYSIWYG-Editor TinyMCE, der in vielen Content-Management-Systemen integriert ist, ist ja bekanntlich anpassbar. Der Webentwickler kann einstellen, welche Buttons er dem Anwender zur Verfügung stellen möchte oder nicht. Allerdings fand ich es immer ein wenig lästig, die Dokumentation durchsehen zu müssen, um Funktionen hinzuzufügen oder zu entfernen.

Doch nun gibt es TinyMCE Fiddle. Dies ist eine grafische Benutzeroberfläche, auf der man völlig anschaulich den Editor so einrichten kann, wie man ihn denn gern hätte. In der Standardeinstellung, die man beim Seitenaufruf vorfindet, werden wohl alle Buttons angeboten, die es gibt, da heißt es also: abspecken! Und das geht hier nun sehr einfach – mittels zweigeteiltem Fenster: oben Quellcode, unten der Editor (plus Seitenleiste links).

Oben löscht man also unbenötigten Code heraus, danach drückt man eine mit Run beschriftete Schaltfläche, ähnlich wie in einer Programmierumgebung, und unten wird daraufhin der angepasste Editor angezeigt.

Wenn man will, kann man sich kostenlos registrieren lassen und hat dann die Möglichkeit, seine Einstellungen zu speichern und beim nächsten Besuch wieder abzurufen.

Fazit: nützlich für Webentwickler, die öfters mit TinyMCE zu tun haben.

WordPress 3.3

WordPress 3.3 ist erschienen, und es bringt einige Verbesserungen. Das Dashboard kommt wesentlich aufgeräumter daher; das einzige Medien-Symbol startet jetzt den Uploader für alle Dateitypen und das neue Drag-and-Drop-Interface macht Hochladen zum Kinderspiel; und wenn ich das richtig sehe, können Plugin-Entwickler Symbole in der dunkelgrauen Menüleiste am oberen Rand platzieren – ob das vorher nicht auch schon möglich war, weiß ich allerdings nicht.

Das Plugin Cachify (smarter Cache für WordPress) von Sergej Müller zeigt jedenfalls jetzt ein Icon für Cache leeren an. Das ist wirklich praktisch, denn vorher musste man immer erst umständlich zur Plugins-Kategorie gehen.

Hier sind informative Artikel über WordPress 3.3, die ich im Netz gefunden habe:
Pro-Linux.de
Golem.de
WordPress Deutschland

Schnelle Bereinigung für rel=”category tag” in WordPress

Neulich traf mich ja fast der Schlag, als sich mein privates WordPress-Blog (Version 3.2.1) als nicht mehr valide gegen den W3C-Markup-Validator herausstellte. Schuld war eine Mikroformat-Annotation: rel=”category tag”. Über die functions.php im Theme-Ordner kann man das bereinigen.

Bei Whitney Krape fand ich die Anleitung und den Code, den man einfügen muss:

add_filter( 'the_category', 'add_nofollow_cat' );
function add_nofollow_cat( $text ) {
$text = str_replace('rel="category tag"', "", $text); return $text;
}

Die Tage von Flash sind gezählt

Wie auf Golem zu lesen ist, hat Adobe beschlossen, die Entwicklung von Flash weitgehend einzustellen. Es soll ein weicher, fließender Übergang zu HTML5 stattfinden. Künftige Browser-Generationen werden somit irgendwann auf das bisher standardmäßig installierte Flash-Plugin verzichten. Von heute auf morgen werden Flash- und ActionScript-Entwickler sicherlich nicht arbeitslos. Sich langsam mit HTML5 und JavaScript anzufreunden, wäre dennoch bestimmt nicht verkehrt.