Forum in „Aktuelle Diskussionen“ anzeigen

Manchmal sind es die Kleinigkeiten, die man im Standard-Theme von bbPress nachbessern möchte, wenn man ein eigenes Theme erstellt. Zum Beispiel haben einige Foren-Sites eine etwas größere Struktur, und die bloße Darstellung der „Aktuellen Diskussionen“ auf der Startseite soll ergänzt werden um die Anzeige des Forums, in dem diese Diskussion stattfindet.

Das Problem ist lösbar, obwohl dafür noch keine direkte Funktion existiert. Die folgende Zeile gibt zum jeweiligen Thema den Namen des Forums aus:

<?php forum_name ($topic->forum_id); ?>

Seltsamer Fehler: Login geht nicht

Ich bin heute im englischen Support-Forum auf ein sehr ungewöhnliches Problem gestoßen, das in dieser Form nicht nur bei bbPress auftreten kann, sondern auch bei anderen in PHP programmierten Webanwendungen, die ihre Konfiguration in einer PHP-Datei vorhalten. Insbesondere kann es auch bei WordPress auftreten. Es ist eines dieser Probleme, die von einem normalen Menschen nicht leicht verstanden werden, und das Verhalten der Anwendung ist verwirrend, so dass leicht ein völlig anderer Fehler vermutet wird.

Ich werde hier allerdings beschreiben, wie es sich im konkreten Fall bei einer frischen Installation von bbPress geäußert hat.

Symptom

Ein bbPress-Forum wurde neu aufgesetzt. Die Installation verlief völlig reibungslos. Da das Forum mit einem laufenden WordPress integriert werden sollte, wurden nachträglich noch die Geheimschlüssel für die Cookies auf sichere Werte gesetzt, die in bbPress und WordPress übereinstimmend eingetragen wurden.

Dabei wurde die Datei bb-config.php mit einem Editor bearbeitet, um die Werte für BB_AUTH_KEY und die anderen Werte nachträglich in die Konfiguration einzutragen, die so bearbeitete Datei wurde zum Server hochgeladen.

Das Forum schien zu funktionieren, aber es war kein Login mehr möglich.

Beim Versuch des Einloggens erschienen eine Reihe von Fehlermeldungen der „Bauweise“ Warning: Cannot modify header information - headers already sent by (output started at /xxx/xxx/xxx/forum/bb-config.php:1) in /xxx/xxx/xxx/forum/bb-includes/functions.bb-pluggable.php on line 232 (den originalen Pfad habe ich hier natürlich geändert).

Ein Login war nicht mehr möglich. Auch ein frisch registrierter Benutzer – es war immer noch möglich, eine Registrierung durchzuführen, und auch die Mail mit dem Passwort wurde versendet – konnte sich nicht einloggen.

Das Ergebnis war ein unbrauchbares Forum… immerhin, es macht keinen administrativen Aufwand mehr. ;-)

Rätselraten

Wenn man vor einem derart unverständlichen Fehler steht, vermutet man natürlich die Fehlerquelle Nummer Eins, die Integration von bbPress in WordPress. Mit dieser naheliegenden Vermutung ist das Problem auch im Support-Forum aufgetaucht, und so bin schließlich auc ich darauf gestoßen und habe mich damit ein wenig auseinandergesetzt.

Dabei ist mir nach sehr kurzem Nachdenken aufgefallen, dass es sich nicht um eines dieser Integrationsprobleme handeln kann.

Die Fehlermeldung entsteht, weil bbPress nach der Anmeldung ein Cookie zu setzen versucht, um den angemeldeten Benutzer zu identifizieren. Diese geschieht im HTTP-Header, also noch bevor ein wirklicher Inhalt an den Browser gesendet wird – und nach der Übertragung des ersten Zeichens des Inhaltes ist es nicht mehr möglich.

Mit diesem Hintergrundwissen ist klar, wie die Fehlermeldung zu verstehen ist. PHP konnte keinen HTTP-Header mehr setzen, um das Cookie mit der Identifikation des angemeldeten Benutzers zu setzen, weil es vorher zu einer Textausgabe gekommen war, und dies geschah laut Fehlermeldung in der ersten Zeile der Datei bb-config.php.

Deshalb ging ich davon aus, dass die Datei bb-config.php in der ersten Zeile einige Zeichen außerhalb des durch <?php ... ?> gekennzeichneten Bereiches mit PHP-Code enthalten muss – und hielt das Problem schon für gelöst. Um die Zeichen zu sehen, holte ich über den Browser direkt die bb-config.php ab, die nur eine weiße Seite liefern dürfte. Und in der Tat sah ich den etwas rätselhaften Text „“, der dort nicht hingehört und einfach nur gelöscht werden muss.

Nun, die Technik ist oft ein bisschen widerspenstig.

Denn die bb-config.php enthielt dort kein Zeichen. Ihr gesamter Inhalt war im Bereich <?php ... ?> eingeschlossen. Es gab einfach nichts zu löschen, wie mir der zukünfitige Forenbetreiber versicherte.

Und das erschien doch sehr seltsam und spornte meinen Ehrgeiz ein bisschen an, dieses Problem zu identifizieren. Es wurde Zeit für eine etwas genauere Untersuchung.

Genauere Untersuchung

Als erstes wollte ich diese seltsame Ausgabe unsichtbarer Zeichen nicht mehr im Browser sehen. Deshalb holte ich die bb-config.php auf meinem mit UTF-8-Zeichencodierung arbeitenden Linux-System mit wget ab, um mir diese rätselhafte Ausgabe einmal näher anschauen zu können.

Die nächste Tat war ein cat bb-config.php, um diese Datei einmal auszugeben – und ich sah nichts. Die vom Webserver empfangene Datei schien leer zu sein, aber der Browser stellte dennoch drei Zeichen dar, und die Datei hatte auch eine Dateigröße von drei Bytes. Mir war schnell klar, dass ich es hier nicht mit gewöhnlichen Zeichen zu tun hatte.

Deshalb schaute ich mir die Datei einmal mit od -x bb-config.php an, um ihren Inhalt in hexadezimaler Form lesen zu können. Das führte zur Ausgabe bbef 00bf.

Und dann erst verstand ich das Problem wirklich.

Um hier zu sehen, welche Reihenfolge von Bytes in der Datei vorliegt, muss noch berücksichtigt werden, dass auf Intel-Systemen (PCs) immer zunächst das niederwertige Byte und dann das höherwertige Byte kommt. (Informell sage ich dazu: aus den üblichen Gemeinheitsgründen.) Der Webserver hat mir die drei Bytes (hexadezimal ausgedrückt) ef bb bf gesendet, und diese müssen noch vor dem <?php in der bb-config.php gestanden haben.

Das war auch die Auflösung. Es handelt sich um die Angabe der Bytereihenfolge in einer Textdatei im Unicode-Format, in diesem Fall wird das Dateiformat als UTF-8 angegeben.

Der Editor, mit dem die bb-config.php bearbeitet wurde, hat offensichtlich in UTF-8 gespeichert und die Datei mit einem BOM begonnen. Diese Markierung bleibt natürlich fast immer unsichtbar, und so kam es zum rätselhaften Verhalten – und der zukünftige Forenbetreiber war sich nicht darüber bewusst, dass am Speicherformat eines Texteditors etwas Problematisches sein könnte…

Da kommt man aber auch nicht so leicht drauf. Es ist wirklich ein arges Problem. ;-)

Lösung des Problems

Die Editoreinstellungen zum Speichern der Dateien müssen geändert werden. Entweder muss die Speicherung der BOM abgeschaltet werden, oder aber – im Zweifelsfall und für technisch weniger erfahrene Nutzer wohl die beste Wahl – das Speicherformat muss zumindest zum Speichern der bb-config.php auf ASCII gesetzt werden.

Wie das beim einzelnen Editor geht, kann ich natürlich nicht sagen, aber zum Glück hat jedes brauchbare Programm ein Hilfesystem und eine gute Dokumentation. (Denn ohne Dokumentation ist kein Programm brauchbar.)

In diesem einen Fall ist das Problem jedenfalls gelöst und das Forum ist wieder benutzbar, und ich kann mir durchaus vorstellen, dass dieses Problem häufiger auftritt und zu großem Unverständnis und Frust führt, wenn man damit konfrontiert ist.

Wie mache ich ein Theme für bbPress?

An den Suchbegriffen, die auf diese kleine Website führen, kann ich erkennen, dass relativ häufig nach Themes für bbPress gesucht wird. Das verfügbare Angebot an fertigen Themes ist zurzeit „sehr überschaubar“, um es einmal fröhlich positiv auszudrücken. Für jemanden, der mit wenig Mühe und ohne besondere Kenntnisse in der Programmierung und Gestaltung von Websites ein Forum aufsetzen möchte, das auch seinen optischen Anforderungen entspricht, ist dies sehr nachteilhaft und schafft eine hohe Einstiegshürde. Auch gibt es noch kein zentrales Theme-Verzeichnis, das einen bequemen optischen Vergleich und gezielten Download bestehender Themes ermöglicht, die dann mit geringer Mühe an die eigenen Bedürfnisse angepasst werden könnten.

Darüber hinaus gibt es kaum deutschsprachige Anleitungen, wie man selbst ein Theme gestalten kann, was für Einsteiger ebenfalls entmutigend ist. Die meisten Menschen wissen mit ihrer Lebenszeit etwas besseres anzufangen, als sich mühsam aus einer Vielzahl von Quellen die gewünschten Informationen zusammenzusuchen. Diese Situation wird noch ungünstiger dadurch, dass die für Theme-Designer verfügbaren Funktionen nirgends zentral und gut durchsuchbar und navigierbar dokumentiert sind, nicht einmal in englischer Sprache.

Ich kann nur hoffen, dass sich diese Situation in der nächsten Zeit ändert – und bis dahin einen eigenen kleinen Beitrag zur Verbesserung leisten.

Die folgende Kurzanleitung zur Erstellung eines bbPress-Themes richtet sich an Menschen, die

  1. bereits gewisse Kenntnisse in HTML, CSS und den Grundlagen der Gestaltung einer Website haben;
  2. die bereit sind, sich ihr Theme selbst zu bauen, aber keine Lust haben, dafür das Rad zum zweiten Male zu erfinden; und
  3. die eine gewisse Freude daran haben, sich ihr Wissen selbst zu erarbeiten, denn diese Freude macht es leichter, mit der gegenwärtigen, unbefriedigenden Situation zu leben.

Darüber hinaus sind grundlegende Kenntnisse in PHP sehr hilfreich, wenn sie auch für eine einfache Anpassung des Standard-Themes nicht unbedingt erforderlich sind. Mit Hilfe dieser Kenntnisse ist es möglich, den Aufbau des Standard-Themes Kakumei zu verstehen und eventuell gewünschte, tiefer gehende Anpassungen vorzunehmen. Wer darüber hinaus Erfahrungen darin hat, wie ein Theme für WordPress gestaltet wird, erhält einen besonders einfachen Einstieg, weil auf diesem Hintergrunde vieles in bbPress sehr vertraut wirkt.

Grundsätzliches

Alle folgenden Aussagen beziehen sich auf die gegenwärtige Version 1.0.x von bbPress. Die Konzepte sind allerdings so reif und gut, dass davon auszugehen ist, dass sie längerfristig Bestand haben werden.

Das Kernsystem von bbPress unterscheidet – im Gegensatz zu WordPress – sauber zwischen Standardthemes, die zur jeweiligen Release gehören und benutzerdefinierten Themes. Für jemanden, der von WordPress kommt, ist dieser Ansatz zunächst ungewohnt. Es gibt einerseits das Verzeichnis bb-templates, in welchem die Standardthemes untergebracht sind, und zum anderen das Verzeichnis my-templates, welches für die lokale Installation von weiteren Themes vorgesehen ist.

Vollständiger Aufbau eines Themes

Ein Blick in das Verzeichnis bb-templates/kakumei gibt am Beispiel des Standard-Themes Kakumei einen ersten Einblick darin, wie ein Theme aufgebaut ist. Für jedes Element in der Darstellung der Foren-Site existiert dort eine PHP-Datei. Jede dieser Dateien trägt einen (festgelegten) Dateinamen, der auch ihre Funktion deutlich macht. Die Datei header.php erzeugt etwa den Bereich der Foren-Site, der immer vor den jeweiligen Inhalten der dargestellten Seite angezeigt wird und der in einem eigenen Design in der Regel für eine Kopfzeile mit einer kurzen Beschreibung des Forums und eventuellen, statischen Navigationselementen verwendet werden wird. Die Datei footer.php erzeugt hingegen jenen Bereich der Foren-Site, der immer nach den Inhalten der dargestellten Seite angezeigt wird, hier wäre in einem eigenen Design etwa ein guter Platz für solche gesetzlich vorgegebenen Elemente wie ein Impressum oder eine Datenschutzerklärung.

(An ein Impressum oder eine Datenschutzerklärung sollte immer gedacht werden, wenn es sich um ein kommerziell betriebenes Forum handelt. Ein Website wird in der BR Deutschland auch dann als kommerziell betrachtet, wenn sie Einnahmen über eingeblendete Werbung erzielt, selbst wenn diese Einnahmen eher geringwertig sind. Das Fehlen solcher Angaben kann zur Begründung einer Abmahnung werden.)

Wer sich schon einmal mit dem Aufbau eines individuellen WordPress-Themes befasst hat, wird auf der Stelle ein Gefühl von Vertrautheit entwickeln. In der Tat haben WordPress und bbPress, so verschieden die Systeme auch sein mögen, etliche Gemeinsamkeiten, sowohl in den (bei WordPress gar nicht unumstrittenen) Konzepten als auch im Code des Kernsystemes. Im Gegensatz zu einem Blog hat eine Foren-Site jedoch relativ viele mögliche Ansichten für ihre Leser und Anwender, etwa das Profil eines Users mit Bearbeitungsmöglichkeit und persönlichen Favoriten, die Themen eines Forums, die Themen zu einem Schlagwort, die Liste der Schlagwörter, die Beiträge zu einem Thema, Suchergebnisse und die Darstellung einer Übersicht auf der Eingangsseite, um nur einmal die wichtigsten zu nennen. Da die Darstellung jeder dieser Ansichten angepasst werden kann, gehört zu einem Theme eine zunächst verwirrende Vielzahl von PHP-Dateien für die Darstellung. Da ich eine kurze Anleitung geben möchte (vielleicht schreibe ich später einmal eine ausführliche), gebe ich hier keine vollständige Liste der Dateien und ihrer Funktion an.

Besonders erwähnenswert ist die Datei style.css. Sie enthält die CSS-Anweisungen für die Darstellung der Foren-Site im Browser und somit den wohl wichtigsten Teil des gesamten Designs. Auch dieses Konzept ist WordPress übernommen worden.

Schauen sie sich ruhig einmal die style.css des Themes Kakumei an, um einen Eindruck zu bekommen! Sie benötigen dafür nur einen guten Editor. (Wenn sie unter Microsoft Windows arbeiten, kann es sinnvoll sein, die Datei nicht im Windows-Editor Notepad zu öffnen, da dieser Editor auch 25 Jahre nach seiner ersten Veröffentlichung noch nicht mit den Zeilenumbrüchen unixoider Systeme klarkommt und damit für viele Aufgaben schlicht unbrauchbar ist. Wenn sie zurzeit keinen anderen Editor zur Verfügung haben, können sie für einen ersten Einblick WordPad verwenden; auch Microsoft Word ist geeignet. Sie sollten sich aber zum Bearbeiten solcher Dateien einen guten Texteditor besorgen, dessen Bedienung ihnen zusagt – eine Vielzahl von Editoren mit teils riesigem Funktionsumfang steht als Freeware zur Verfügung.)

In den ersten Zeilen befindet sich als spezieller CSS-Kommentar eine Beschreibung des Themes in einem leicht verständlichen Format: sein Name, sein Autor, die Versionsnummer und weitere Angaben. Dieser Teil wird in der bbPress-Administration bei der Auswahl eines Themes angezeigt, er identifiziert das Theme aus Benutzersicht. Das in der bbPress-Administration angezeigte Bild vom Theme ist die Datei screenshot.png.

Der leichte Weg

Nachdem sie am Beispiel des Standardthemes Kakumei einen ersten, vielleicht etwas einschüchternden Eindruck von der Gestaltung eines Themes erhalten haben, schauen sie sich doch einmal das Verzeichnis kakumei-blue mit der Definition des zweiten Standardthemes von bbPress, Kakumei Blue, an!

Sie stellen fest, dass dieses Verzeichnis sehr „aufgeräumt“ aussieht. Statt einer verwirrenden Vielzahl von Dateien finden sie nur eine style.css und ein Bild screenshot.png, desweiteren noch ein Unterverzeichnis mit einem anderen bbPress-Logo.

An dieser Stelle sind sie zum ersten Male einer sehr angenehmen Eigenschaft von bbPress begegnet. Wenn in einem Theme keine spezielle Darstellung für einen bestimmten Bereich der Foren-Site spezifiziert wurde, dann wird immer die entsprechende Darstellung aus dem Standard-Theme Kakumei verwendet.

Wenn also nur die verwendeten Zeichensätze, das Farbschema, die Positionierung einzelner Elemente oder etwas Vergleichbares vom Standard-Theme Kakumei abweichen soll, die grundlegende Darstellung aber beibehalten werden soll, denn ist die Erstellung eines Themes sehr einfach und erfordert neben einer Anpassung der CSS-Definitionen keine weitere Programmierung. Allein über diesen Mechanismus sind weitgehende Anpassungen des Erscheinungsbildes möglich, zum Beispiel könnte ein Hintergrundbild für die gesamte Foren-Site oder für einzelne Elemente gesetzt werden, Elemente könnten transparent gestaltet werden… und vieles mehr.

Und diese sehr angenehme Eigenschaft von bbPress gilt auch für jedes benutzerdefinierte Theme. In vielen Fällen ist also ein Großteil der erforderlichen Arbeit schon erledigt, und sie können sich beim Design ihres Forums auf das Wesentliche konzentrieren, nämlich auf das Design.

Der Weg zum eigenen Theme

Aller Anfang ist leicht. ;-)

Im Verzeichnis ihrer bbPress-Installation sollte bereits ein Unterverzeichnis mit dem Namen my-templates existieren. Etliche ältere Versionen haben dieses Verzeichnis bei der Installation nicht automatisch angelegt, und in der Installation von bbPress 1.0 hatte es nach der Installation falsche Zugriffsrechte. (Dieser ärgerliche Fehler ist in neueren Versionen korrigiert.) Wenn das Verzeichnis noch nicht existiert, legen sie es an, und auch, wenn es schon existieren sollte, überprüfen sie bitte, ob es die richtigen Zugriffsrechte hat, damit das Benutzerkonto, mit dessen Rechten der Webserver läuft, lesend darauf zugreifen kann.

Legen sie im Verzeichnis my-templates ein Unterverzeichnis für ihr eigenes Theme an und geben sie diesem Verzeichnis einen Dateinamen (und die richtigen Zugriffsrechte), der aussagekräftig genug ist, damit sie auch einige Wochen später noch die Funktion dieses Verzeichnisses verstehen. Eine gute Faustregel ist es, dass der Dateiname einen Bezug zum Thema des Forums hat, vielleicht noch gefolgt von einer laufenden Nummer, falls sie häufiger Anpassungen an ihrem Theme vornehmen möchten, aber die alten (und im täglichen Betrieb bereits bewährten) Versionen aufbewahren möchten, um im Notfall jederzeit darauf zurückgreifen zu können.

Kopieren sie in das Verzeichnis ihres Themes die Datei style.css aus dem Kakumei-Theme und öffnen sie diese Datei in ihrem bevorzugten Editor. Geben sie im Kopfbereich einen Namen und eine Versionsnummer für ihr entstehendes Theme an.

Nun sollten sie ihr Theme in der bbPress-Administration angezeigt bekommen und auswählen können. Sie haben jetzt ein eigenes Theme, dessen Darstellung sie beliebig an ihre Ansprüche anpassen können. Das ist allerdings der schwierigere, aber eben auch der kreative Anteil.

Ändern einzelner Anzeigeelemente

In der Regel wird ein anderer, individuell angepasster Kopfbereich für die eigene Foren-Site gewünscht werden. Sie können einfach die Datei header.php aus dem Kakumei-Theme in das Verzeichnis ihres Themes kopieren und wie gewünscht anpassen, und auf die gleiche Weise können sie auch die anderen Elemente verändern.

Da das Standard-Theme Kakumei recht gut entworfen ist und sich seine optische Gestaltung leicht über CSS beeinflussen lässt, wird der Umfang solcher Änderungen eher klein sein. Vielleicht möchten sie zur Benutzerregistrierung noch einen Hinweis auf die Nutzungsbedingungen und die Datenschutzerklärung ihres Forums geben, die Darstellung eines Benutzerprofiles etwas hübscher machen, die Elemente auf der Startseite anders anordnen oder eine andere Fußzeile haben. Alle diese Eingriffe sind verhältnismäßig einfach, sie kopieren die entsprechende Datei in ihr Theme-Verzeichnis und bearbeiten sie dort. Selbst ohne eine gute Dokumentation geht das leicht von der Hand.

Für den rein persönlichen Gebrauch ist auch nicht mehr erforderlich.

Feinschliff

Wenn sie sich dazu entscheiden sollten, ihr Theme auch anderen bbPress-Anwendern zum Download zur Verfügung zu stellen, sollten sie am Ende noch etwas Feinschliff machen, damit das Theme auch in der bbPress-Administration benutzerfreundlich präsentiert wird. Geben sie in der style.css eine Download-Seite für das Theme an, damit eventuelle spätere Veröffentlichungen von den Anwendern leicht gefunden werden können, und erstellen sie eine Datei screenshot.png, damit schon vor der Auswahl des Themes ein grober optischer Eindruck seiner Gestaltung in der bbPress-Administration verfügbar ist. Für die Größe des Screenshot-Bildes in Pixeln orientieren sie sich einfach am bestehenden Screenshot des Kakumei-Themes.

Es bleibt zu hoffen, dass bald schon ein gutes, zentrales Download-Angebot für bbPress-Themes zur Verfügung steht. Bis dahin bleibt uns nichts anderes als die „gute alte“ Verlinkung, um bestehende Themes bekannt zu machen. Wenn sie einen Hinweis auf ihr erstelltes Theme und den Download hier im Forum hinterlegen, wird es vielleicht ein bisschen besser gefunden. Aber hier bitte nur auf Angebote hinweisen, die frei verfügbar sind.

Was bedeutet WordPress-Integration

Wer über den Einsatz eines bbPress-Forums nachdenkt, ist sicherlich schon einmal über das Wort „WordPress-Integration“ gestolpert. Es ist ein Wort, das gewisse Erwartungen weckt; Erwartungen, dass ein Forum reibungslos innerhalb eines Blogs laufen könnte – sicherlich eine oft gewünschte Möglichkeit.

Das Wort weckt falsche Erwartungen. Es ist verhältnismäßig unglücklich gewählt und bedarf einer gewissen Klärung. Deshalb diese kleine FAQ, die hoffentlich vielen dabei helfen wird, ihre Entscheidung für oder gegen eine Integration vernünftig zu treffen.

Was ist die WordPress-Integration?

Es handelt sich um zwei Möglichkeiten, die in der Regel kombiniert werden:

  1. Die Benutzerdaten von WordPress und bbPress werden in nur einer Datenbanktabelle gespeichert. Dies geht einher mit der Abbildung von WordPress-Rollen auf Berechtigungen in bbPress.
  2. Die Anmelde-Cookies von WordPress und bbPress können geteilt werden. Wer an eine bbPress-Foren-Site angemeldet ist, ist an das zugehörige WordPress-Blog angemeldet und umgekehrt.

Darüber hinaus ist oft auch von der „deep integration“ die Rede. Hierbei werden nicht nur die Anmeldedaten geteilt, sondern auch die Funktionen des WordPress-Blogs geladen, damit sie innerhalb eines bbPress-Themes zur Verfügung stehen. Diese Konfiguration ist erheblich komplexer und für ungeübte Betreiber sehr schwierig, darüber hinaus führt sie sowohl zu einer Verlangsamung der Foren-Site als auch zu einer Verlangsamung des Blogs. Wegen der erhöhten Komplexität dieses Themas werde ich hier auf die „deep integration“ nicht weiter eingehen. Wer sie wirklich benötigt oder zu benötigen glaubt, wird aber relativ viel Information in englischer Sprache finden.

Brauche ich ein WordPress-Plugin für die Integration?

Ja. (Dank an infected für den Hinweis.)

Wenn eine Anmeldung an WordPress möglich sein soll, ist ein Plugin für WordPress erforderlich. Dieses setzt einige zusätzliche Cookies, die für bbPress erforderlich sind. Es handelt sich um das Plugin bbPress-Integration.

Übrigens: Das früher auf Seiten von bbPress erforderliche Plugin ist seit bbPress 0.9 nicht mehr erforderlich, weil diese Funktionalität in den Kern von bbPress aufgenommen wurde.

Kann ich ein integriertes bbPress innerhalb des Blogs betreiben?

Nein. (Jedenfalls nicht so einfach.)

Zwar ist es genau diese Möglichkeit, die vom Wortklang „Integration“ verheißen wird, aber sie ist eben nicht damit gemeint. Das Wort „Integration“ ist hier irreführend. Es meint nur die zwischen Blog und Foren-Site geteilte Benutzertabelle und die Möglichkeit einer gemeinsamen Anmeldung für beide Systeme. Die Systeme werden nicht im eigentlichen Sinne des Wortes integriert, sondern mehr aus Benutzersicht „zueinander kompatibel gemacht“. Das ist allerdings ein häufig wünschenswertes Merkmal.

Kann ich WordPress-Themes in einem integrierten bbPress benutzen?

Nein.

Es ist allerdings nicht schwierig, Foren-Site und Blog ähnlich oder gleich aussehen zu lassen, wenn man CSS, PHP und HTML kann. Das hier integrierte Forum bekam sein Design durch kleine Anpassungen am Standard-Theme Kakumei. Ich habe nur die Titelgestaltung geändert, einige Anpassungen im CSS vorgenommen und eine Handvoll Dateien für die Darstellung bestimmter Elemente leicht angepasst. Dieser Vorgang nahm nicht einmal eine Stunde Zeit in Anspruch, das grundlegende Design war ja schon in der Website (die übrigens ein WordPress-Blog ist) fertig.

Aus Benutzersicht entsteht der Eindruck eines integrierten Forums. Technisch sind es allerdings weiterhin zwei verschiedene Systeme, und wenn ich einmal das Design ändere, muss ich es in beiden Systemen anpassen.

Kann ich WordPress-Plugins benutzen?

Nein.

Welchen Sinn hat dann die WordPress-Integration in bbPress?

Die WordPress-Integration bildet die Benutzerdaten zweier Systeme in einer Datenbank ab. Das kann die Administration vereinfachen. Zum Beispiel lassen sich die Rollen in WordPress auf Rollen im bbPress-Forum abbilden, so dass Anwender, die Autorenrechte im Blog haben, automatisch zu Moderatoren im Forum werden. Bei Websites mit einigen Handvoll Benutzern kann durch solche Vereinfachungen der administrative Aufwand für die Benutzereinrichtung halbiert werden – und es kommt nicht zu Übertragungsfehlern bei der doppelten Eingabe der gleichen Daten.

Für den Benutzer mit Rechten im Blog und in der Foren-Site hat die Integration den Vorteil, dass Passwortänderungen erleichtert werden. Das Passwort wird nur einmal geändert und ist sofort in beiden Systemen gültig. Auch das trägt zur Vermeidung von Fehlern und damit verbundener Mehrarbeit bei, es ist außerdem ein Verhalten, wie es ein Anwender mit gutem Recht von einem modernen System erwarten kann.

Auch für das „einfache Forumsmitglied“ ergibt sich ein Vorteil. Ist der Benutzer am Forum angemeldet und will einen Beitrag im Blog kommentieren, so muss er dort nicht noch einmal seinen Nick, seine Mailadresse und seine Homepage angeben, sondern kann gleich mit dem Kommentieren beginnen. Wenn der Blogbetreiber sein WordPress so einrichtet, dass nur registrierte Benutzer kommentieren dürfen und gleichzeitig die Registrierung in WordPress abschaltet, steht die Kommentarmöglichkeit nur den registrierten Benutzern des Forums offen, was wohl manchmal so gewünscht ist.

Kurz zusammengefasst: Auch, wenn das Wort „Integration“ mehr verspricht als es hält, ist eine Website „aus einem Guss“ entstanden. In einigen Fällen mag das die zusätzliche Mühe wert sein, und in anderen nicht.

Funktioniert die Integration in WordPress-MU

Ja.

Da BuddyPress ein mit Plugins angepasstes WordPress-MU ist, sollte sie auch mit BuddyPress funktionieren. Mit beiden Systemen habe ich allerdings keine eigenen Erfahrungen sammeln können.

Was spricht gegen die Integration?

Die Installation mit WordPress-Integration ist erheblich komplexer als die einfache Installation von bbPress als eigenständig laufendes Forum. Der größte Teil der Fragen im englischsprachigen Support-Forum bezieht sich auf die Integration und die damit immer wieder einmal verbundenen Probleme.

Die WordPress-Integration kann ein Sicherheitsrisiko sein. Jeder registrierte Nutzer des Forums erhält auch minimale Rechte (Bearbeitung des Profils und Betrachtung der Startseite) im WordPress-Dashboard, und wenn eine künftige WordPress-Sicherheitslücke einen WordPress-Login erfordert, dann lässt sich diese Hürde vom Angreifer mit Leichtigkeit nehmen – er benötigt nur eine Wegwerf-Mailadresse und eine einfach durchzuführende Registrierung. Diesem Problem lässt sich nur durch weitere Maßnahmen auf Seiten der WordPress-Installation begegnen, etwa durch einen Zugriffsschutz auf das Verzeichnis wp-admin mit einer .htaccess-Datei.

Der Upgrade eines integrierten WordPress kann problematischer werden. Wenn sich in der kommenden WordPress-Version die Datenbankstruktur für die Benutzerdaten oder die Erzeugung der Anmelde-Cookies verändern sollte, ist die Integration zerstört. Die bbPress-Entwicklung vollzieht sich langsamer als die WordPress-Entwicklung, und es kann durchaus ein paar Wochen dauern, bis ein bbPress zur Verfügung steht, das zu einer neuen WordPress-Version kompatibel ist. Wenn dann auch noch ein Sicherheitsloch in der vorherigen WordPress-Version besteht und massenhaft ausgebeutet wird, hat man sich mit der Integration ein großes Problem geschaffen.

Abschließendes

In vielen Fällen ist die Integration durchaus die Mühe wert, aber wer darüber nachdenkt, sollte sich schon darüber bewusst sein, was sie leisten kann, was sie nicht leisten kann und welche langfristigen Probleme damit verbunden sein können.

Der gesprengte Bildschirm

Das Standard-Design Kakumei von bbPress 1.0.2 hat einen manchmal ärgerlichen Fehler. Wenn man zu den Foren relativ lange Beschreibungen verfasst – und das ist manchmal gewünscht oder sinnvoll – denn wird der gesamte Text in einer Zeile dargestellt, das Design „zerschossen“ und der Benutzer zum vertikalen Scrollen gezwungen:

Ein Screenshot des Problemes

Der Grund für diesen Darstellungsfehler ist, dass die Design-Entwickler der Meinung waren, dass diese Zeile nicht umbrechen soll.

Die Lösung ist relativ einfach. Sie kann „auf die Schnelle“ vorgenommen werden, oder aber auch sehr sauber und damit zukunftssicherer.

Zunächst die einfache Lösung:

  1. Die Datei bb-templates/kakumei/style.css im jeweiligen Lieblingseditor öffnen.
  2. Zur Zeile 561 springen. (Diese Angabe bezieht sich auf das gegenwärtig aktuelle bbPress in der Version 1.0.2.)
  3. Noch einmal vergewissern, ob in dieser Zeile der Text white-space: nowrap; steht.
  4. Die Zeile löschen und die geänderte Datei in die bbPress-Installation hochladen.

Danach wird das zuvor „zerschossene“ Forum eher wie beabsichtigt aussehen:

Ein Screenshot einer so gefixten bbPress-Version

Das Problem mit dieser Herangehensweise ist, dass es sich beim Theme Kakumei um einen Bestandteil von bbPress handelt, und dass die geänderte Datei deshalb leicht beim nächsten Update überschrieben werden kann, wenn die neue Version hochgeladen wird. Es ist sauberer und sicherer, die eigene Arbeit von den Kern-Dateien von bbPress zu trennen. Das ist gar nicht so schwierig:

  1. Im Verzeichnis my-templates ein Unterverzeichnis anlegen.
  2. In der style.css ebenfalls die Zeile 2 bearbeiten und den Namen des Themes ändern, zum Beispiel in „Kakumei Fixed“. So ist es einfacher, das Theme im der bbPress-Administration wiederzuerkennen.
  3. Diese bearbeitete style.css in das neu angelegte Unterverzeichnis hochladen.
  4. Das neue Theme – ja, so einfach ist es, ein Theme zu erstellen! – sollte jetzt in der bbPress-Administration ausgewählt werden können, und nachdem es ausgewählt wurde, ist das Darstellungsproblem erledigt.

Ich hoffe, dass es manchem hilft, der gerade nach einer Lösung für diesen ärgerlichen Fehler sucht.

Ein Dank für den Hinweis auf dieses Problem geht an believer.

Plugin: Clickcha für bbPress

Nachdem in dem kleinen (und zurzeit unbenutzten) bbPress-Forum auf dieser Site die Spam-Registrierungen überhand nahmen und ich nicht mehr gewillt war, diesen Malware transportierenden Müll von Hand zu löschen, habe ich eine besondere Form des Captchas installiert. Auch, wenn Spameinträge im Forum durch Akismet sicher unterbunden wurden, hinterlässt jede dieser Registrierungen eine Profil-Seite, die oft einen Link auf bösartig kriminelle Versuche enthält, Menschen zu betrügen oder die Rechner dieser Menschen mit Schadsoftware zu übernehmen. An solchen Verbrechen möchte ich auch nicht mittelbar beteiligt sein.

Es handelt sich nicht wie bei herkömmlichen Captchas um einen vorsätzlich schwer lesbaren Text, sondern um eine kleine Grafik, welche die normale Anmelden-Schaltfläche ersetzt. In dieser Grafik muss bei der Registrierung auf die richtige Stelle geklickt werden, und zwar so, dass dabei eine einfache Aufgabe erfüllt wird, etwa die Frage, welche von den dargestellten Flächen die größte ist.

Wie immer bei grafischen Captcha-Varianten, ist dies eine Diskriminierung gegenüber blinden Menschen und es werden auch jene Menschen ausgeschlossen, die keine Grafiken laden – aber dennoch ist die Idee um Klassen besser als herkömmliche Captchas. Für die Mehrzahl der normalen, menschlichen Nutzer sollte die zusätzliche Anforderung kein Problem darstellen, und ob die Skripte der Internet-Kriminellen wirksam ausgeschlossen werden, wird sich in den nächsten Tagen zeigen. Ich bin jedoch guter Dinge.

Das Plugin kann ich schon nach dem ersten Test wärmstens empfehlen. Es arbeitet ohne umständliches Editieren von Quelltexten oder Anlegen von Verzeichnissen auf dem Server. Nachdem man sich einen API-Schlüssel beschafft hat (das geht direkt aus der bbPress-Verwaltung) und Absenden geklickt hat, sind die Registrierungen sofort durch ein Clickcha geschützt. Die Einfachheit dieses Vorganges hat mich selbst überrascht.

Das Plugin arbeitet ohne Probleme mit der aktuellen bbPress-Version 1.0.2, obwohl es laut der offiziellen bbPress-Site nur bis zum Release-Kandidaten getestet wurde.

Zum Plugin-Download bei bbPress.org