Willkommen auf der privaten Homepage von Johannes Jarolim, Salzburg, Österreich. Welcome to the private homepage of Johannes Jarolim, Salzburg, Austria, Europe.
Zwanzig Artikel in der

Kategorie Open-source

WordPress Theme Relaunch, die zweite

Man glaubt es kaum – Aber ich wechsle mein Themes anscheinend öfters als meine Unterhosen ;-)

Nein, um wieder zum Ernst der Sache zu kommen: Das letzte Theme war wohl ein dunkler Patzer in meinem CV und die zentrale Layouttabelle hat mich auch massiv gestört – Nicht aus Prinzip, sondern weil Layouttabellen massiv die Anzeigezeit in die Länge ziehen können. Also bin ich frisch ans Werk gegangen und habe mich CSS- und Internet Explorer mäßig wieder auf den neuesten Stand gebracht.

Ich möchte diesmal ganz besonders 2 Plugins erwähnen, die von nun an nicht mehr von meiner Seite weichen sollen:

Zusätzlich basiert mein Theme nun auf einem CSS Framework, dass ich ebenfalls hervorheben möchte: YAML ist nicht nur ein Framework für 2- bzw. 3-Column Straight-CSS-Layouts, sondern auch ein CSS-Tutorial und -Lehrbuch aller erster Güte.

Ich hoffe, es gefällt.


Jerome’s presenting keywords BETA 2

Hah – finally jerome’s presenting his tagging plugin in second version. I downloaded the plugin and installed it like jerome wanted to. Oddly it doesn’t create a database on activation so i’ve to stick with his 1.9 version and my puny keywords-manager addition.

Jerome: Since my comment entries doesn’t appear on your blog i hope you read this:
After looking through your code, I think you released a version without the activation-hook-code. Can’t find the promised tag-migration code either. Maybe you could post the sql code for the table so we can create it manually if you don’t have time for a second release right now.

The rest of the code looks very promising:

  • Tag management (Oh no, my management plugin is deprecated ;-)
  • Tags get saved in normalized form in a seperate table (Say hello to performance)
  • A biiig options page
  • etc. etc.

Hope we’ll see the correct release soon – One centralized plugin is always better than a bunch of them.

Jerome’s Keyword Manager – Final Destination

Finally – This should be it. After reports of bugs nearly to big for such a small plugin i’ve rewritten the original sql clause with a little bit better one. Now we should have Jerome’s Keywords Manager – Final Destination.

Download the (i hope) final version:

Internal name: final destination

For the more technical fraction of my growing fan-community:
The original sql clause to retrieve posts with an specific assigned keyword was formulated to generally and reported to many results. A basic "attribute LIKE %keyword%" wasn’t correct in this case.


Chip showed me this example: We have lot’s of posts tagged with the keyword "c" (programming language). After selecting the keyword in the Jerome’s Keywords Manager overview page, all posts having assigned keywords with the letter "c" would be shown on the edit page (like "cocaine", "furuncle", "canalisation", "canabalismn" and so on). urg.

Since jerome decided to save assigned keywords as a comma-seperated list (straight without spaces in between) the SQL-Clause was redefined easely:

attribute LIKE ‘keyword,%’ OR
attribute LIKE ‘%,keyword’ OR
attribute LIKE ‘%,keyword,%’ OR
attribute = ‘keyword’

This should catch all cases.

Jerome’s keywords manager – The next generation

The next version of Jerome’s keyword manager includes two new features asked by mike:

  • In the list of all articles that use a specific keyword, you see and select all other used keywords of these articles
  • A new page showing all posts/pages having no keywords assigned at all

Additionally i finished the rudimenitary i18n code with help from Juice, who showed me some nice tricks with his sample code. Beside of his v2 korean language file i provide a full v3 german language translation file.

Screenshots of the new features: [mygal=jeromes-keywords-manager-v3]

Download and enjoy:


This looks like a stable and mature plugin now – I don’t think it needs further enhancements *wink, wink*.
Ok, ok – There’s still this ugly SQL-LIKE-Statement – I’ll soon release jeromes-keywords-manager – the final destination.

Jerome’s keywords manager v2

Advanced, advanced. Since Mike asked for it: Here is the fabulous new version of Jerome’s keyword manager with full personal article control. This advanced version of the plugin shows a list of all articles that are tagged with the chosen keywords.

 Jerome’s keywords manager v2

One little step for me, one big step for mankind.

Yet Another Photoblog goes alpha!

Finally – My wp-plugin "Yet another Photoblog" goes alpha. What does that mean? Well – I’m programming on a photoblog-conversion Plugin for WordPress for a while now and a alpha version is installed on this site since this morning.

What is Yapb? What can you expect?

  • A non invasive WP-plugin that converts wp into a easy useable photoblog system
  • Easy image upload – All wordpress post-features can be used
  • On the fly thumbnail generation – You can use multiple thumbnail sizes as you need them: Thumbnail generation is now part of the template
  • Exif data processing and output

The idea
There aren’t many open source photoblog systems out there in the wild. I searched a long time and found only few. Evaluated all of them and decided to program one on myself, since none of them meet my demands. I did that about three times – Every version was build up from the scratch. Every version was better and more flexible. More cool and finally more proprietary.

Every time i saw a feature in another blog system that i wanted to have – i had to spend much of my rare spare time to design, program and integrate it into my own photoblog system. After impelenting some features i decided that this was a waste of time.

There already was a system having lot’s of features and a huge community: WordPress. Yapb is my try to build on a wide spread platform – And to get what i want – As a photographer and programmer.

Technical spoken
Yapb integrates tightly into wordpress. Via Javascript DOM manipulation it injects several form additions into the standard wordpress post form. It provides additional data and fnctions to themes so that nearly every theme can be converted to a photoblog in virtually no time. Yapb doesn’t touch original wordpress code. You can decide if you want to write a normal WordPress Text-Post or if you want to post an image. etc. etc.

What’s next? Nearly all pics you see on this blog are posted over Yapb. Now it’s only a matter of time that a installable version get’s released.

Jerome’s Keywords Manager

Even if Jerome’s Keywords is a very, very nice and useful wp-plugin – I still missed something. How could i update previously entered tags without editing every single post?

The solution:

The marvelous jeromes-keyword-manager ;-)
Version 2 of the plugin – Short Description can be found here.
Version 3 of the plugin – Look here for further information.
Version 4 of the plugin (Developement name: Final destination) – more info

Language files as far as i know:

Language Contributor Link
German Johannes Included in download
Korean Juice http://lombric.linuxstudy.pe.kr/PDS/jeromes-keywords-manager-ko_KR.zip
Japanese Plasticdreams http://plasticdreams.org/uploads/projects/jeromes-keyword-manager-lang-ja_JP.zip

Screens for V3:

The plugin allows to edit, replace or delete tags over all posts.
Hope this will help to spread the tagcloud idea ;-)


How do i install a wp-plugin? Instead of repeating the old rtfm phrase i’ll explain the veeery complicated way to install one:

  1. Unzip the files into an empty directory
  2. Upload the file and directory directly into the wp-content/plugins folder of your wp-installation
  3. Go to admin panel / plugins and activate it
  4. Enjoy!

Administrationsmasken in WordPress verändern und ergänzen

Da ich derzeit evaluiere, ob ich WordPress ohne Hacks über ein Plugin zu einem PhotoBlog umfunktionieren kann, interessierte es mich natürlich sehr, wie weit ich WordPress Administrationsmasken anpassen und verändern kann.

WordPress bietet schon standardmäßig einige Hooks an, die es erlauben diverse Administrationsmasken mit eigenen Funktionalitäten zu ergänzen. Allerdings kommt man mit diesen nicht an alle Stellen heran – Standardmäßig kann man die Masken ohne Hacks am WordPress Quellcode nur ergänzen. Als Beispiel ziehe ich die Maske "Beitrag schreiben" heran (Erweiterte Eingabe). Diese bietet out of the box 3 Hooks für eigene Funktionen an:

Dieser Hook ermöglicht es, eigene Inhalte unter dem Texteingabefeld einzufügen. Beispiel:

function editFormAdvanced() {
    echo ‘<div style="border:1px solid red; padding:1em;">Hello World!</div>’;
add_filter(‘edit_form_advanced’, ‘editFormAdvanced’);


Zusätzliche Advanced dbx – Widget Balken am Ende der Maske. Der Code ist etwas umfangreicher, weil ein dbx-Container gemacht werden muß. Beispiel:

function dbxPostAdvanced() {
    echo ‘
        <fieldset id="yapbDbxPostAdvanced" class="dbx-box">
            <h3 class="dbx-handle">YAPB</h3>
            <div class="dbx-content">Hello World!</div>
add_filter(‘dbx_post_advanced’, ‘dbxPostAdvanced’);

Zusätzlicher dbx-Widget Balken rechts. Der Code ist etwas umfangreicher, weil ein dbx-Container gemacht werden muß. Beispiel:

function dbxPostSidebar() {
    echo ‘
        <fieldset id="yapbdiv" class="dbx-box">
            <h3 class="dbx-handle">Yapb</h3>
            <div class="dbx-content">Hello World!</div>
add_filter(‘dbx_post_sidebar’, ‘dbxPostSidebar’);

Und andere, ausgefallenere Stellen?
Wie bekomme ich jetzt aber zB. Inhalte ohne Hacks an den Anfang des Forms? Die Antwort, die ich gefunden habe, lautet: Mittels Manipulation des DOM. Beim ersten aufkeimen der Idee stöhnte ich jetzt unwillkürlich auf – DOM-Manipulation ist ja eine Heidenarbeit… Wenn man die richtige Library nicht kennt:

Geschrieben von Sam Stephenson, bietet diese Library mächte Werkzeuge für DOM-Manipulationen. Einlesen kann sich jeder selber (Zb. Auf dieser Seite). Machen wir es kurz – Hier ein Samplecode, der ein DIV an die erste Stelle des Forms bringt – Vorrausgesetzt, die JS-Library prototype ist ebenfalls mit Eingebunden:

function addContentAtTheBeginning() {
    $myDivContent = ‘<div style="border:1px solid red;padding:1em;">Hello World</div>’;
    echo ‘
        <script language="JavaScript">
            new Insertion.Before(\’titlediv\’, ‘ . $myDivContent . ‘);
add_filter(‘edit_form_advanced’, ‘addContentAtTheBeginning’);

Kurz, einfach, schmerzlos, oder wie der gebildete Inder zu sagen pflegt: C’est ca:

Demonstrationsplugin downloaden (12kB)

WordPress und Übersetzungen

Wie wird WordPress bzw. Plugins oder Themes mehrsprachig? Mich hat das grundsätzlich interessiert, da ich mir derzeit anschaue, ob ich Yapb (Yet Another PhotoBlog) als WordPress Plugin umsetze. Grund für meine Neugier:

Was muß ich schon Anfangs wissen, um das Plugin am Ende auch wirklich ohne große Arbeit Übersetzen zu können (Ich brauche keinen Abschließenden Aha-da-hab-ich-an-der-Realität-vorbeiprogrammiert Effekt).

Naja – WordPress benutzt das freie GNU-Gettext (bzw. hier ein Link zur Gettext-Seite selber), welches grob folgende Arbeitsschritte vorraussetzt:

  1. Alle zu übersetzenden Texte im Quellcode durch Funktionsaufrufe ersetzen
    zb. print(‘This is english’); durch print(__(‘This is english’, ‘pluginname’)); wobei beim Entwickeln wirklich Englisch verwendet werden sollte.
  2. Ein Tool wie zB. poEdit drüberlaufen lassen, alle diese Textschnipsel herausholen lassen und in eine .po-Datei speichern. Diese agiert als Resourcencontainer für nicht übersetzte Textschnipsel.
  3. Diese jetzt Schritt für Schritt in die gewünschte Sprache übersetzen
  4. Das Ergebnis zu einer .mo-Datei (zB. pluginname-de_DE.mo) kompilieren und abspeichern

WordPress selber erlaubt dann die Einbindung dieser Textdomain und ersetzt dann alle so vorbereiteten Textschnipsel durch die deutschen Übersetzungen, wenn der User das so in WordPress eingestellt hat.

Sollte der Benutzer dann eine noch nicht übersetzte Sprache verwenden, wird standardmäßig der Englische Text angezeigt, der ja immer noch im Quelltext vorliegt.

Fazit: Selbst wenn dies wieder mal der falsche Ansatz ist und ich Yapb als eigenständige WebApplikation entwickle, hab ich wieder was dazugelernt: Ein schöner Ansatz für Übersetzungen. Die Übersetzung geht gut von der Hand, wenn man statt den Commandline-Tools der GNU Foundation mit poEdit arbeitet. Ich denke, dass jedes seriöse Übersetzungsbüro .mo-Dateien akzeptiert.

More Infos: Falls sich jemand für das Thema interessiert und schnell in die Materie kommen möchte, kann ich diese beiden Artikel empfehlen:

Zusammen ergeben die 3 Artikel ein schönes Bild – Nach ein bisschen lesen und nachmachen sollte jeder in der Lage sein, eigene Übersetzungsdateien zu erstellen und zu benutzen.

Tagging und Tagclouds

Seit ich es das erste mal auf Seiten wie flickr, del.icio.us, Technorati  oder auch NetLib gesehen habe, interessiert mich die Indexierungsform Tagging sehr. Gestern habe ich Tagging und eine Tagcloud in meine Wordpress-Installation integriert.

Prinzipiell versieht man beliebige Information mit sogenannten Tags (Schlüsselwörtern) – Diese können entsprechend ihrer Häufigkeit in einer Tagcloud dargestellt werden. Hat man eine gute Basis an erfassten Tags, können sehr leicht Relationen einzelner Tags zueinander ermittelt werden. Die Komplexität der Vernetzung steigt sehr früh steil an.

Die Vorteile des Taggings:

  • Sehr schnelle Eingabe (Man gibt einfach mehrere Worte getrennt durch Beistriche an)
  • Sehr übersichtliche Darstellung von Schlagwörtern inkl. ihrer Gewichtung
  • Komplexität durch sehr viele Schlüsselwörter

Die Vorteile des Taggings in Multiuser-Umgebungen:

  • Spontane, freie Vernetzung von Inhalten ohne fixe Vorgaben

Allgemein Nachteile:

  • Doubletten einzelner Tags durch ungewollte gleichzeitige Nutzung des Singular, Plural, anderer Wortformen oder Synonyme, etc. Beispiele für Tagmöglichkeiten mit selber oder ähnlicher Bedeutung: Buch, Bücher, Roman, lesen, gelesen, etc.
  • Ungewollte Fehleinträge durch Tippfehler
  • Komplexität durch sehr viele Schlüsselwörter

Das Tagging in meiner WordPress-Installation habe ich mit diesem Plugin gelößt:

Die Darstellung der Tagcloud basiert auf dem Know How in diesem Artikel:
Tag Cloud Font Distribution Algorithm (Im speziellen die etwas schönere, logarithmische Verteilung)

 « 1 2