Blog
4.April

Wenn man im Standard-Theme eine Kategorie auswählt werden dort alle Beiträge aufgelistet, die sich in dieser Kategorie befinden. Oftmals ist dies nicht gewünscht – gerade wenn man WordPress-Artikel als CMS nutzen möchte. Folgender Ansatz bietet eine einfache Möglichkeit eine Liste der Unterkategorien anzeigen zu lassen – mit WP 2.9 getestet.
Die folgenden Arbeiten werden anhand des Kubrick-Themes vorgestellt. Dein Theme findest du im Verzeichnis wp-content/themes. Dort solltest du in absteigender Reihenfolge eine dieser drei Dateien vornehmen:
- category.php
- archive.php
- index.php
Nun machen wir uns einmal grundlegend mit dem Theme vertraut. Ein wichtiger Bestandteil von WordPress ist die “Loop“. Diese könnte in etwa so aussehen:
< ?php if (have_posts()) : ?>
…
< ?php while (have_posts()) : the_post(); ?>
…< ?php the_content() ?>…
< ?php endwhile; ?>
…
< ?php endif; ?>
Die Loop wirft die Beiträge aus – dies soll nur geschehen wenn es keine Unterkategorie gibt. Es muss also eine Funktion her, die anhand der aufgerufenen Kategorie überprüft ob es eine Unterkategorie dazu gibt. Diese Aufgabe erfüllt folgende Funktion:
function subcategory_exists($catID) {
global $wpdb;
$abfrage = "SELECT parent FROM $wpdb->term_taxonomy WHERE parent = ".$catID;
$result = $wpdb->get_results($abfrage);
if (empty($result)) {return false;} else {return true;}
}
Diese Funktion wird in die functions.php im Theme-Verzeichnis eingetragen. Sie wirft anschaulich ein “Ja” zurück, wenn eine Unterkategorie existiert. Und genau in diesem Fall soll die Loop nicht ausgeführt werden, sondern eine Liste mit den verbleibenden Unterkategorien ausgegeben werden.
Nun kümmern wir uns um den Rest. Je nach Theme wird eine der oben genannten drei Dateien bearbeitet. Im Kubrick-Theme ist das die archive.php. Wenn eine Unterkategorie existiert wollen wir ein Menü mit den verbleibenden Unterkategorien einfügen und es sollen keine Beiträge ausgegeben werden. Kümmern wir uns zunächst um das erstere:
if (is_category()) { ?>
<h2 class="pagetitle">Archive der Kategorie < ?php single_cat_title(); ?></h2>
< ?php
if (subcategory_exists($cat)) {
echo "
<ul>";
wp_list_categories('child_of='.$cat.'&title_li=');
echo "";
} ?>
…
Der Einsatz der Funktion subcategory_exists ist klar. Die übergebene Variable $cat enthält die ID der aktuellen Kategorie. Die Loop wird nun folgendermaßen ergänzt:
< ?php while (have_posts()) : the_post(); ?>
< ?php if (!(subcategory_exists($cat))) { ?>
<div <?php post_class(); ?>>
…
< ?php the_content() ?>
…
< ?php } ?>
< ?php endwhile; ?>
</div>
Folglich werden Beiträge ausgegeben, wenn keine Unterkategorie existiert. Somit haben wir auch alles erreicht, was wir wollten.
Vorsicht: Dadurch sind Artikel, die in einer Oberkategorie liegen, für den Besucher nicht sichtbar. Trotzdem kann man diese über die direkte URL aufrufen – sofern diese bekannt ist.
2.April

Wenn man seinen Webhoster wechselt, möchte man in der Regel auch mit dem Statistik-Tool umziehen. Daher hier eine kurze Erklärung wie dies mit Piwik funktioniert.
Dazu wird folgendes benötigt:
Zuerst kümmern wir uns um ein Backup der Datenbank. Ich beschreibe hier nur den Weg für phpMyAdmin – andere Datenbank-Tools funktionieren natürlich auch. Zuerst wird die entsprechende Datenbank in der linken Spalte ausgewählt. Dann reicht ein Klick auf “Exportieren” und mit OK bestätigen. Wenn gewünscht können hier noch Voreinstellungen gemacht werden – ist aber prinzipiell nicht nötig.
Nun sollte von Piwik die neueste Version heruntergeladen werden und in das entsprechende Verzeichnis auf dem neuen Webspace kopiert werden. Es ist keine Installation erforderlich! Die config/config.ini.php-Datei vom alten Webspace sollte nun erstmal in den gleichen Ordner auf dem neuen Webspace verschoben werden. Hier nehmen wir einige Einstellungen vor. Dazu die Datei mit einem geeigneten Editor öffnen und bearbeiten:
[superuser]
login = "Name"
password = "kryptische Ziffern"
email = "Email-Adresse"
salt = "kryptische Ziffern"
[database]
host = "localhost"
username = "Benutername"
password = "Passwort"
dbname = "Datenbankname"
tables_prefix = "piwik_"
adapter = "PDO_MYSQL"
port = 3306
Im ersten Block sollte nichts verändert werden. Hier sind die Zugangsdaten des Administrators angegeben. Der nächste Block bezieht sich auf die Datenbank. Hier nehmen wir nun die entsprechenden Veränderungen vor. Das Tabellenpräfix sollte behalten werden, da nun gleich das Backup auf dem neuen Server eingespielt wird.
Also phpMyAdmin öffnen und via “Importieren” die entsprechende Datei hochladen. Hier sollte man aber sagen, dass es sowohl beim Backup erstellen als auch beim Importieren zu Schwierigkeiten kommen kann, wenn die Datei zu groß ist. Dann müsste diese vorher in kleine Stücke zerlegt werden.
Somit sind wir auch fertig. Zum Abschluss aber noch ein Hinweis: Piwik selbst ist nicht an eine bestimmte URL gebunden – allerdings der Tracking Code schon. Daher Domain wieder richtig setzen oder Tracking Code im Backend aktualisieren und in die Webseite neu einfügen.
4.Dezember
Nachdem ich im ersten Artikel zu “Qualität im Web” Bezug auf eine konkrete Fehlbildung im Web genommen habe, soll dieser Artikel eher Fehler hinter den Kulissen aufweisen.
Im Großen und Ganzen sollen hier zwei verschiedene Aspekte angesprochen werden, die dem Web Qualität geben. Jedoch ist dieses in der Tat schwieriger zu bewerkstelligen, da teilweise der “Autor” eines Textes keinen direkten Einfluss darauf hat.
Die Syntax im Web – ein Muss!
Unter der Syntax versteht man salopp gesagt, die Grammatik des Quelltextes. Um über dessen Richtigkeit eine Aussage treffen zu können, muss man zunächst erahnen um welche “Sprache” es sich handelt. Dies ist leicht vergleichbar mit der Wirklichkeit: Deutsch und Englisch sind beides Sprachen, jedoch folgen sie verschiedenen Richtlinien bzw. Grammatiken. Demnach ist der erste Schritt zu einer syntaktischen Webseite die Dokumenttypdeklaration anzugeben und somit die Sprache festzulegen. Beispielsweise könnte das <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> oder auch der wesentlich einfachere Doctype für HTML5 sein: <!doctype html>. Hier freut sich natürlich der Webentwickler, dass er sich nun endlich mal diese Zeile merken kann.
Weiterhin zur Syntax lässt sich nun nicht mehr viel sagen. Die üblichen Fehler können mit einem Validierungs-Tool überprüft und bereinigt werden. Eine Validierung der Webseite ist keine Pflicht, sollte aber durchaus als Kriterium für eine gute Webseite angesehen werden. Wobei man auch sagen muss, dass durch die Erzeugung dynamischen Inhalts (WYSIWYG-Editoren) leicht mal ein solcher Fehler sich einschleichen kann. Webmaster freuen sich aber in der Regel über einen solchen Hinweis.
Am Rande sei bemerkt, dass eine Validierung der CSS-Datei ebenfalls möglich ist, allerdings nicht unbedingt notwendig. Die richtige Auszeichnung des Inhalts sollte eine höhere Priorität haben als die Richtigkeit einer Formatierungsdatei.
Die Semantik – Streben nach Vollendung
Das ganze führt nun schließlich zum wichtigeren Teil, der in der Vergangenheit oft vernachlässigt wurde und nun seit einiger Zeit mehr im Vordergrund steht. Semantik bedeutet in diesem Sinne, dass die durch HTML vollzogene Auszeichnung des Inhalts logisch ist. Das Wort “logisch” beinhaltet auch schon einen Knackpunkt: Nicht immer ist man sich so einig, was semantisch richtig ist und was nicht. Semantik lässt sich nur sehr schwer in ein starres Konzept pressen, indem jedes Individualproblem ausreichend behandelt wird. Daher ist bei der Gestaltung einer Webseite auch nicht die Syntax, sondern die Semantik die höhere Hürde.
Aber wie genau kann man jetzt Semantik verstehen – dazu ein Ausblick: Man könnte so herangehen und zunächst festhalten, dass HTML eine Sprache zur Auszeichnung von Inhalt ist. Als Inhalt betrachtet man jeweils eine einzelne Seite. Diese Inhalte haben in der Regel eine logische Bedeutung und diese wird mit HTML untermauert. Fehler, die durch falsche Auszeichnung entstehen, können also grammatikalisch richtig sein, aber die falsche Bedeutung vermittlen.
Als Beispiel könnte man sich folgendes vorstellen: Die Kommentare eines Artikels werden zu einem blockquote zusammengefasst. Allerdings entspricht dies nicht einem üblichen Zitat – und hat somit eine falsche Bedeutung.
Semantik als Diskussionsstoff
Bei der semantischen Betrachtung gibt es im Gegensatz zur syntaktischen Richtigkeit keine eindeutigen Regelungen. Vielmehr muss der Mensch die Aufgabe übernehmen und logische Zusammenhänge auszeichnen. Dabei sollte klar sein, dass man sich nicht immer einig ist, wenn es um die Umsetzung geht. Daher möchte ich im Folgendem ein paar verschiedene Beispiele erläutern. Viele davon entstanden eng im Zusammenhang mit dem Entwurf von HTML5.
-
In HTML gibt es eine Unterscheidung zwischen logischen und physikalischen Ausdrücken. Vereinfacht kann man sagen, dass logische Ausdrücke dem Inhaltsabschnitt eine gewisse Bedeutung zukommen lassen während die physischen Ausdrücke eher der Darstellungsverbesserung dienen. So wurde das b-Element (fett) auf die Abschuss-Liste gesetzt, da es “keinerlei” Bedeutung hat und durch das strong-Tag nahezu ersetzt wird. Bei einer einfachen Betrachtung könnte man darauf schließen, dass dies die richtige Entscheidung sei. HTML5 sieht aber eine Wiederbelebung des b-Tags vor. b kennzeichnet äußerlich eine Textstelle, da man diese wirklich als fett kennzeichnen möchte und keine höhere Bedeutung hat. Als Anwendungsfall wäre ein Lexika-Artikel zu nennen. Der zu erläuternde Begriff verdient eine optische Hervorhebung im Text – allerdings wird diesem Wort keine Betonung gegeben. Auch wenn man nun mit “Trennung von Inhalt und Design” gegen das Fett argumentieren will, so hat dies durchaus seine Berechtigung.
-
Eine weitere Sache, die eng mit der HTML5 Einführung zu tun hat sind die beiden Elemente span (Inline) und div (Block). Die Bedeutung dieser Elemente ist “leer”, wenn man das so sagen darf. Prinzipiell könnten diese beiden Tags ausreichen um eine Webseite zu gestalten (abgesehen von input/textarea). HTML-Dokumente basieren grundlegend auf solchen div-span-Konstrukten (“Box-Layout”). Allerdings geben diese dem Dokument keine logische Struktur. Abhilfe schaffen da die neuen HTML5 Elemente wie header, footer, aside,…
-
Eine der wichtigsten Funktionen einer Webseite nimmt die Navigation ein. Überlicherweise wird diese als ungeordnete Liste dargestellt. Das hat auch seine Berechtigung. Zum einen ist eine Liste angebracht, da sie die verschiedenen Menüpunkte gruppiert und eine “Auswahl” lässt. Ungeordnet daher, da man ansonsten mit einer geordneten Liste den verschiedenen Punkten unterschiedliche Prioritäten zuweist. Das haben sie aber nicht, denn beispielsweise ist das Impressum genauso wichtig wie die Startseite. Ebenen können stattdessen mit Verschachtelungen der ungeordneten Liste dargestellt werden.
-
Die übliche Überschriftenstruktur reicht bis zur sechsten Ebene – danach ist Schluss – zumindest bei HTML4 und XHTML1.0. HTML5 stellt hier einen Ausweg bereit, welcher in diesem Artikel erklärt wird.
Es gibt noch mehr an Diskussionsstoff, was hier aber nun letztlich den Rahmen sprengen würde.
14.November
Die 42 Merkmale woran man fachliche #Inkompetenz im #Web erkennt – und dies ist einer davon!
Schon vor einiger Zeit habe ich diesen Tweet verfasst – und nun möchte ich ihn noch einmal aufgreifen und über die Qualität des Webs philosophieren.
Im Grunde genommen geht es hier um ein Phänomen, mit dem man täglich konfrontiert wird. Jeden Tag werde ich mit gewissen Tweets und Feeds bombardiert, die prinzipiell dem Schema folgen: Eine Ansammlung von Tipps & Tricks, Merkmalen, Plugins, Ideen, Websites, etc. … kombiniert mit einer Zahl allem voran. Der Titel suggeriert in den meisten Fällen eine enorme Qualität – zumindest lassen das Adjektive wie “wichtigsten”, “ultimativsten”, “schönsten” … verheißen. Glücklicherweise lässt sich der Superlativ nicht mehr steigern!
Jetzt muss man sich unweigerlich zwei Fragen stellen: [1] Warum stößt man an jeder Ecke auf solche Blog-Titel? und [2] Was für eine Qualität steckt dahinter? Auf beide Frage möchte ich nun im Folgenden eingehen.
Widmen wir uns der ersten Frage, die man wesentlich leichter beantworten kann:
Zunächst einmal kann man ruhig einen Blick auf bekannte Blogs werfen, die genau dieses Schema nutzen. Auffällig zeigt sich da insbesondere das Smashing Magazine (en.), welches ja durchaus eine Reputation genießt. Ein solcher Artikel ist dann wie das nebenstehende Bild zeigt aufgebaut. Dies hat neben den suchmaschinen-technischen Vorteilen auch einen klaren Vorteil für den Leser: Übersichtlichkeit.
Doch Übersichtlichkeit und Suchmaschinen-Optimierung sind keine Kriterien für gute Inhalte. Mit der Zeit bekommt man ein Gespür für solche Ansammlungen und man weiß genau was sich dahinter verbirgt. Oftmals ist das weniger als gedacht. Das liegt zum einen daran, dass solche Artikel im Wesentlichen unvollständig sind. “Die 12 besten Tools wie man sein Leben besser organisiert” sind nunmal nicht die Antwort auf die Frage “Wie organisiere ich mein Leben?” – sie können zwar durchaus hilfreich sein, aber keinesfalls decken sie jedmögliche Situation ab. Der Kritikpunkt ist hier nicht unbedingt die Unvollständigkeit – sondern die Suggerierung einer Vollständigkeit (siehe Superlativ!).
Beim Durchlesen einiger solcher Artikel hat man auch zunehmend das Gefühl, es handle sich lediglich um eine Linksammlung. Vielfach wird auf andere Artikel verwiesen und lediglich noch ein Codeschnipsel dazugefügt und ein entsprechendes Bild gesucht. Das mag ja für den ein oder anderen nützlich sein – allerdings hat das wenig mit Eigenarbeit und Qualität zu tun – denn der ursprüngliche Artikel besteht ja bereits und wurde von einer anderen Person verfasst.
Was ich nun letztlich damit sagen will (oder auch “Fazit” genannt): Ich möchte und erwarte von jedem Blog eine gewisse Qualität. Das heißt nicht, dass jedes Wort eine Glanzleistung sein muss und auch bestimmt nicht, dass man keine Ansammlungen posten darf. Aber es wäre begrüßenswerter, wenn ein Artikel auch eine gewisse Eigenleistung erbringt und nicht nur leere (wiederholte) Phrasen beinhaltet.
Zum Abschluss möchte ich hier noch auf zwei Blogs verweisen, die genau der Qualität entsprechen, die ich so mag und damit auch deren Arbeit honorieren: