Alle Artikel mit Tag “Themes”
In einem aktuellen Projekt stellte sich mir folgende Aufgabe:
Von den (mehreren) einem Post angehängten Bildern sollte das ERSTE Bild in Medium-Größe im Beitrag angezeigt werden.
Dabei sollte die Galerie-Sortierung des Posts für die Bildreihenfolge zu Grunde gelegt werden. Der Kunde soll also durch sortieren auch entscheiden können, welches Bild auf der Post-Seite angezeigt wird.
Bei Klick auf das Bild sollte eine Greybox (Plugin Greybox-Integrator) geöffnet werden, in der dann alle restlichen Bilder, die am Beitrag hä¤ngen angezeigt werden (durch Pfeile navigierbar). Dieser Teil kann durch kleinste Code-Änderungen natürlich so angepasst werden, dass sich eine andere Viewer-Box öffnet.
Weil es gerne Probleme gibt, wenn man den Code aus dem Fenster unten kopiert, hier der Download als Textdatei.
Hier ist der Code (muss in den Loop auf index.php oder category.php oder auch single.php)
Wenn Dich das froh gemacht hat, kommentiere doch einfach
<!--Automatic Greybox-->
<?php
//Die zum Post gehoerenden Bilder ins Array $images schreiben
//Put images from post in to array $images. Order by menu order defined in post gallery
$images = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );
//Pruefen, ob dem Beitrag Bilder angehaengt wurden.
//check if there are any images attached to the post
if (isset($images))
{
//Den Zaehler auf 0 setzen
//set counter to 0
$count=0;
//Alle Bilder im Array $images nacheinander durchlaufen
//go through all images in array $images
foreach( $images as $image )
{
$imageID = $image->ID;
//fuer jedes Bild im Array die URL von sowohl der Mittleren, als auch der grossen Groesse ermitteln.
//get medium and large image url for image
$medImageSrc = wp_get_attachment_image_src($imageID, $size='medium', $icon = false);
$largeImageSrc = wp_get_attachment_image_src($imageID, $size='large', $icon = false);
//Wenn es sich um das erste Bild im Array handelt...
//If it's the first image in the array
if ($count==0)
{
//Den Greybox-Code mit einem Vorschaubild ausgeben
//output Greybox Code with medium size preview
echo"<a href='$largeImageSrc[0]' rel='shadowbox[Bilder]'><img src='$medImageSrc[0]' border='0'></a>";
}
//alle Bilder ,die nach dem erstern Bild kommen
//this is for all the images that come after the first one
else
{
//unsichtbare Greybox-Verknuepfung darstellen.
//create invisible Greybox-Links without preview image
echo"<a href='$largeImageSrc[0]' rel='shadowbox[Bilder]'></a>";
}
//Zaehler erhoehen.
//increase counter
$count++;
} //foreach
}
?>
<!--ENDE Automatic Greybox -->
Themes für Dummies – Teil 1
Vom 02.09.2008
Vorwort
Mit diesem Tutorial richte ich mich an Menschen, die zumindest ein rudimentäres Verständnis von HTML, CSS und im optimalen Fall auch von PHP haben. Notwendig ist es nicht zwingend, wird aber im Verlauf der Arbeit mit Themes die Sache sehr vereinfachen.
Das in diesem Tutorial erstellte Theme wird sehr einfach sein und soll nur als Einstieg in die Verwendung der WordPress Template Tags und die Funktionsweise eines Themes dienen. Die Erweiterung in viele viele Richtungen ist möglich.
Im Normalfall beinhalten Themes, die zum Download erhältlich sind eine Reihe verschiedener Dateien zu verschiedenen Zwecken. In diesem Tutorial werden wir ein Theme aus nur zwei Dateien erstellen (es heisst ja nicht umsonst “Themes für DUMMIES”
) . Das funktioniert und ist auch für viele Zwecke schon ausreichend. Die Erweiterung des Themes lernen wir im zweiten Teil!
Erstelle/downloade/kaufe ein Design, wie es Dir gefällt!
Zuerst brauchen wir natürlich ein fertiges Design im normalen HTML-Format, das Dir gefällt. Für dieses Tutorial habe ich auf der Seite http://www.freecsstemplates.org/ ein Design heruntergeladen. (belowthehorizon) Diese Vorgehensweise kannst Du aber natürlich auch für ein vorher von Dir selbst erstelltes Design verwenden.

belowthehorizon
Es gilt zu beachten, dass alle Themes von freecsstemplates.org unter der Creative commons License veröffentlicht wurden. Das heisst, man darf sie herunterladen, verändern, bearbeiten, zum Download anbieten, muss aber den Link zur Seite freecsstemplates.org (am Besten im Fussbereich) erhalten. Das ist doch sehr nett, oder?
Dieses Design ist für unsere Zwecke (für den Anfang) gut geeignet. Es hat nur zwei Spalten und kein horizontales Menü. Wir wollen ja klein anfangen
Entpackt sieht das Design dann so aus :

- Design entpackt
Unsere erste Amtshandlung hier wird sein, die CSS-Datei in den WordPress-Standard “style.css” umzubenennen.
Gleich danach öffnen wir die index.html und speichern sie gleich wieder ab. Diesmal aber mit der Endung .php. Wir haben also jetzt schon die zwei Dateien, die für ein lauffähiges Theme nötig sind zusammen. Die index.php und die style.css.
Weiter geht’s …
Füge die Theme-Informationen zur style.css hinzu
Wir öffnen die style.css und fügen gleich an den Anfang der Datei folgenden Text ein:
/*
Theme Name: Hier kommt der Name des Themes hin
Theme URI: http://www.die-seite-des-themes-falls-vorhanden.de
Description: eine kurze Beschreibung
Author: Dein Name
Author URI: http://www.deine-seite.de
Version: Eine Versionsnummer (optional)
*/
Den Ändern wir natürlich dann noch so, dass er zu unserem neuen Projekt passt. Also geben wir dem Kind einen Namen und fügen auch noch unsere Links hinzu.
Damit ist die css-datei vorbereitet.
Jetzt geht’s an’s Eingemachte. Wir legen los.
Füge die Head-Informationen ein
Tipp: Bei Bueltge.de gibt es schöne Cheatsheets für die Erstellung von WP-Themes. Es lohnt sich sehr, diese auszudrucken.
Tipp: In der WordPress-Doku sind alle Template-Tags mit ihren erweiterten Möglichkeiten aufgeführt.
Damit unsere Vorlage auch die dynamischen Elemente von WordPress anzeigt, müssen wir natürlich noch etwas tun. Wir fangen im Kopfbereich an und ersetzen den kompletten Kopfbereich bis zum </head>-Tag mit folgendem Code: (Dieser Code ist nur ein Beispiel. Auch hier sind viele Varianten denkbar und möglich.)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
<?php language_attributes(); ?>> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
<!-- leave this for stats -->
<title><?php bloginfo('name'); ?><?php wp_title(); ?></title>
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>"
type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml"
title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" /> <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<?php wp_head(); ?>
</head>
Der Code enthält den Titel unseres Weblogs, den Link zum Stylesheet und die RSS- und Pingback Informationen. Besonders wichtig ist auch der Tag <?php wp_head(); ?> . Das ist praktisch ein Platzhalter für HEAD-Funktionen, die von Plugins benötigt werden. Wenn z.B. ein Plugin eine eigenes Stylesheet oder JAVASCRIPT verwendet, kann es an dieser Stelle seine eigenen Style-Informationen dynamisch einfügen.
Weiter geht es mit folgenden Zeilen, die noch in unserer Vorlage zu finden sind:
<h1><a href="#">Below the Horizon</a></h1>
<h2><a href="http://freecsstemplates.org/">by Free Css Templates </a></h2>
Hier wäre es ja schön, wenn später der Titel und die Beschreibung UNSERES WordPress-Blogs erscheinen würden. Also fügen wir noch die Template Tags <?php bloginfo(‘name’); ?> (für den Blog-Titel) und <?php bloginfo(‘description’); ?> (für die Beschreibung) an Stelle der alten Inhalte ein. (Diese Werte kannst Du in der WordPress Verwaltung jederzeit ändern. ) Das sieht dann so aus:
<div id="header">
<h1><?php bloginfo('name'); ?></h1>
<h2><?php bloginfo('description'); ?></h2>
</div>
Wenn wir erreichen wollen, dass der Titel ein Link auf unsere Startseite wird, können wir das tun, indem wir auf <?php bloginfo('url'); ?> verlinken. (Du siehst, es lohnt sich, die WordPress-Doku mit den Template-Tags immer nebenbei geöffnet zu haben
)
Füge den Code für das dynamische Menü ein
Weiter im Text. Als nächstes sehen wir den Code für die linke Menüleiste.
Der WordPress-Menü-Code wird dieses statische Menü unserer Vorlage ersetzen. Hier gibt es eine schier unerschöpfliche Anzahl an Möglichkeiten der Menügestaltung. Wir können uns entscheiden, Alle Seiten, alle Kategorien und alle Links hier anzuzeigen. Oder wir verlinken nur die Kategorien und die Login-Buttons. Hier muss der Designer sich entscheiden. In unserem Beispiel nehmen wir die Seiten, Kategorien und die Anmeldung.
Tipp: In einem späteren Teil von “WordPress-Themes für Dummies” werden wir lernen, wie wir unser Theme widget-fähig machen können, dann sind diese Informationen sowieso hinfällig, da dann ja die Auswahl der anzuzeigenden Menüelemente ganz einfach mit Widgets erledigt wird.
Aber kein Haus ohne Fundament, fangen wir also mit der alten Schule an!
Bisher steht im Menü statischer Text. Den wollen wir durch dynamische Elemente ersetzen. Wer ängstlich ist, kann den “alten” code auskommentieren, bis alles funktioniert. Aber weg muss er so oder so
. Wir löschen oder kommentieren alles zwischen <div id=”menu”> und dem abschliessenden </div>.
Und wieder mit Hilfe der WordPress-Doku können wir uns das gewünschte Menü zusammensuchen. Wie gesagt wollten wir in diesem Beispiel die Seiten, die Kategorien und die Anmelde-Links anzeigen lassen.
Legen wir also los… Fangen wir mit den Seiten an. Um Links zu allen in WordPress angelegten Seiten anzuzeigen verwenden wir den Template-Tag <?php wp_list_pages( ); ?> . Wir verwenden hier erstmal eine einfache Version, nämlich:
<h2>Seiten</h2>
<ul>
<?php wp_list_pages('title_li='); ?>
</ul>
Wir lassen also alle unsere Seiten als Link anzeigen und wollen, dass diese Liste kein Titel-Listenelement hat.
Dann wollen wir uns alle Kategorien unseres Blogs als Links anzeigen lassen. Nichts leichter als das:
<h2>Kategorien</h2>
<ul>
<?php wp_list_categories('title_li='); ?>
</ul>
Und zuletzt fügen wir noch den Block mit den Links zum Registrieren, Anmelden etc. ein:
<h2>Admin</h2>
<ul>
<li>
<?php wp_loginout(); ?>
</li>
<?php wp_register(); ?>
Wie sich die verschiedenen Tags auf das Layout auswirken muss man gegebenenfalls ausprobieren. In diesem Beispiel (wie auch aus der Doku ersichtlich), erzeugt der Tag <?php wp_loginout(); ?> einfach nur einen Link zum Login. Der Tag <?php wp_register(); ?> hingegen erzeugt, wenn man es ihm nicht anders sagt eine Listenform. Aus diesem Grund habe ich, damit es im Design gut aussieht die <li> Tags bei loginout() noch hinzugefügt.
Soooo… damit wir nicht völlig im Blindflug arbeiten, empfiehlt es sich, unser Theme schon einmal zu testen. Dazu laden wir es in den Ordner wp-content/themes/meintheme hoch und aktivieren es unter Darstellung-Themes.
Da wir noch keinen Screenshot hinzugefügt haben, wird das Theme vorerst nur als Text-Link dargestellt. Muss ich erwähnen, dass wir natürlich neben der index.php und der style.css auch noch den Ordner mit den Bildern hochladen???
Unser Theme sollte schon jetzt unseren individuellen Blog-Header oben im Bild zeigen und in der Menüleiste links drei Abschnitte Namens “Seiten”, “Kategorien” und “Admin” mit den entsprechenden Menüpunkten.
Jetzt kommen wir zum Herzstück der ganzen Sache. DEM LOOP (ehrfürchtiges Raunen). Auch hier gibt es unzählige Varianten und Template-Tags, die man ein- oder ausbauen kann. Man kann durch Anpassung des Loops bestimmen, ob und wie die Post-Überschrifen aussehen, ob es zu jedem Post die Kommentarmöglichkeit gibt oder die Uhrzeit angezeigt wird. Alle Informationen zum Loop gibt es wie immer in der WordPress-Doku oder über Google.
Der Loop hat eigentlich nur die Funktion, dass er alle vorhandenen Posts bzw. Seiten einer bestimmten Kategorie abruft und der Reihe nach als Loop (SCHLEIFE) ausgibt.
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="post">
<?php the_title('<h3>', '</h3>'); ?>
<?php the_content('weiter lesen...'); ?>
</div><
<?php endwhile; ?>
<?php else : ?>
<p><?php _e('Leider wurde nichts gefunden.'); ?></p>
<?php endif; ?>
Hier ist wohl eine kurze Erklärung von Nöten. Die erste Zeile startet also die Schleife “Solange es Beiträge gibt….“
Danach folgen die Anweisungen, mit denen wir festlegen, WIE die von der Schleife gefundenen Beiträge auf unserer Seite angezeigt werden sollen. In unserem Beispiel haben wir mit the_title den Titel des Beitrags als H3-Überschrift angezeigt und mit the_content haben wir den eigentlichen Inhalt des Beitrags angezeigt.
Der Loop endet mit <?php endwhile; ?> (wenn alle Beiträge durchlaufen wurden).
Das <?php else : ?> fängt den Fall ab, dass aus unerfindlichen Gründen keine Beiträge gefunden werden konnten.
Wer hier noch weitere Informationen anzeigen lassen möchte, findet in der Doku (ja, langsam wird es nervig
) noch viele weitere Tags, mit denen man den Loop nach Belieben erweitern kann.
Wir sollten zumindest noch die Navigationslinks für den nächsten und vorigen Beitrag einfügen:
<div style="text-align:center;">
<?php posts_nav_link(' · ', 'Vorherige Seite', 'Naechste Seite'); ?>
</div>
Diese Navigation muss natürlich nach dem Loop stehen (also zwischen <?php endwhile; ?> und <?php else : ?> ) weil sie sonst ja durch die Schleifenfunktion unter jedem einzelnen Beitrag auftaucht.
FAST FERTIG!!
Wie wir ja beim Testen schon gesehen haben, läuft damit unser Theme schon. Alle wichtigen Funktionen sind eingebunden, sowohl die Seiten als auch die Beiträge funktionieren, unser Titel wird angezeigt.
Jetzt könnten wir noch den Fussbereich ein wenig anpassen und können uns dann zurücklehnen, weil wir unser erstes Theme für Dummies erstellt haben
STOOOOOOOP!
Eins haben wir noch vergessen. Wir sollten noch einen schönen Screenshot unseres Themes machen und ihn unter dem Namen “screenshot.png” im Theme-Verzeichnis ablegen.
