Kategorie: Uncategorized

  • Vergleich Drupal, Joomla, Typo3 und co

    Auf contentmanager.de gibt es ein gratis E-book, welches die folgenden CMS vorstellt und vergleicht:

    • Drupal
    • Joomla!
    • Typo3
    • TypoLight
    • OpenCms
    • CMS made simple
    • PostNuke
    • basecmp
    • AxCMS.net
    • eZ Publish

    Das ganze wird mit einer übersichtlichen Tabelle noch veranschaulicht. Immer mal wieder kam auf Drupalcenter die Frage, welches CMS denn nun das Beste wäre. Generell kann man es so eigentlich nicht sagen. Kommt halt ganz auf die Anwendung drauf an und das wird doch ganz gut hervorgebracht.

    Hier gehts zum E-Book Artikel, wo sich auch der Downloadlink befindet.

    Auch IBM hat sich mit dem Thema auseinander gesetzt und einen netten Artikel geschrieben. Besonders die Tabelle gibt einen guten Überblick, über die Fähigkeiten.

    Update: 24.1.2008 – Per Zufall bin ich noch auf einen anderen Vergleich zwischen Drupal, Joomla und Typo3 gestossen. Der Autor gibt auch ein paar Anwendungsszenarios für die jeweiligen Frameworks.

    Update: 7.4.2008 – Noch ein super Vergleich, mit ein paar guten Links.

  • Drupal 5.6 und Drupal 6 RC2

    Für alle Drupalianer, es gibt ein paar neue Updates für core:

    Für alle, die sich davor fürchten ein Update zu machen: Hat man nichts am Core rumgebastelt, dann verlaufen diese eigentlich ganz reibungslos (ich empfehle aber sicherheitshalber doch immer auch noch ein Backup von DB und Core, sicher ist sicher).

    Bis zum stable release von Drupal 6 sollte es wohl nicht mehr allzulange dauern :). Nur habe ich gerade festgestellt, dass CCK für D6 noch gar nicht vorhanden ist 🙁 … -> kommt sicher bald.

  • Drupal in der Schweiz

    In Amerika scheint Drupal voll der Renner zu sein nur haben wir hier in der Schweiz davon noch nichts mitbekommen. Woran das wohl liegen mag? Was lässt sich ändern? Vielleicht ist die Schweiz einfach zu klein? Vielleicht fehlen auch einfach die Leute, welche mal etwas auf die Beine stellen? Ein Treffen organisieren oder was weiss ich.

    Links

    Nur sind diese beiden annähernd scheintot! Also, falls irgendwelche aktive Drupalianer dies hier lesen, so tretet doch den Gruppen bei, damit wir auch mal ein kleines Treffen organisieren können. Vielleicht liegt es einfach auch an der Neutralität von uns Schweizern 😉 … mal zurücklehnen und schauen, was passiert.

  • Kleine Einführung ins Module «Contemplate»

    Dieser Inhalt ist veraltet!

    In letzter Zeit sind vermehrt Anfragen auf Drupalcenter aufgetaucht, welche mit dem Darstellen/Themen von Nodes zusammenhing, z.B.:

    • Ich habe einen CCK Type erstellt basierend aus Einem Bild und 2 Textfelder. Nun werden diese einfach untereinander dargestellt und haben dazu noch viele unnötige divs drin? Wie kann ich diesen node entsprechend themen?

    Grundsätzlich gibt es dafür zwei Ansätze:

    1. Ein eigenes Template machen, also etwas wie node-mytype.tpl.php und dann dort die entsprechenden Angaben für diesen Node machen. Klappt eigentlich sehr gut.
    2. Das Modul contemplate verwenden. Damit lässt sich alles in Drupal ohne FTP lösen. Sehr elegant und einfach und praktisch.

    Um den Einstieg ein wenig zu erleichtern, hier eine kleine Anleitung, wie man vorgehen würde. Als Beispiel verwende ich den Contenttype Drupal Theme, welcher hier auf rapsli.ch verwendet wird. Diesen Contenttype verwende ich dazu, um Themes auf der Seite zu speichern.

    Voraussetzungen

    -> Das sollte ja kein Problem sein 😉 CCK und Views gehört sowieso in jede Drupalinstallation.

    [Bild 1]

    Dies ist die Eingabemaske für den Inhaltstype. Es gibt die folgenden Felder:

    • Titel
    • General -> Taxonomy
    • multiple_bilder -> hier können einfach diverse Screenshots vom Theme hochgeladen werden.
    • Label Image -> Das ist dann sozusagen das Titelbild vom Theme
    • Beschreibung

    [Bild 2]

    Jetzt gehen wir nach "admin/content/templates" und wählen dort den Contenttype aus, für welchen wir ein neues Template erstellen wollen. In unserem Fall wäre das also "Drupal Themes".

    [Bild 3]

    Jetzt kommen wir in die eigentlich Maske. Wir haben die Wahl, ob wir das Layout for den Node in der Teaser-, der Body- oder der RSS Ausgabe zu verändern. Wird das häckchen angeklickt, so wird das Feld aktiviert. Jetzt kann hier nach belieben etwas geschrieben werden. Als kleine Hilfe ist hier noch das Feld "Body Variablen" bzw. "Teaser Variablen". Diese geben alle Variablen an, welche zur Verfügung stehen. Durch Klicken auf die entsprechende Variable wird diese in das Feld "Body Template" übernommen. Hier können noch entsprechende Divs oder was auch immer für HTML Elemente hinzugefügt werden.

    Vorsicht

    Einige Variablen sind mit einem roten Sternchen markiert: "Fields marked with ** are insecure and need to be wrapped with either check_plain() or check_markup()" Also diese Variablen müssen noch durch eine Funktion geschickt werden, da diese noch nicht auf Böse Inputwerte überprüft wurden! Das sollte auch gemacht werden!

    Fazit

    Sehr praktisches Modul. Einziges Problem, welches ich sehe ist das portieren für andere Seiten mit dem gleichen Contenttype. Hier wäre es sicher einfacher, wenn man das ganze in einer separaten Datei macht, aber abgesehen davon spricht eigentlich nichts dagegen. Es macht den Betreiber sehr flexibel, da Änderungen leicht via Browser vorgenommen werden können.

  • Links related für interne Informationsarchitektur

    So, ich habe jetzt das Modul links_related ein wenig angepasst. Wie ich bereits gesagt habe, will ich vor allem meine Beiträge intern verlinken. Das Problem ist jedoch, dass man hier die Links meistens immer mühsam zusammensuchen muss. Daher habe ich das links_related Modul ein wenig abgeändert:

    • Es ist nicht mehr ein Textfeld, sondern ein Dropdown mit allen Einträgen, welche vorhanden sind.

    Ich würde gerne noch folgendes machen:

    • AJAX Autocompletion -> ist einfach die Beiträge wieder zu finden.
    • Bi-direktionales anzeigen von Links. D.h. wenn ich von Seite X auf Seite Y einen Link machen, dann soll dieser automatisch auf Seite Y auch angezeigt werden.
    • Die Möglichkeit auch externe Links von Hand eingeben.

    Ok, bis dahin dauert es noch ein Weilchen… Der Hack war eigentlich ganz einfach:

    Datei: links_related.module

    Das Form Feld URL hat vorher so ausgesehen (Zeile 336)

    'textfield',
    '#default_value' => $link['url'],
    );
    ?>

    Neu sieht es so aus:

    nid] = $row->title;
    }

    $entry['url'] = array(
    // '#type' => 'textfield',
    '#type' => 'select',
    '#options' => $options,
    '#default_value' => $link['url'],
    );
    ?>

    Ist alles im Moment noch fest reincodiert, liesse sich aber leicht anpassen. Vielleicht muss ich mal mit den Jungs reden…

    Unten sind noch ein paar Screenshots, wie es in Action ausschaut (nicht viel anders als das original Modul)

  • Probleme mit dem Modul download counter

    Wer gerne seine Downloads zählen will kann das sehr einfach machen: Download Counter. Leider gibt es hier eine Restriktion:

    • Download Methode muss auf Privat gesetzt werden (admin/settings/file-system)

    Diese ist standardmässig auf public. Was ist der Unterschied? Im Public gehen die Node Anhänge ins Verzeichnis files. Im Private da kommen sie ins Verzeichnis system/files

    Ja, das kann zu Problemen führen, besonders, wenn man den Schalter in einem laufenden System umschaltet. Das Image CCK Feld lädt seine Sachen weiterhin ins Verzeichnis files. Image Cache sucht jedoch unter system/files. Die Lösung wäre wohl, im Image CCK den Pfad wie folgt zu ändern ../system/files, nur leider geht das nicht.

    Aus Zeitgründen konnte ich leider keine weiteren Tests durchführen und muss diese auf später verschieben (nach den Prüfungen). So gibt es halt vorläufig keinen Download Counter.

     

    Update 17:03: Ok, es ist definitiv image_cache und private Download funktionieren nicht 🙁 -> Lullabot Artikel erklärt eine Alternative

  • Was ist ein Cronjob

    Ein Cronjob kommt aus der UNIX Welt. Es gibt keine richtige Übersetzung für «cron». Wie auch immer, ein Cronjob ist ein Task, welcher ein Computer periodisch unabhängig ausführt. Es wird vor allem da verwendet, wo Daten verarbeitet werden müssen, wenn es nicht auf die Zeit drauf an kommt. Am Besten an einem Beispiel:

    Beispiele für dein Einsatz eines Cronjobs

    1. Die Datenbank einer Webseite sollte regelmässig gesichert werden (z.B. einmal täglich). Man könnte einmal pro Tag sich einen SQL Dump erstellen (von Hand). Klaro ist das nicht sehr effizient, denn was passiert, wenn man in den Ferien ist? Daher kann eben ein sog. Cronjob gemacht werden, der 1x pro Tag die DB sichert (natürlich passiert das vornehmlich in der Nacht, wenn der Server sowieso nicht allzu stark belastet ist).
    2. Cache leeren (z.B. immer um Mitternacht)
    3. Rechenintensive Tasks durchführen, welche nicht Zeitkritisch sind und daher auf Randstunden verschoben werden können.
      Also eigentlich ist es nichts kompliziertes (solange es funktioniert) und solange man sich nicht mit den Details beschäftigt, sondern es einfach benutzt.

    Cron einrichten

    Unter Linuxsystem ist es trivial einen Cron einzurichten. Terminal öffnen und dann einfach folgende Zeile eingeben:

    crontab -e
    

    Danach kann der Crontab via vim, nano oder so editiert werden. Dabei gilt zu beachten, dass das Script mit dem Benutzer ausgeführt wird, der den Cron eingerichtet hat. Wenn ein auszuführendes Script also Root Rechte benötigt, ich den Crontab jedoch mit dem User «rapsli» einrichte, dann wird das nicht funktionieren.

    Und Konkret

    Minute Stunde Tag Monat Wochentag Bedeutung
    0 0 * * * Täglich null Uhr
    5 * * * * Fünf Minuten nach jeder vollen Stunde
    */5 * * * * Alle 5 Minuten
    59 23 * * 0 Jeden Sonntag (Sonntag kann als 0 oder 7 geschrieben werden) um 23:59 Uhr
    20,30 1 * * 1-5 Montags bis Freitags jeweils um 01:20 und 01:30 Uhr
    0 1 1-7 12 1 Am 1. bis 7. Dezember sowie an jedem Montag im Dezember um ein Uhr nachts

    Oder noch konkreter

    5 * * * * /home/rapsli/somescript.sh
    

    -> Immer um 5 nach jeder vollen Stunde wird das Script somescript.sh ausgeführt.

    Reboot Spezialtrick

    Es ist übrigens auch möglich nicht einen zeitlichen Trigger für einen Cronjob zu setzen, sondern das Event Reboot (Neustart). Das würde dann wie folgt aussehen:

    @reboot /home/rapsli/somescript.sh
    

    Cronjob für Windows

    Ich glaube, das habe ich nie verwendet und mir war auch nicht bewusst, dass es so etwas gibt. Eine kurze Google Suche hat auch meinen Horizont erweitert: der Task Scheduler. Ich würde mal vorsichtig behaupten das ein Cronjob in der Windows Welt eher eine Schattendasein ist, während er in der Linux Welt allgegenwärtig ist.

  • Drupal Themes vs. WordPress Themes

    Oftmals hört man von den Drupal Gegnern, dass Drupal einfach nicht genügend gute Themes hat. Das mag durchaus sein (leider). Soeben habe ich ein ein Post auf Smashing Magazin gelesen – 100 Excellent Free WordPress Themes. Ich muss sagen, wenn man die so sieht, dann kann man schon ein wenig neidisch werden. Auf der anderen Seite ist es auch eine Motivation für:

    • Eine gute Liste mit Themes zu machen, denn es gibt sie auch, z.B. alldrupalthemes (die sehen eigentlich wirklich hübsch aus). Und ja, es gibt Listen, aber diese sind meiner Meinung zu klein, bzw. haben zuviel Müll drin.
    • Ein paar Themes zu portieren. Eigentlich ist es ja wirklich nicht so eine Sache. Warum nicht einfach ein paar Joomla oder WordPress Themes nehmen und diese portieren?

    Und wieder gibt es zwei Projekte mehr, an welchen ich gerne Arbeiten möchte, und wofür ich keine Zeit habe.

     

    Update: Ok, ich habe doch mal einen ersten Schritt gemacht und ein Theme portiert und gleich eine Galerie erstellt.