Archiv der Kategorie: Webentwicklung

Wie aktualisiert man concrete5?

Das Content-Management-System concrete5 kann man auf verschiedene Arten aktualisieren. Doch Achtung: ein Upgrade von Version 5.6.x auf 5.7.x ist nicht möglich, da für 5.7 concrete5 von Grund auf und mit einem anderen Framework als vorher neu entwickelt worden ist. In diesem Fall muss man also leider alle Inhalte von Hand übertragen.

Um innerhalb der Major-Version 5.7 von einer auf die andere Minor-Version zu aktualisieren, gibt es verschiedene Möglichkeiten. Die bequemste ist sicherlich, das Update aus dem Dashboard heraus automatisch ablaufen zu lassen. Andere Möglichkeiten sind mit ein bisschen Handarbeit verbunden. Wenn man zum Beispiel Platz auf dem Webserver sparen will, bietet es sich an, das Verzeichnis /concrete mit dem gleichnamigen Verzeichnis der neuen Version zu überschreiben.

Genaue Handlungsanweisungen kann man der Online-Dokumentation (in englischer Sprache) entnehmen.

AddQuicktag, ein nützliches WordPress-Plugin

Frank Bültge, den man wohl als eines der deutschsprachigen WordPress-Urgesteine bezeichnen darf, hat vor Jahren eine recht lange Liste von nützlichen WordPress-Plugins vorgestellt, die er entwickelt hat, an denen er in irgendeiner Weise mitgewirkt hat oder die er empfiehlt.

Einer meiner Lieblinge ist AddQuicktag. Denn mit den vorgegebenen Quicktags (also den Schaltflächen, mit denen man auf einfache Weise häufig benötigte HTML-Elemente in den Textbereich des Editors einfügen kann) war ich nie so ganz zufrieden. Es fängt ja schon damit an, dass die Buttons b und i die Elemente <strong> und <em> erzeugen. In HTML5 haben aber bold und strong bzw. italic und emphasis völlig unterschiedliche Bedeutungen (was an dieser Stelle nicht näher ausgeführt werden soll). Darüber hinaus fehlen zum Beispiel öfters benötigte Sonderzeichen. Und natürlich wäre es wünschenswert, immer wiederkehrende Code- oder Text-Schnippsel als Schaltflächen in die Menüleiste des Editors aufnehmen zu können.

Mit AddQuicktag ist das alles auf eine sehr leichte Weise zu bewerkstelligen. Dieses Plugin erleichtert mir wirklich die Arbeit und beschleunigt das Erstellen von Blogartikeln.

concrete5: Das z-index-Problem

In concrete5 hatte ich folgendes Problem: Ich hatte zwei Ebenen so übereinander gelegt, dass ein leicht transparenter Bereich einen anderen Bereich überlagerte; in der CSS-Datei hatte ich dem oben liegenden Bereich einen z-index-Wert gegeben; beide Bereiche wurden mit Blöcken (unten Slideshow-Block, oben HTML-Block) befüllt; doch im Dashboard von concrete5 ließ sich nun der Block in der oben liegenden Ebene nicht anklicken, also auch nicht bearbeiten.

Dies ist natürlich ein äußerst rätselhaftes Verhalten. Doch nach einiger Sucherei fand ich die Lösung (wie so oft) im concrete5-Forum. Und zwar darf man keinen z-index größer oder gleich 5 vergeben. Mit einer kleineren Zahl hingegen klappt es.

Das liegt daran (um es concrete5-Insidern zu erklären), dass dem CCM-Highlighter von Seiten der Programmierer der recht kleine Wert von 5 für den z-index gegeben worden ist. Man kann diesen Wert aber durch eine Angabe in der CSS-Datei des eingesetzten Themas (/themes/­[mytheme]/­main.css) überschreiben, wie ebenfalls im Forums-Thread zu lesen ist:
div#ccm-highlighter {z-index:100!important;}.

Das concrete5-Forum ist also wirklich eine Fundgrube für gute Tipps (wenn man der englischen Sprache mächtig ist). Danke schön an die vielen freundlichen Mitglieder für ihre bereitwilligen Hilfestellungen!

concrete5: Format der Seitentitel ändern

In der Standardeinstellung von concrete5 werden die Seitentitel in den Meta-Angaben so generiert, dass der eingegebene Name des Webauftritts und der eigentliche Titel durch einen doppelten Doppelpunkt, also ::, getrennt werden. Wenn man das als unschön empfindet, hat man die Möglichkeit, diese Punkte durch ein anderes Zeichen zu ersetzen. Wie das geht, wird in der concrete5-Dokumentation erklärt.

concrete5: Unable to get permission key for access_user_search_export

Nach dem Update einer concrete5-Installation bei einem Kunden erschien die Fehlermeldung: Unable to get permission key for access_user_search_export. Ob sich aufgrund dieses Fehlers eine Benutzerin nicht am System anmelden konnte oder ob das andere Gründe hatte, war leider im Nachhinein nicht nachvollziehbar. Jedenfalls fand ich die Lösung zur Behebung dieses Fehlers im concrete5-Forum. Es ist ein kleiner Eingriff in die Datenbank nötig.

Den Editor in WordPress erweitern

Die Werkzeugleiste des Editors in WordPress ist ja nicht unbedingt nach jedermanns Geschmack. Einige Schaltflächen mag man als überflüssig empfinden; andere oft benötigte HTML-Elemente werden gar nicht als Button angeboten. Glücklicherweise gibt es Hilfe in Form von Plugins, mit denen man diese Toolbar anpassen oder auch völlig ummodeln kann. Das leistungsfähigste Plugin, das ich finden konnte, ist AddQuicktag von Frank Bültge. Denn hiermit lassen sich nicht nur neue Elemente hinzufügen und sortieren, sondern sogar die standardmäßig vorgegebenen entfernen. Und das alles über eine sehr einfach zu bedienende Oberfläche.


Den visuellen Editor in WordPress loswerden

Der Editor im WordPress-Backend lässt sich ja zwischen visueller und HTML-Ansicht umstellen. Benötigt man die visuelle WYSIWYG-Ansicht nicht, lässt sie sich in den Benutzereinstellungen deaktivieren. So handhabe ich es in meinen eigenen Blogs, in denen nur ich selber schreibe.

Was aber, wenn man ein Blog für mehrere Autoren anbietet oder eins für einen Kunden erstellt? Nicht alle der im WYSIWYG-Editor angebotenen zusätzlichen Möglichkeiten sind sinnvoll einsetzbar. Zum Beispiel könnte ein Autor unpassende Textfarben einstellen. Aber durch eine Zeile Code in der Datei functions.php im Theme-Ordner kann man diesen visuellen Editor deaktivieren.

Hier steht, wie es geht: www.guru-20.info.

WordPress: Verschiedene Templates und Sidebars für Seiten

Für mich ist WordPress immer noch am ehesten ein Blogsystem. Wenn also das Hauptaugenmerk eines Webauftrittes nicht auf einem Blog- oder Newsbereich liegt, sondern hohe Flexibilität in den Seitenlayouts gefragt ist, würde ich WordPress eher nicht einsetzen.

Für eine bestimmte Kundin standen die News stark im Vordergrund, weswegen ich WordPress wählte. Allerdings gibt es auch eine ganze Anzahl »statischer« Seiten (pages), die jedoch nicht alle gleich aufgebaut sind. Manche haben einen vollformatigen Inhaltsbereich, andere eine Seitenleiste (sidebar). Innerhalb des Gestaltungsthemas (theme) muss es also verschiedene Seitenvorlagen (templates) geben. Darüber hinaus müssen die Seitenleisten je nach Seite unterschiedliche Inhalte tragen.

Das in WordPress umzusetzen, war eine neue Anforderung für mich. In meinem anderen Lieblings-System, concrete5, ist so etwas super-leicht umzusetzen, aber auch in WordPress geht es ganz gut, wenn man erst einmal weiß, wie. Die Lösung fand ich auf drei Websites, und zwar so gut erklärt, dass ich mir die Mühe spare, alles mit eigenen Worten wiederzugeben. Hier sind die Quellen:

Templates für Seiten (Pages) in WordPress
[WordPress] Mehrere Sidebars nutzen
{WordPress} Unterschiedliche Inhalte in der Sidebar anziegen

Warum ich kein Typo3 verwende

Warum ich kein Typo3 verwende, ist eigentlich in wenigen Worten erklärt, auch wenn mir Typo3-Freaks wahrscheinlich gern den Kopf abreißen würden: Ich habe weder Zeit noch Lust, mich ein halbes Jahr lang einzuarbeiten, um das System zu verstehen und ein Theme selber erstellen zu können. Und ich möchte ein so unintuitiv bedienbares System auch meinen Kunden nicht zumuten.

Natürlich muss man sich auch mit WordPress und concrete5, meinen Lieblings-Systemen, ein wenig näher befassen, um gut damit arbeiten zu können. Aber wenn man fit in HTML und CSS ist und PHP halbwegs versteht, kann man schon nach einigen Tagen eigene Themes bauen. Es gibt bei beiden Content-Management-Systemen keine Template-Sprache, alles lässt sich mit purem PHP steuern.

Aber, na gut … Warum einfach, wenn es auch umständlich geht! Und die ganzen Typo3-Agenturen können sich auf die Schulter klopfen, so ein kompliziertes Zeug bestens zu verstehen. Und können dem Kunden eine Menge Geld abknöpfen, weil Typo3 ja das absolute Enterprise-CMS ist. Und natürlich ist auch ein Kunde, der einen eher kleinen Webauftritt mit fünf Seiten plus Kontaktformular braucht, mit Typo3 bestens beraten. Jo.

Tomato Cart 2.0 Alpha 4: Installation hängt bei Beispieldaten

Inzwischen ist das Shopsystem Tomato Cart, ein osCommerce-Fork, für mich gestorben. Es gab einfach zu viele Probleme. Was ich als ein viel besseres Open-Source-Shop-System empfinde, gerade für den deutschen Markt, ist modified eCommerce. Jedenfalls, ich habe zuletzt noch Tomato Cart 2.0 in der Alpha-Version 4 ausprobiert. Die Zweier-Version wird, wenn sie fertig entwickelt ist (eine komplette Neuentwicklung), vermutlich besser als die Einser-Produktlinie funktionieren, aber Alpha 4 nervte mich schon, als die Installation an dem Punkt hängen blieb, wo die Beispieldaten installiert werden sollen. Immerhin fand ich eine Lösung, die ich hier gern noch präsentieren möchte.

Zu bearbeiten ist folgende Datei: /install/applications/controllers/setting.php. Man löscht folgenden Code (ab Programmzeile 97):

    
//import sample data
if ($sample == 'on') {
    //import sample sql data
    $this->import_sample_sql();

    //copy sample data
    toc_copy('samples/images', '../images');

    //resize images
    $this->resize_product_images();
}

Und noch diesen Code (ab Programmzeile 141):

/**
 * Import sample sql data
 *
 * @access private
 * @return boolean
 */
private function import_sample_sql() {
    //get database configuration from session
    $config = $this->session->userdata('db_config');

    //connect to database
    $this->load->database($config);

    //database is connected
    if ($this->db) {
        $sql_data = $this->load->file(realpath(dirname(__FILE__) . '/../../../') . '/install/tomatocart_sample_data.sql', TRUE);
        $sql_data = str_replace('`toc_', '`' . $config['dbprefix'], $sql_data);

        //split sql data with ;
        $statements = preg_split("/;[\r\n]/", $sql_data) ;

        //execute the sql statement
        foreach ($statements as $statement) {
            $this->db->query($statement);
        }

        return TRUE;
    }

    return FALSE;
}

Dann hat man zwar keine Beispieldaten (die ich sowieso überflüssig finde, weil man sie mühsam vor Inbetriebnahme des Shops wieder löschen muss), aber immerhin läuft die Installation auf diese Weise flüssig durch.