Flutter – Plugin für eigene Post-Vorlagen nutzen
Custom Fields einfach gemacht!
Da ich mich am Wochenende mit großer Begeisterung der Erforschung des Flutter-Plugins gewidmet habe, möchte ich hier meine “Erkenntnisse” mit Interessierten teilen. Nicht zuletzt, damit ich selber immer nachgucken kann, wie es geht ;-)
Mit dem Plugin “Flutter” (http://flutter.freshout.us) ist es relativ einfach möglich, eigene Vorlagen aus Spezialfeldern zu erstellen.
Häufig gesehen zum Beispiel bei Portfolios oder Mediensammlungen auf WordPress-Basis.
Nehmen wir an, in unserem Beispiel möchten wir eine Liste unserer Lieblings CDs in einer eigenen Kategorie “Lieblingsmusik” anlegen. Jeder Eintrag soll folgenden Spezialfelder enthalten:
- Name des Künstlers (kuenstler)
- Name der CD (cdname)
- Bild (bild)
- Webseite (website)
Zuerst einmal müssen wir dazu natürlich das Plugin installieren und die von Flutter gewünschten Ordner freigeben und / oder erstellen (s. Anleitung auf der Flutter-Webseite)

Wenn das gemacht ist, kann es auch schon losgehen. Im Menü unter “Einstellungen” befindet sich (WordPress 2.7) das Flutter-Menü. Dort wollen wir ein neues Write-Panel erstellen.

In diesem Bildschirm klicken wir auf den Button “+ Create a Write Panel”.
Dort entscheiden wir uns zuerst, ob unsere Lieblings-CDs als Posts oder auf einer Seite dargestellt werden sollen. In unserem Fall sollen ja die einzelnen CDs als Posts in der Kategorie “Lieblingsmusik” gepostet werden.
Bei dem Punkt “Quantity” müssen wir “Multiple” aktivieren, da es sonst nach dem ersten Post (also der ersten CD) nicht mehr möglich ist, weitere Posts in diesem Panel zu erstellen.
Da wir keine weiteren Eingabe- und Änderungsmöglichkeiten mehr wollen, machen wir bei den folgenden Optionen alle Haken weg und speichern dieses Write Panel.
Es erscheint die folgende Ansicht:

Jetzt erstellen wir die Felder, die wir uns oben ausgedacht haben. Wir beginnen mit dem Feld für den Künstler (“Create a Field”):

Das Feld soll (zumindest momentan) noch nicht dupliziert werden können (zu Duplikaten komme ich später), es soll ein Pflichtfeld sein und ein Textfeld sein.
Ähnlich gehen wir nun mit unseren anderen Feldern vor. Bei dem Feld “Bild” müssen wir natürlich auch als Typ “Image” wählen.
Meine Liste sieht jetzt so aus:

Damit ist dieser Schritt abgeschlossen.
Damit wir unseren nächsten Schritt testen können, erstellen wir nun einen Testeintrag. Nachdem wir unser Panel erstellt haben, ist wie durch ein Wunder links unter “Artikel” ein neues Menü erschienen, das uns erlaubt, eine neue CD einzutragen:

Wir drücken also auf “New” und legen eine CD an:
Wir sehen, daß das Write-Panel sehr abgespeckt ist und wir nur noch die Felder sehen, die wir vorher angelegt haben. Wenn wir nun auf “Veröffentlichen” klicken, ist unsere erste CD eingetragen.
Wenn wir uns den Eintrag jetzt auf der Seite ansehen, müssen wir zu unserem Entsetzen feststellen, daß da ja gar nichts ist:

Was bedeutet, JETZT kommen wir zum kniffeligeren Teil. Wir müssen unser Template anpassen, damit es die Spezialfelder, die wir ausgefüllt haben auch anzeigt. Also öffnen wir mal unsere index.php. Dort suchen wir die Stelle an der “the_content” steht. Hier fügen wir vor oder hinter dem Aufruf von the_content folgenden Code ein:
<?php
$musikcd= get('kuenstler');
if($musikcd)
{
?>
<div class="musikcd">
<table class="cdinfo_table" width="100%" border="0" cellpadding="5">
<tr>
<td><span class="label_kuenstler">Künstler :</span></td>
<td><? echo get('kuenstler'); ?></td>
</tr>
<tr>
<td><span class="label_cd">CD:</span></td>
<td><? echo get('cdname'); ?></td>
</tr>
<tr>
<td colspan="2">
<span class="label_bild">Cover:</span>
<?php
echo get_image('bild');
?>
</td>
</tr>
<tr>
<td><span class="label_typ">Webseite:</span></td>
<td><a href="<? echo get('website'); ?>">Webseite besuchen</a></td>
</tr>
</table>
</div><!--CD-->
<?php
}
?>
Erklärung:
Mit dem Code
<?php
$musikcd= get('kuenstler');
if($musikcd)
{
?>
ermitteln wir, ob in diesem aktuellen Post unser Spezialfeld “kuenstler” einen Inhalt hat. WENN, dann wird im Folgenden die Tabelle mit den eingetragenen Daten angezeigt. Wenn das Feld “kuenstler” leer ist, können wir (da es ja ein Pflichtfeld ist) davon ausgehen, daß es sich um einen ganz normalen Beitrag handelt, in dem die Tabelle nicht angezeigt werden soll. So können wir die Posts der Kategorie “Lieblingsmusik” auch in unserem HauptLoop anzeigen lassen, ohne daß ab sofort unter jedem Beitrag eine leere Tabelle eingefügt wird.
Unsere Felder rufen wir (auch wenn wir uns entscheiden, sie nicht wie in diesem Fall in einer Tabelle anzuzeigen) mit dem Code
<? echo get('feldname'); ?>
auf.
Bei Bildern verwenden wir :
echo get_image('bild');
Dann wird die URL des von uns eingefügten Bildes in der Ausgabe von <IMG>- Tags umgeben.
Die Tabelle können wir natürlich nun beliebig mit CSS stylen. Oder auch die Informationen ohne Tabelle in anderer Formatierung ausgeben. Die Möglichkeiten sind berauschend ;-)
DUPLIKATE ANZEIGEN
Noch einen kleinen Nachtrag sollte ich zu diesem Thema machen.
Möglicherweise liegt uns etwas daran, eines unserer Spezialfelder zu duplizieren. Zum Beispiel wenn wir nicht nur das Front- sondern auch das Back-Cover unserer Lieblings-CD eintragen wollen. Oder wenn es mehrere Künstler gibt, die an der CD mitgewirkt haben.
Ich erläutere die Anzeige von Duplikaten am Beispiel des Bildes.
Zuerst müssen wir in den Einstellungen von Flutter das Feld “bild” bearbeiten und duplizierbar machen. (Haken setzen)

Dann sollten wir natürlich unseren ersten Eintrag bearbeiten und ein zweites Bild hinzufügen. Unter dem Upload-Fenster für das Bild gibt es nun einen kleinen Knopf mit Namen “Duplicate”. Wenn wir darauf klicken erhalten wir eine zweite Upload-Maske und können das zweite Bild hinzufügen.
Ebenso ginge es natürlich mit allen anderen Feldern.
Damit aber nun nicht nur das erste, sondern alle Bilder angezeigt werden, müssen wir uns wieder am Code in der index.php zu schaffen machen:
<?php
$duplikate_bild = getFieldDuplicates ('bild', '1');
for($count = 0; $count < $duplikate_bild; $count++)
{
echo get_image('bild', $groupIndex=1, $fieldIndex=$count+1);
echo "<p></p>";
}
?>
Diesen Code geben wir statt dem alten
echo get_image('bild');
ein.
Hier wird zuerst die Anzahl der Duplikate ermittelt (getFieldDuplicates) und in die Variable $duplikate_bild geschrieben.
Mit Hilfe der Anzahl der Bilder können wir dann eine For-Schleife laufen lassen, die für jedes Bild eine Ausgabe macht.
DAS wars! Viel Spass!
PS: Ich bin kein PHP-Crack und es ist ziemlich sicher, daß es für meinen Ansatz (das mit der For-Schleife etc.) eine wesentlich elegantere Lösung gibt. Sollte jemand hierzu einen Nachtrag haben, immer her damit!

