Archiv der Kategorie 'Programm'

Wordpress Gebrabbel

Seit einiger Zeit laufen interessante Artikelserien zu Wordpress. Nachdem ich ebenfalls Wordpress nutze und daran schraube, schreibe ich hier mal alles zusammen, was mir neu ist und was ich als wichtig erachte. Für weiterführende Infos gibt es den Codex. Wordpress und das Web ändern sich ständig und so werde ich diesen Beitrag gelegentlich aktualisieren (Version 1.0; 03-12-2007)

wordpress logo

Struktur

Templates

Templates sind Dateien, die im Verzeichnis ihres Themes liegen und von Wordpress inkludiert werden, so holt die Funktion get_header() die Datei ‘header.php’ und setzt diese in die aufgerufene ‘index.php’.
Neben der Methode per Funktion die Templates reinzuholen, kann man den Pfad auch direkt angeben. Mit der Konstanten ‘TEMPLATEPATH’ wird automatisch der Pfad zum Theme-Verzeichnis gelegt. Mit der Variable ‘ABSPATH’ zum Wordpress-Wurzelverzeichnis. So kann man beispielsweise jedes beliebige PHP-Skript in Wordpress laden.
Die Templates werden in einer bestimmten Hierachie angelegt, so wird erstmal geschaut, ob die aufgerufene Seite vorhanden ist und falls nicht die ‘index.php’ geladen. Ein Bild im Codexbeitrag verdeutlicht das Zusammenspiel ganz gut. Neu war für mich, dass es eine extra ‘attachment.php’ und eine ‘author.php’ gibt und dass ein Druck auf ein Schlagwort die ‘category.php’ lädt.

Conditional Tags

Mit den Conditional Tags kann man eine Unterscheidung treffen, beispielsweise ob es sich um eine Seite handelt oder nicht. Conditional Tags kommen im Loop vor und auch ber der Gestaltung des Titels kann man damit spielen. Laut Codex kann man diese Tags benutzen, um die aktuelle Seite in der Navigationsleiste hervor zu heben. Ein weiterer Einsatz ist eine Prüfung bei der Veröffentlichung eines Kommentars, ob der Beitragsautor den Kommentar geschrieben hat und daraufhin das Format ändern. Des Weiteren kann man bestimmte Seiten von Suchrobotern ausschließen und andere nicht.

Template Tags

Template Tags sind PHP-Funktionen die in die Templates geladen werden. Diese Template Tags steuern dann das Erscheinungsbild des Blogs. Einer Funktion kann man möglicherweise Parameter zuwerfen. Diese Funktionsparameter sind Variablen, die diese Funktion benötigt.

Es gibt eine Übersicht über die Template Tags in deutsch und eine Codex-Kategorie. Grundsätzlich muss man sich oft im Sourcecode orientieren und will vielleicht mal die Funktion genau unter die Lupe nehmen, hier entdeckte ich eine Onlineansicht des Wordpress Codes mit Syntax-Highlighting. Man sieht sich also den Code der ‘index.php’ an, dort steht der Loop, dort steht die Funktion ‘the_content’, ein Mouseover zeigt den Ort der Funktion an, hier die ‘wp-includes/post-template.php’.

Es gibt drei Arten von Template Tags: einmal haben wir welche die keine Parameter benötigen, einmal haben wir welche die Parameter, wie gewöhnliche PHP-Funktionen akzeptieren (Function-Style-Parameter) und es gibt Funktionen die Parameter erwarten und dabei einen Query-String nutzen, das funktioniert ähnlich, wie wenn man Variablen via GET-Methode von Skript zu Skript schickt. Diese Funktionen sind meist nur Wrapper für die Funktionen, die Parameter und zwar sehr viele Parameter erwarten.

Frank Bültge nennt in seinem Buch das Beispiel wp_get_archives und get_archives: wp_get_archives ist die gleiche Funktion wie get_arhives nur mit Parametervoreinstellung und einer kleinen Abfrage, ob eine Änderung zur Voreinstellung mitgeliefert wurde. Als Programmierlaie klingelt bei mir bei der GET Methode gleich immer die Sicherheitsrassel, dafür ist dann wohl auch die wpspecialchars – Funktion da.

Ein Fehler, der mich lange aufhielt war, dass ich beim Definieren einer Funktion die erwarteten Parameter mit einem $-Zeichen beschreiben muss, beim tatsächlichen Funktionsaufruf können diese aber fehlen – ich hoffe das war das fehlende Mosaiksteinchen zu meinem ersten Plugin.

Template Tags können auch ineinander verschachtelt werden, also ein Template Tag ist sozusagen ein Parameter eines anderen Template Tags. So binden viele Template Tags wiederum andere Funktionen aus dem Wordpress Kern ein.

Eigene Funktionen kann man auch definieren und als Plugin andocken. Die so definierten eigenen Funktionen stehen dann in der Datei ‘functions.php’ im Themeordner und werden von Wordpress eingebunden.

Custom Fields

Custom Fields sind Textfelder die der Schreiber füllen kann. Ich habe sie auch hier aufgeführt, da man mit diesen die Erscheinung des Blogs oder auch des Quelltextes im Header beeinflussen kann, ähnlich wie bei den Template Tags – nur dass man die Fields dann im Backend beim Schreiben eines Beitrages erst mit Inhalten füllt.

Workflow

Quicktags sind bestimmte Kommentare im HTML Quelltext die nachdem Sie vom Editor abgeschickt werden, eine bestimmte Aktion in Wordpress auslösen. Die Eingabe von <(!–nextpage–)> führt zu einem Seitenumbruch und die Eingabe von <(!–more–)> bestimmt die Länge des Auszugs. Die Klammern müssen weg, ich schrieb sie nur, damit mir Wordpress hier nicht wirklich einen Seitenumbruch oder ein “weiterlesen” reinklatscht. Im Codex findet man eine Übersicht zu allen Quicktags und gerade für den Kommentierenden bieten sie die Chance deren Text zu formatieren.

TinyMCE ist der Standardeditor in Wordpress. Ich nutze diesen nur zum Formatieren. Den Text schreibe ich mit Vim, meinem mächtigen Texteditor. Es gibt ein Firefox-Addon namens “It’s All Text!”, dies ermöglicht alle Textfelder, auf die der Browser zugreift mit einem Desktopeditor zu bearbeiten – das finde ich extrem hilfreich, weitere Infos gibt es in meinem Artikel bei DrWeb zum Hintergrund dieser Maßnahme.

Als Zusatz nutze ich das Programm Gimp für die Bildbearbeitung und Inkscape für Zeichnungen, falls ich es mit Gimp nicht hinbekomme. Vektorgrafiken bin ich kein Spezialist, wie man sich aus dieser Äußerung denken kann. Als Betriebsystem habe ich Ubuntu. Alles in allem kostet mich also das Bloggen nur die Gebühr für meinen Webspace.

Entwickeln

Themes

Eine Internationalisierung kann man durch das voranstellen der Funktion _e(’blabla’) erreichen oder wenn man einen Text im Funktionsnamen ändern will mit ‘__(’blabla’)’.

Durch eine Funktion muss eine Anfrage an den Server gestellt werden – das ist schlecht, wenn es um die Performance geht und so macht es Sinn das eigene Theme nicht zu internationalisieren. Ich kann nicht einschätzen, wieviel Zeit ein internationalisiertes Theme länger für einen Seitenaufruf braucht als ein lokalisiertes.

Das Gleiche ist mit den Angaben im Header, man kann dort viele Sachen via Funktion abfragen (Spracheinstellung, Zeichensatz und Schreibrichtung, ‘lang’- und ‘dir’-Attribut des HTML-Tags im Header) – gut fürs öffentliche Theme, das eigene lieber festtackern. Die Voreinstellung ist bei den Suchrobotern index follow, somit kann man sich diese Angabe sparen, bzw. muss extra eine Angabe setzen, wenn man das indizieren verhindern will.

Das xfn im Header fördert das semantische Web, ist wohl ein Microformat, und im Backend kann man seiner Blogroll erweiterte Angaben machen. Eine ähnliche Geschichte sind die Geotags, so kann Google diese Angabe beispielsweise nutzen und bei der Eingabe der dazugehörigen Stadt die Seite höher bewerten.

Die Weiterblättern-Funktion zwischen den Seiten gibts ein Plugin namens ‘Pagebar’, und eine Funktion die ich mir da mal ansehe ist die ‘posts_nav_link’ und die ‘previous_post_link’ und die ‘next_post_link’.

Bei den Funktionen muss man aufpassen, so liefern die Funktionen eine ID nun zweimal, sofern man ein Layout nutzt, welches auf Yaml setzt, nämlich die ID “navigation” – eine Lösung beschreibt Micha.

Neben der Weiterblättern-Funktion am Seitenende kann eine sogenannte Breadcrumbnavigation sinnig sein. Ich werde noch darauf verzichten, da ich versuche stark verschachtelte Seitenhierachien zu vermeiden und denke in meinem Fall besteht da vorerst kein Bedarf.

Der Loop ist das Kernstück in Wordpress und dort gibt es eine Vielzahl der Conditional Tags. Im Loop kann man einige sinnvolle Ergänzungen einbauen: ich werde einen Verweis zum Glossar einbauen und ein Plugin (’Share this’) liefert einen Link, mit welchem der Leser ein ‘Social Bookmark’ setzen kann oder den Feed des Blogs abonniert. Der Loop kann sinnvoll ergänzt werden und so kann man mit diversen Hintergrundfarben und Grafiken spielen. Bei Yaml bietet es sich an, dass man aus Suchmaschinensicht den Content in der Col1, welche im Quelltext ganz oben steht einspeist. Ich muss mir das mal durch den Kopf gehen lassen und in der Yaml-Doku nachlesen, was da die Vor- und Nachteile sind.

Die Suchbox sollte prominent verlinkt sein. Das sah ich bislang anders und ich werde mir da etwas einfallen lassen. Der oben erwähnte Link im Loop zum Glossar wird vorerst reichen.

Widgets und eine händische Sidebar müssen sich nicht ausschließen. Man kann die Widgets-Funktion also auch erst ab halber Sidebar aufrufen. Gerade wenn man ein Yaml-Theme nutzt ist es für den Laien ist es oftmals schwierig zu entscheiden, ob nun eher in der Yaml-Dokumentation oder im Wordpress-Codex nachgesehen werden soll.

Einige Blogs legen viele Funktionen in den Footer, wie das geht beschreibt Perun und erklärt auch gleich wie er via Plugin ‘Get Recent Comments’ die Trackbacks von den Kommentaren trennt.

Yaml stellt für die Navigation bereits einige Möglichkeiten vor, eine Liste der Wordpressseiten bietet sich an und gerade wenn es dann verschachtelt wird, wirds tricky. Michael hat sich da schon einen Kopf gemacht.

Yaml bedient mit einem Stylesheet den Internet Explorer mit einem Conditional Comment, gerade die Pfadangaben können bei Yaml Probleme bereiten und so sollte man gegenprüfen ob alle Stylesheets fassen. Die Angabe ‘/’ beim Start des Pfades lässt die Suche im Wurzelverzeichnis starten und, die Wordpress-Variable ‘ABSPATH’ und ‘TEMPLATEPATH’ wurden oben bereits erwähnt.

Bei der Sicherheit sollte man darauf achten, die Funktion wpspecialchars zu nutzen, wenn etwa Daten über die URL reinkommen.

Bei jedem Theme hat man eine Lizenz, die es zu respektieren gilt, beispielsweise ist Wordpress zwar OpenSource, aber Yaml steht beispielsweise unter einer CreativeCommons. In jedem der Projekte stecken wohl tausende von Stunden und so sollte der Link am Ende nicht fehlen, sofern er verlangt wird.

Weiterführende Links:
* Theme Tutorial – Frank Bueltge
* Theme Tutorial – Perun
* Theme Tutorial samt Yaml – Michael Preuß

One Editor to rule them all … Vim

Bei mir findet derzeit ein Umdenken statt: anstatt für jede von mir genutzte Sprache ein Werkzeug zu verwenden, fuxxe ich mich in einen Editor.

Vimlogo

Anforderungen

WYSIWYG-Editoren will ich nicht, da ich gerne direkt im Code werkel. Mein Editor sollte schnell zu bedienen sein, alle von mir genutzten Sprachen unterstützen, auf alle n von mir genutzten Computern installierbar sein und natürlich noch etwas mehr können, damit ich bei bei neuen Kenntnissen nicht gleich an Grenzen stoße. Als Internetinteressierter treibe ich mich vielleicht auch mal auf  Servern rum – ohne grafische Oberfläche und so sollte der Editor also auch gut in einer Konsole integrierbar sein. Ach ja, auch bei der Textverarbeitung soll das Bürschchen überzeugen! Gibts nicht ? – Gibts doch: Vi, Vim bzw. Gvim.

Vim bzw GVim als Multitalent

Der Editor Vim ist standardmäßig bei Unix Systemen an Bord, kann Syntaxhighlighting und Code Completion für sehr sehr viele Sprachen, läuft auf vielen Systemen und Vim-Experten sagen, wenn man das Ding kann, dann ist man verdammt schnell.

In diesem Beitrag sammle ich mal fortlaufend meine Schlüsse auf meiner Reise mit  GVim und Vim. Mal schauen, wie lange es dauert, bis ich mich Vim-Fuxx schimpfen kann.

Erstmal zwei Videos, einmal gibts einen Screencast für Einsteiger auf Learn2Use auf deutsch, dann einen Vortrag vom Vim-Entwickler Bram Molenaar “7 Habits For Effective Text Editing 2.0” .

Viel Spaß!

Objekte und Youtube-Videos in Wordpress einbinden

Will man beispielsweise Youtube-Videos oder andere Objekte ins Wordpress-Blog einbinden macht einem der TinyMCE-Editor manchmal einen Strich durch die Rechnung: er stellt das schließende Objekt-Tag einfach direkt hinters öffnende Objekt-Tag und so geht das Design flöten. Mit drei Kniffen schafft man Abhilfe.

Editor ausschalten

Wordpress ist je bekanntlich ein Mehrbenutzersystem und so legt man einfach einen neuen Nutzer an, bei diesem wechselt man im Backend, dem Admin Control Panel, kurz ACP, die Benutzervoreinstellungen. Also, neuen Nutzer anlegen, als dieser einloggen, Reiter “Benutzer” klicken, Reiter “Dein Profil”klicken und den Haken bei “beim Schreiben den WYSIWYG-Editor benutzen” entfernen. Dann das Profil aktualisieren und den Beitrag schreiben. Die Video-Posts schreibt man dann einfach immer mit diesem Nutzer.
Ebenfalls kann man versuchen, im ACP unter “Einstellungen” “Schreiben” bei der Formatierung den Haken “WordPress soll falsch verschachteltets XHTML automatisch korrigieren” zu entfernen und die Einstellungen aktualisiert. Dann sollte es klappen mit Youtube.

Div rum und Deckel drauf

Das ist die zweite Variante. Im Wordpress-Forum las ich diesen Tipp, welcher bei mir auch funktionierte! Man lässt alles beim Alten und verfasst den Beitrag. Nun klickt man auf den Reiter “Code” und fügt den Youtube-Code des Videos ein. Jetzt schreibt man einfach vor den Youtube-Codebrocken ein <div> und danach ein </div> und schwupps, sieht das Video nun im Firefox-Browser auch ordentlich aus.

Für weitere Methhoden und Tipps freu ich mich auf einen Kommentar.

Weiterführende Links:

* Wordpress-Foren-Thread
* Wordpress FAQ zum Editor ausknippsen

Screenshots mit Gimp aufpeppen

In meinem ersten Videotutorial werde ich zeigen, wie man einen Screenshot mit dem Programm Gimp aufpeppt. Erst werde ich einen Abschnitt durch einen Kasten hervorheben und das Bild anschließend zuschneiden.

Screenshots kann man bestimmt auch einfacher machen, aber die hier geschilderte Vorgehensweise bietet viele weitere Anwendungsmöglichkeiten. Gezeigt wird der Umgang mit Pfaden, Hilfslinien, Ebenen und dem automatischen Zuschneiden.

So sieht es aus wenn alles fertig ist:

Gimp ist ein mächtiges Werkzeug – dazu läuft es auf vielen Betriebssystemen, ist Open Source und kostenlos. Die Photoshop-Alternative eignet sich somit auch zur Bildbearbeitung. Ich hoffe ich konnte jedem die erste Scheu nehmen und vielleicht riskiert ihr ja einen Download. Unter Windows kriegt ihr das Tool hier und unter Linux ist es meist vorinstalliert oder in einem Repository.

Der Screencast ist schnell und dreckig – ich habe den Ton via Handy aufgeommen, als Bildschirm-Aufnahme-Software “Xvidcap” unter Ubuntu verwendet und mit xxxx den Ton unters Video gelegt. Zum konvertieren der Dateien nutzte ich das vortreffliche Online-Tool Media-Convert.

Viel Spaß!

Hier geht es zum Download des Screencasts (”sc01_gimp_screencast” 4 Minuten; 25 Mb)

  • als WMV-Datei (Rechtsklick auf Datei und “Ziel speichern unter”)
  • als AVI-Datei (Rechtsklick auf Datei und “Ziel speichern unter”)

Die Arbeitsschritte im einzelnen:
Browseransicht – Ausschnitt ausfindig machen – Screenshot anfertigen (Ubuntu: Alt+Druck) – Browser minimieren und Screenshotbild via Gimp öffnen – Zielbereich auswählen – Zielbereich ausschneiden – Neue Ebene einfügen – Auswahl einfügen – Auswahl verankern – Hintergrundebene löschen – Bild automatisch zuschneiden – Hilfslinie horizontal einziehen (links Klick in die Seite und nach unten ziehen) – Hilflinie vertikal einziehen – Pfadwerkzeug auswählen – Eckpunkte setzen – Rote Vordergrundfarbe wählen – Pfad nachzeichnen (Pixelbreite des Strichs bestimmen und Option Pinsel als Hilfsmittel anklicken – Bild speichern unter – Name und png wählen – Abspeichern – fertig.Anmerkung:
Dieser Screencast hat mir viel Kopfzerbrechen bereitet. Ich habe viel Zeit mit dem Lesen in Hilfeforen zugetan und die nächsten Screencasts werden mit Sicherheit richtig fix von der Hand gehen. Folgende Programme kamen zum Einsatz: Ubuntu (Xvidcap, Audacity); Online (Media-convert); Windows XP (Windows Movie Maker, Audacity). Erfreulich zu sehen, dass ich mit meinem Handy Video, Bilder und Ton auf den Rechner überspielen und diese Dateien konvertieren kann.Weiterführende Links:

* Blogatelier Artikelserie Gimp-Bedienung
* Blogatelier Artikelserie Bildbearbeitung
* Projektseite Gimp

Tipps zur Arbeit mit Googlemail

Warum Googlemail?

Googlemail bietet 3 GB Speicher. Daraus folgert Google, dass man Mails nicht mehr löschen muss. Das kostenlose Konto bietet Schutz gegen Spam und Viren. Ihre Daten werden auf den Googleservern gespeichert und am rechten Bildschirmrand sind Werbeanzeigen zu sehen. Einen Account erhalten Sie durch eine Einladung eines Googlemail-Nutzers.


Mails bearbeiten

Emails sollten zu bestimmten Zeiten bearbeitet werden. Schaufeln Sie sich ein Zeitfenster frei. Sie werden effizienter kommunizieren, wenn Sie mehrere Emails nacheinander abarbeiten.
Fragen Sie sich bevor Sie tippen, ob eine Email die richtige Wahl ist. Manchmal ist ein Telefonat eine bessere. Ähneln sich ihre Mails könnten Sie durch Textbausteine Zeit sparen. Fertigen Sie sich Vorlagen an und speichern diese als Entwurf. Mittels „Copy and Paste“ fügen Sie die benötigten Auszüge in ihre Email ein.
Sie können andere Emailadressen auf ihr Googlekonto umleiten. Beim Versenden können Sie die Absenderadresse per Dropdown festlegen. Folglich hätten Sie die Option alle ihre Emails in einem Konto zu verwalten. Sie müssen selbst entscheiden, ob dies in ihrem Fall Sinn macht.
Überlegen Sie sich vor dem Verfassen einer Email, ob Sie die Etikette beachten sollten, und fassen Sie sich so kurz wie möglich. Kurze, knappe und klare Emails sind am verständlichsten.
Picken Sie sich zu zitierende Stellen heraus und schreiben Sie direkt darunter ihre Antwort. Der andere wird es Ihnen danken, wenn er den Halbsatz auf den Sie Bezug nehmen noch einmal sieht. Formulieren Sie Handlungsalternativen für den Empfänger. Sie führen beim Verfassen einer Mail meist schon einen Perspektivwechsel durch. Diesen Gedankengang kann sich der Empfänger dann sparen und ihr Team die dafür notwendige Zeit. Beschreiben Sie die Folge, wenn Sie bis zu einem bestimmten Zeitpunkt keine Antwort erhalten. Der angegebene Zeitraum muss so groß sein, dass der Empfänger die Mail gelesen hat. Schreiben Sie eine aussagekräftige Überschrift und vermerken Sie „-Dringend-“, wenn Sie schnell eine Antwort brauchen.
Diese Tipps sollten die benötigte Zeit der Kommunikation für Sie und ihr Umfeld deutlich verringern.

Mehr übers Thema gibts in meinem Artikel bei DrWeb.

Web2.0 Dienst für Präsentationsfolien: Slideshare

Im Weiterbildungsblog wurde ich auf den Dienst Slideshare aufmerksam. Klar, dass sich der Dienst noch im Beta Status befindet!

Gerne hätte ich direkt auf den Beitrag im Weiterbildungsblog geantwortet, aber dies gelang mir nicht. Erst hätte ich das Anzeigen von Bildern in den Browsereinstellungen erlauben müssen, dann las ich, dass registrierte Nutzer Beiträge schreiben und Beiträge kommentieren können. Extra registrieren wollte ich mich nicht, somit antworte ich hier bei mir im Blog. Vielleicht habe ich mich auch einfach dumm angestellt?!

Zum Dienst:
Es gibt die Möglichkeit Slides hochzuladen und diese zu taggen.
Man kann anhand der Tags auch ganz passende Leckerbissen finden.

Zwei Beispiele:
OOP-Präsi und eine über Dali.

Ich werde den Dienst in jedem Fall im Auge behalten und immer mal vorbeischauen, wenn ich eine Präsentation erstellen soll.

Leider habe ich noch nicht herausgefunden, wie man die Slides downloaden kann.

Falls es jemand herausfindet oder einen Workaround hat, bitte ich um eine kurze Anmerkung.
Vorab herzlichen Dank!

Teil einer Powerpoint-Präsentation als Endlosschleife darstellen

Ziel:
Einige Folien einer Präsentation sollen in einer Endlosschleife laufen, während per Knopdruck die Schleife jederzeit beendet werden kann.

Theorie:
Man benutzt zwei Präsentationen.
Einmal eine Hauptpräsentation und eine Schleifenpräsentation.

Man setzt auf der Austrittsfolie der Hauptpräsentation einen Hyperlink auf die Datei mit der Schleifenpräsentation.
Im Folienmaster der Schleifenpräsentation setzt man einen Hyperlink zurück zur Wiedereintrittsfolie der Hauptpräsentation.
Der für eine Endllosschleife typische Wechsel erfolgt durch viele aufeinanderfolgende Folien, die sich um die zu verändernde Kleinigkeit unterscheiden. Man wählt einen Folienübergang nach einer bestimmten Zeitdauer (bspw. 2 Sekunden) und erhält so den Wechsel. Damit nach einem erfolgreichen Durchlauf wieder von vorne begonnen werden kann, müssen wir die die Kioskansicht bei den Präsentationseinstellungen verwenden.

Das war es schon. Fertig ist die Endlosschleife.
Lege die Präsentationen immer in den gleichen Ordner, damit Powerpoint keine Schwierigkeiten beim Finden der Hyperlinks hat.

Sollten Fragen auftauchen, erstelle einfach einen Kommentar und ich werde sehen, was ich machen kann.

Viel Erfolg!

  • Hallo

    • Dieser Blog ruht derzeit.
      Dennoch viel Spaß!
  • Werbung