concrete5: Fehlermeldung beim Upload von Blöcken

Neulich setzte ich concrete5 in Version 5.6.0.1 in meiner Testumgebung komplett neu auf, weil das Upgrade von Version 5.5.2.1 fehlgeschlagen war. Eine Neuinstallation war in diesem Fall weniger aufwändig, als den Fehler zu suchen und zu korrigieren.

Als ich aber modifizierte Blöcke (blocks) wieder in den dafür vorgesehenen Ordner [root]/blocks/ hochgeladen hatte, wurden Fehlermeldungen angezeigt, die auf angebliche Fehler im jeweiligen Controller (controller.php) der Blöcke hinwiesen. Ich konnte in den Dateien aber nichts Fehlerhaftes entdecken, außerdem hatte ja auch vorher alles funktioniert. Kurzum, ich konnte mir keinen Reim darauf machen.

Im concrete5-Forum fand ich die Lösung: Man muss zunächst die Blöcke wieder aus dem Verzeichnis löschen, dann (über das Dashboard) das Caching (die Puffer-Speicherung) komplett ausschalten und den Cache leeren. Danach lädt man die Blöcke wieder hoch, und nun funktioniert alles.

Danke an yeetien fürs Veröffentlichen seiner oder ihrer Lösung!
http://www.concrete5.org/index.php?cID=377099

concrete5: Dashboard unsichtbar nach Upgrade auf 5.5.x

Ein besonderer Fall trat neulich beim Upgrade von 5.4.x auf 5.5.x auf. Das Upgrade wurde zwar einwandfrei durchgeführt, es gab also keine Fehler wegen der geänderten Datenbank – aber als ich mich nach Abschluss des Vorganges erneut einloggen wollte, war kein Dashboard zu sehen. Der Platz für die obere Admin-Leiste war aber offensichtlich reserviert, oder anders gesagt: die Seite erschien ein Stück nach unten verschoben.

Man kann dennoch ans Dashboard dran kommen, nämlich indem man in die Adresszeile des Browsers http://www.meine-domain.de/dashboard oder http://www.meine-domain.de/index.php/dashboard eingibt. Dort kann man dann einen eventuell eingeschalteten Wartungsmodus wieder auf Normalmodus stellen oder nach sonstigen Auffälligkeiten suchen.

Wenn es das alles nicht ist, gibt es noch eine weitere Möglichkeit, die man ausprobieren kann. In meinem Fall war das der ausschlaggebende Punkt. Und zwar prüft man nach, ob in der Footer-Datei des eingesetzten Themas, also in der Datei /themes/mein-theme/elements/footer.php, folgende Angabe im Quelltextes vorhanden ist:
<?php Loader::element('footer_required'); ?>.
Wenn nicht, fügt man die Zeile ein, und zwar weit unten, direkt vor dem schließenden </body>-Tag.

Quelle: http://www.concrete5.org/[…]/cant-log-in-after-update-to-5.5/.
Danke an Andy Adiwidjaja für diesen wertvollen Hinweis!

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.

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).

Concrete5: Dateimanager zeigt manchmal keinen Upload-Button

Ich hatte heute das Problem, dass im Dateimanager des Concrete5-Backends das Eingabefeld und die Schaltflächen zum Hochladen von Dateien verschwunden waren. Möglicherweise ist das bei einem Update von 5.4.2 auf 5.4.2.1 passiert.

Die Lösung fand ich bei concrete5.org: Es waren keine Dateitypen zum Hochladen angegeben; doch wenn man sie unter Dateimanager > Zugriff neu eingibt, werden auch die Schaltflächen wieder angezeigt.

(Zum Vergrößern auf die Bilder klicken!)

Concrete5-Dateimanager

Concrete5-Dateimanager

Concrete5-Dateimanager

Concrete5-Dateimanager

Concrete5-Add-on »Designer Content«

»Designer Content ist ein unschätzbares Werkzeug, das Webdesignern ermöglicht, auf einfache Weise spezialangefertigte Block-Typen zu erstellen.«

Stimmt. Das im »Marketplace« von Concrete5 kostenlos erhältliche Add-on »Designer Content« ist für den Webdesigner gedacht. Dieser kann seinem Kunden damit einen Block basteln und zur Verfügung stellen, der es diesem leicht macht, bestimmte Inhalte in seine Webseiten einzugeben.

Denn mit dem WYSIWYG-Editor (in Concrete5 ist es TinyMCE), sofern man ihn nicht total abgespeckt hat, kann ein Laie viel Unfug anstellen. In falscher Hierarchie gesetzte Überschriften können es zum Beispiel den Suchmaschinen schwer machen, die Gliederung korrekt zu erkennen. Fehlende Überschriften und statt dessen Normaltext mit vergrößerter Schriftgröße sind genauso kontraproduktiv. Bilder werden vielleicht ohne Abstand in den Text eingefügt.

Von schrecklichen Schriftfarben, abscheulichen Schriftmixturen, albernen Smilies und aus einem Textverarbeitungsprogramm kopiertem Text, dessen Schriftformatierung das ganze Schriftbild ruiniert, mal ganz abgesehen.

Da bietet der Webdesigner dem Kunden eben lieber – zumindest für bestimmte Inhaltsbereiche – speziell angefertigte Blöcke an, die genau vorgeben, wo zum Beispiel welche Überschrift und in welcher Hierarchie zu stehen hat. Man kann auch mehrspaltige Inhaltsbereiche damit vorfertigen, Linklisten, Bild mit umfließendem Text … und sicherlich noch vieles mehr.

Bloß fand ich die Stelle nicht mehr, wo man überhaupt erst einmal so einen Block erstellen kann. Ein Blick in den beschreibenden Text zum Add-on (im Marketplace) brachte dann aber die Aufklärung: Nach der Installation dieses Paketes geht man zu Verwaltung → Seiten und Themes, dann klickt man auf den Reiter Designer Content (in der grauen Leiste oben, rechts von Einzelne Seiten).

Designer Content, developed by jordanlev

Concrete5: »Previous & Next Nav« und URL-Rewriting

In Concrete5 gibt es den nützlichen Block »Previous & Next Nav«. Damit kann man zwischen benachbarten Seiten hin und her navigieren, ohne zum Beispiel immer wieder über die Elternseite (also die übergeordnete Seite) gehen zu müssen.

Das Problem ist nur: Trotz per .htacess-Datei eingeschalteten »hübschen« URLs wird immer /index.php/ in der Adresse eingeblendet, was man aus Gründen der Lesbarkeit und Suchmaschinenfreundlichkeit ja eigentlich vermeiden will.

Doch es gibt eine Lösung: In die Datei config/site.php ist eine Codezeile einzutragen. Ich habe sie ganz an den Anfang, also direkt unter das einleitende PHP-Tag gesetzt. Sie lautet:
define('URL_REWRITING_ALL', true);

(Quelle: www.concrete5.org/community/forums/. Danke an jordanlev für diese Lösung!)

Concrete5: Datenbanknamen mit Binde- oder Unterstrich

Das CMS Concrete5® in der Version 5.4.1.1 (und wahrscheinlich auch älteren Versionen) hat Probleme mit Datenbanknamen, die einen Binde- oder Unterstrich beinhalten.

Wenn Datenbankabfragen ausgeführt werden wie etwa die SQL-Abfrage SHOW TABLES FROM […] – zum Beispiel wenn man über das Dashboard eine Datenbanksicherung vornehmen will – dann wird eine Fehlermeldung ausgespuckt, falls eben die Datenbank einen Binde- oder Unterstrich im Namen führt.

Ich habe im Concrete5-Forum diesen Bug berichtet und erhielt die erfreuliche Antwort, dass dieser Fehler in der aktuellen Entwickler-Version von Concrete5 behoben worden ist. Im öffentlichen Download-Bereich werden allerdings nur die stabilen, also fertigen Versionen angeboten. Bis die nächste stabile Version erscheint, kann man sich folgendermaßen behelfen:

Entweder man ändert Zeile 13 in der Datei /concrete5/concrete/libraries/backup.php von

$arr_tables = $db->getCol("SHOW TABLES FROM " . DB_DATABASE);

in

$arr_tables = $db->getCol("SHOW TABLES FROM `" . DB_DATABASE . "`");

oder man lädt sich die Entwicklerversion herunter von Github – doch Vorsicht, denn es handelt sich ja um eine Version, die noch nicht für den Einsatz in einer Produktivumgebung geeignet ist und noch Fehler enthalten könnte. Ich empfehle also Folgendes: Das heruntergeladene Zip- oder Tar-Archiv entpacken und nur die oben genannte Datei auf den Webserver hochladen, nicht aber das ganze Paket.


Torsten Kelsch