Meetup 23.05.2013

Am Donnerstag, den 23. Mai wollen wir uns das sechste mal Treffen. Jeder, der Interesse an WordPress hat, ist eingeladen. Damit wir genug Plätze vorbereiten können, gebt bitte eine Rückmeldung per Kommentar.

Das Vortragsthema wird sein:
Hooks, Filter, Actions – Was zum Geier ist das?

Dazwischen bleibt natürlich Zeit für Fragen und Erfahrungsaustausch.

Wir treffen uns um 19 Uhr im Edelstall, dem Coworking Space im Capitol Hochhaus, Schwarzer Bär 2, 30449 Hannover. Dort haben wir einen Raum mit Beamer. Wer Lust hat, geht danach noch in der Umgebung was Essen/Trinken.


Größere Kartenansicht

Wir freuen uns auf Euch,
Nadine und Frank

And the winners are

Gestern, beim 5. WordPress Meetup Hannover konnten wir zwei Exemplare von  “WordPress-Video-Training – Vol. 2” verlosen, die PSD-Tutorials.de uns zur Verfügung gestellt hat.

Nach der Vorstellung des WordPress FirePHP Debuggers wurden aus den Namenszetteln aller Anwesenden die Gewinner gezogen.

And the winners are:

  • Ronald Richter
  • Erik Petersen

Viel Spaß und Erkenntnisgewinn mit den WordPress Videoworkshops.

 

Verlosung: WordPress-Video-Training – Vol. 2

WordPress-Video-Training - Vol. 2PSD Tutorials hat uns 2 Download-Exemplare von “WordPress-Video-Training – Vol. 2” zur Verfügung gestellt. Wir werden sie beim nächsten Meetup am 25. April unter den Anwesenden verlosen.

Das WordPress-Video-Training von Pascal Bajorat liefert 9,5 Stunden lang WordPress Knowhow.

Die Schwerpunkte sind:

  • Theme-Erstellung und Plugin-Entwicklung mit WordPress
  • Forumanbindung
  • Shopintegration
  • SEO
  • MultiSite
  • Performance-Optimierung
  • Sicherheit und Backups

Einen kleinen Einblick gibt das folgende Einleitungsvideo:

 

Das WordPress-Video-Training Vol. 2 gliedert sich in folgende Kategorien:

  1. Arbeitsumgebung: Der richtige Editor, Webspace und lokale Server
  2. Das WordPress-Backend: Dashboard, Beiträge, Seiten, Medien / Mediathek, Kommentare, Design, Plugins, Benutzer, Werkzeuge, Einstellungen
  3. WordPress – unter der Haube: WordPress-System: die Ordnerstruktur, WordPress-System: die Datenbank, WordPress-System: wp-config.php
  4. Theme-Erstellung: WordPress-Installation, Erste Schritte, Content-Loop, Navigation, Artikelbilder / Post-Thumbnails, Custom Background, Custom Header, Kommentarbereich, Dynamic Sidebar Widgets, Eigenes Widget entwickeln, Eigene Slideshow mit Backend-Verwaltung integrieren
  5. WordPress – SEO: WordPress SEO Teil 1, WordPress SEO Teil 2
  6. WordPress-Plugins: WordPress-Jetpack-Plugin, Types für WordPress, Antispam Bee, Contact Form 7, TinyMCE Advanced, WP-Syntax, YARPP – Yet Another Related Posts Plugin
  7. WordPress-Verwaltungssoftware: Verwaltungssoftware für WordPress
  8. Shop mit WordPress: WordPress-Shop mit WooCommerce – Teil 1, WordPress-Shop mit WooCommerce – Teil 2
  9. Community / Forum: WordPress-Forum mit bbPress
  10. Für Profis und Fortgeschrittene: WordPress – eigenes Plugin entwickeln, WordPress MultiSite- / MultiUser-System einrichten, WordPress – Sicherheit, WordPress – Performance-Optimierung

Die beiden Exemplare (im Wert von jeweils 29,95 €) werde ich unter allen Anwesenden des nächsten Meetups am 25. April verlosen. Die beiden Gewinner bekommen einen Gutscheincode mit dem sie im Shop von PSD Tutorials das Videotraining kostenlos herunterladen können. Die Namen der Gewinner werden hier auf der Website bekannt gegeben. Der Rechtsweg ist ausgeschlossen.

Vielen Dank an PSD Tutorials für das bereitstellen der beiden DVDs.

 

Meetup 25.04.2013

Am Donnerstag, den 25. April wollen wir uns das fünfte mal Treffen. Jeder, der Interesse an WordPress hat, ist eingeladen. Damit wir genug Plätze reservieren können, gebt bitte eine Rückmeldung per Kommentar.

Die Vortragsthemen werden sein:
Der WordPress FirePHP Debugger
und ich stell noch 2,3 neue Plugins von mir vor.

Dazwischen bleibt natürlich Zeit für Fragen und Erfahrungsaustausch.

Wir treffen uns um 19 Uhr im Edelstall, dem Coworking Space im Capitol Hochhaus, Schwarzer Bär 2, 30449 Hannover. Dort haben wir einen Raum mit Beamer. Wer Lust hat, geht danach noch in der Umgebung was Essen/Trinken.


Größere Kartenansicht

Wir freuen uns auf Euch,
Nadine und Frank

Meetup 21.03.2013

Am Donnerstag, den 21. März (wegen Ostern bereits eine Woche früher) wollen wir uns das vierte mal Treffen. Jeder, der Interesse an WordPress hat, ist eingeladen. Damit wir genug Plätze reservieren können, gebt bitte eine Rückmeldung per Kommentar.

Die Vortragsthemen werden sein:
Der WordPress FirePHP Debugger
und eventuell (wenn Fertig) stell ich noch ein neue Plugin von mir vor.

[UPDATE] Vorträge müssen leider verschoben werden.[/UPDATE]

[Update2] Wir treffen uns ab 19 Uhr im Högers 1910, Oesterleystraße 6 [/Update2]

Wir treffen uns ab 19 Uhr im Palms Diner, Heinrich-Heine-Platz 1.

Größere Kartenansicht

Wir freuen uns auf Euch,
Nadine und Frank

Childthemes – was ist das und wie kann ich das selbst nutzen?

WP Meetup Hannover, 28. Februar 2013

Frank Staude <frank@staude.net>

Ihr kennt das, Stunden oder Tagelang hat man nach einem passenden Theme gesucht. Irgendwann hat man dann endlich „DAS“ Theme gefunden, fast perfekt nur noch ein bisschen im CSS was anpassen und in der einen oder anderen Themedatei was ändern – Perfekt. Dann Blogt man fröhlich vor sich hin und eines Tages gibt es ein Update des Themes. Nichtsahnend führt man die Aktualisierung aus – doch oh Schreck – alle Änderungen sind weg!

Bei einem Update des Themes wird das Verzeichnis gelöscht und mit  dem Inhalt des neu heruntergeladenen Pakets befüllt. Das bedeutet, das alle selbst gemacht Anpassungen verloren sind.

Um das Problem zu umgehen, gibt es in WordPress das Konzept der s.g. Childthemes. Vereinfacht gesagt, erbt ein Theme alles von seinem Elterntheme und man beginnt dann Einstellungen zu überschreiben. Dadurch erreicht man ein Trennung von Theme und seinen eigenen  manuellen Anpassungen und die Anpassungen werden nicht gelöscht, wenn das Haupttheme aktualisiert wird.
Ich habe in meinem System nur die letzten 3 „Default“ Themes.
childtheme1
childthemes2Legen wir nun ein Childtheme an, das von Twenty Twelve abgeleitet ist. Die Themes liegen im Dateisystem unterhalb des Ordners wp-content im Ordner themes,

 

 

childthemes3Unser Childtheme soll Twenty Twelve Child heissen. Dazu legen wir als erstes im themes Ordner einen neuen Unterordner an und nennen ihn twentytwelve-child

 

 

In dieses neue Verzeichnis wird nun eine Datei style.css angelegt, mit folgenden Inhalt
childtheme4

/*
Theme Name: Twenty Twelve Child
Theme URI: http://meine-theme-url.de/
Description: Child-Theme von "Twenty Twelve" zur Childtheme Demo.
Author: Name des Autors
Author URI: URL des Autors
Template: twentytwelve
Version: 0.1
*/
@charset "UTF-8";
@import url("../twentytwelve/style.css");

Die Zeilen bedeuten im einzelnen:
Theme Name: Der Name des Child-Themes (Angabe ist nötig)
Theme URI: Die Webseite des Themes (Angabe ist optional)
Description: Eine kurze Beschreibung, die auf der Theme Übersichtsseite im WordPress Backend mit ausgegeben wird. (Angabe ist optional)
Author: Der Name des Autors des Themes. Fairerweise sollte man den Autor des Originalthems mit erwähnen. (Angabe ist optional)
Template: Name des Verzeichnisses des Originalthemes unterhalb von /wp-content/themes (Angabe ist nötig)
Version: Angabe einer Versionsnummer des Child-Themes. (Angabe ist optional)

Durch die @import Angabe wird das CSS des Originalthemes geladen.
Wenn alles richtig ist, haben wir nun ein neues Theme zur Auswahl.

childtheme5

Das neue Theme hat noch keine Grafik in der Themeübersicht. Entweder man kopiert einfach die screenshot.php aus dem Parenttheme oder legt eine neue Datei an (z.B. mit einem Screenshot der Webseite).

childtheme6

Nach Aktivierung des neuen Themes sollte die Seite genauso aussehen wie vorher.
Mit der @import Anweisung wird das original CSS geladen,  danach können wir dann das CSS des Parentthemes überschreiben. Um z.B. die Hintergrundfarbe zu ändern, ändern wir die style.css wie folgt.

/*
Theme Name: Twenty Twelve Child
Theme URI: http: //meine-theme-url.de/
Description: Child-Theme von "Twenty Twelve" zur Childtheme Demo.
Author: Name des Autors
Author URI: URL des Autors
Template: twentytwelve
Version: 0.1
*/
@charset "UTF-8";
@import url("../twentytwelve/style.css");
body {
background-color: #000000;
}

So können die CSS Anweisungen Stück für Stück überschrieben werden.
Templatedateien können ebenso ersetzt werden. Wenn man z.B. die page.php ändern möchte, kopiert man die page.php aus dem Verzeichnis des Parentthemes in das Verzeichnis des Childthemes und verändert diese. WordPress merkt das die Datei im Childtheme vorhanden ist und verwendet diese, statt der des Parentthemes.
Eine Besonderheit ist die functions.php Datei. Die werden beide geladen, zuerst die aus dem Childtheme und dann die aus dem Parenttheme. Wenn das Parenttheme darauf vorbereitet ist, kann man auch einzelne PHP Funktionen überschreiben.
Funktionen die man „Überschreiben“ kann, erkannt man in der Parenttheme functions.php daran, das diese in ein if (! function_exists (“Funktionsname“)) gekapselt sind.
Beispiel:

if ( ! function_exists( 'twentytwelve_content_nav' ) ) :
/**
* Displays navigation to next/previous pages when applicable.
*
* @since Twenty Twelve 1.0
*/
function twentytwelve_content_nav( $html_id ) {
global $wp_query;

$html_id = esc_attr( $html_id );

if ( $wp_query->max_num_pages > 1 ) : ?>
<nav id="<?php echo $html_id; ?>" role="navigation">
<h3><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
<div><?php next_posts_link( __( '<span>&larr;</span> Older posts', 'twentytwelve' ) ); ?></div>
<div><?php previous_posts_link( __( 'Newer posts <span>&rarr;</span>', 'twentytwelve' ) ); ?></div>
</nav><!-- #<?php echo $html_id; ?> .navigation -->
<?php endif;
}
endif;

Was passiert? Die Funktion twentytwelve_content_nav wird nur registriert, wenn sie noch nicht existiert. Wenn in der functions.php des Childthemes, welche ja vor der functions.php des Parentthemes geladen wird, ebenfalls diese Funktion definiert wird, wird diese verwendet.

Zusammenfassung:

  • Wenn man an Themes „rumfummelt“, sollte man Childthemes verwenden damit die Änderungen nicht verloren gehen bei Aktualisierungen
  • Für eine minimales Childtheme braucht man nur eine style.css Datei.
  • Template Dateien des Childs überschreiben die Dateien des Parents
  • Die functions.php werden beide geladen, zuerst die des Childs, dann des Parents.

 

Meetup 28.02.2013

Am Donnerstag, den 28. Februar wollen wir uns das dritte mal Treffen. Jeder, der Interesse an WordPress hat, ist eingeladen. Damit wir genug Plätze reservieren können, gebt bitte eine Rückmeldung per Kommentar.

Die Vortragsthemen werden sein:
Servertod: Wie das Leben weitergehen kann
und
Childthemes – was ist das und warum sollte ich damit arbeiten?

Wir treffen uns ab 19 Uhr im Palms Diner, Heinrich-Heine-Platz 1.

Größere Kartenansicht

Wir freuen uns auf Euch,
Nadine und Frank

Wo finde ich Hilfe?

WP Meetup Hannover, 24. Januar 2013

Frank Staude <frank@staude.net>

Das größte Nachschlagewerk für WordPress ist der so genannte Codex ( codex.wordpress.org ). Hier findet man von Einführungstexten was WordPress ist bis zur API Dokumentation für Programmierer alles rund um WordPress.

Oftmals aber braucht man kein Nachschlagewerk, sondern man möchte mit echten Menschen kommunizieren um ein aktuelles Problem zu lösen. Dafür gibt es verschieden Medien.

Mailinglisten

Mailinglisten waren schon eine Diskussionplattform, lange bevor es Webserver und Foren gab. Automattic, die Firma hinter WordPress betreibt ein Reihe von Mailingliste rund um das Thema WordPress.

wp-hackers (lists.automattic.com/mailman/listinfo/wp-hackers ) ist eine Liste für Entwickler wo es um Patches für das System und um die Weiterentwicklung geht.

wp-testers ( lists.automattic.com/mailman/listinfo/wp-testers ) hier Kommunizieren die Menschen, die eine neue Version von WordPress testen.

wp-docs ( lists.automattic.com/mailman/listinfo/wp-docs ) die Liste des Dokumentationsteams. Hier geht es die Dokumentation von WordPress, allem voran den Codex.

wp-xmlrpc ( lists.automattic.com/mailman/listinfo/wp-xmlrpc ) in dieser Liste geht es nur um die XMLRPC Schnittstelle.

wp-svn ( lists.automattic.com/mailman/listinfo/wp-svn ) diese Liste ist nur lesebar und nur für Entwickler interessant, Hier werden die Nachrichten versendet, wenn Entwickler in die Versionsverwaltung Subversion neuen Programmcode einstellen.

wp-trac ( lists.automattic.com/pipermail/wp-trac/ ) ebenfalls eine Liste nur zum lesen. Hier werden die neuen Nachrichten aus dem Tracsystem von WordPress versendet z.b. neue Fehlerreports.

IRC

Der Internet Relay Chat ist ein Weltweites Chatsystem, Clientsoftware für die Teilnahme am IRC sind für alle gängigen Betriebssysteme vorhanden. Die WordPress Entwickler nutzen freenode

Host: irc.freenode.net
Port: 6667
IRC Raum: #wordpress

Webforen

WordPress.org Foren ( wordpress.org/support/ ) Die Supportforen direkt bei WordPress.org, auf englisch und Unterteilt in viele Unterforen (Installation, Howto, Themes, Plugins, Multisite, usw)

Deutsches WordPress.org Forum ( de.forums.wordpress.org/forum/wordpress-deutschland ) auf WordPress.org gibt es auch ein deutschsprachiges Forum.

Das Forum von WPDE.org ( forum.wpde.org/ ) sehr großes und aktives Forum. Auch hier gibt es eine Unterteilung in die verschiedenen Bereiche.

StackExchange ( wordpress.stackexchange.com ) Frage & Antwortseite rund um WordPress.

Ich habe nun eine Frage

Such dir das für dich passende Medium, und dort die passende Stelle (so gut wie du das beurteilen kannst) – Wenn du unsicher bist, sieh dich dort erst einmal um oder, bei Mailinglisten, lese erst einmal eine weile nur.

Wenn du nun deine Frage stellt:

  • Die anderen, die dir deine Frage beantworten, machen das in ihrer Freizeit und sie bekommen kein Geld dafür. Versuche also bitte, ihre Zeit nicht zu vergeuden.
  • Beschriebe dein Problem/Anforderung so klar wie möglich.
  • Liefere alle Informationen die du hast, auch wenn sie dir unnötig erscheinen (oder für dich selbstverständlich sind, wir anderen kennen dein System nicht)
  • Welche WordPress Version?
  • Welches Theme (wenn es kein Theme aus dem Repository ist, URL des Themes)
  • Wenn es ein Premium Theme ist – tritt das Problem auch mit dem WordPress Default-Theme auf? (Niemand wird sich extra ein Premium Theme kaufen nur um dir Helfen zu können)
  • Welche Plugins sind instaliert?
  • Sind WordPress und Plugins alle auf dem aktuellen Stand?
  • Was hast du schon ausprobiert,getestet, unternommen?
  • Schicke eine URL wo man sich das ansehen kann (oftmals ist ein Blick in das HTML/CSS schon alles was man braucht zu Fehleranalyse), schicke Screenshort mit, die das Problem verdeutlichen.
  • Lese deine Frage vor dem Absenden noch einmal durch. Ist dein Problem für einen Aussenstehenden nachvollziehbar?

Wir, die wir in den Foren aktiv sind, helfen wirklich gerne, aber gib uns eine Change das auch zu tun. Es macht uns wirklich keinen Spaß, jede Information dem Fragesteller erst mühsam aus der Nase zu ziehen bis wir alle Informationen zusammen haben um das Problem zu begreifen und einzugrenzen.

Weitere wichtige URLs bitte in den Kommentaren ergänzen, danke :-)

 

 

Shortcodes – was ist das und wie kann ich das selbst nutzen?

WP Meetup Hannover, 24. Januar 2013

Frank Staude <frank@staude.net>

Als Shortcodes werden in WordPress Kurzbefehle bezeichnet, die in einer bestimmten Schreibweise innerhalb des Editors im sogenannten Contentbereicht verwendet werden können (und auch an anderen Stellen). Shortcodes werden in eckigen Klammern geschrieben. Die einfachste Form eines Shortcodes besteht nur aus dem Namen des Shortcodes, z.B. [mfg], mächtigere Shortcodes haben ein oder mehrere Parameter mit denen man die Ausgabe des Shortcodes weiter steuern kann, z.B. [download id=123]
Und dann gibt es noch die Möglichkeit das ein Shortcode aus einem öffnenden und einen schliessenden Teil besteht und den dazwischen liegenden Text kapselt, z.B. [info]Das ist der Text dazwischen.[/info]

Diese Befehlsschnipsel können vom Redakteur einfach bei der Eingabe des Textes im Editor  verwendet werden und werden bei der Ausgabe des Textes auf der Webseite entsprechend der Implementierung des Shortcodes ersetzt.

WordPress selbst liefert einige Shortcodes mit z.b.caption, gallery oder embed.
Viele Plugins stellen einen (mehr oder weniger großen Teil) Ihrer Funktionalität als Shortcode zur Verfügung, um den Redakteuren eine größtmögliche Gestaltungsfreiheit zu geben, da so die Ausgabe nicht innerhalb des Templates sondern bei der Eingabe des Textes festgelegt wird.

Wofür kann ich das nun nutzen?

Beispiel 1: Der Shortcode [mfg] soll eine Grußformel ausgeben.

Der Redakteur soll mit Hilfe eines des Shortcodes [mfg] eine Grußformel ausgeben können. Die Arbeitserleichterung besteht darin, einen (längeren) Textblock, der ständig gebraucht wird, abzukürzen um so Tipparbeit zu sparen.

Die Benutzung soll sein:

Der Redakteur tippt im Editor [mfg] und auf der Webseite soll ausgegeben werden:

Mit freundlichen Grüßen,
Frank Staude

Dazu sind folgende 2 Schritte nötig.

  1. Erstellen der Funktion die den Text zurück liefert. Ich nenne die Funktion in diesem Beispiel my_mfg_shortcode().
  2. Registrieren der unter Punkt 1 erstellten Funktion als Shortcode mit der add_shortcode() Funktion.
function my_mfg_shortcode() {
    return 'Mit freundlichen Grüßen,<br>Frank Staude';
}

add_shortcode('mfg', 'my_mfg_shortcode');

In WordPress registriert man einen Shortcode mit der Funktion add_shortcode ( shortcode, funktion ) sie nimmt  zwei Parameter entgegen, den Namen des Shortcodes den wir registrieren möchten und die Funktion die aufgerufen werden soll, wenn der Shortcode ausgeführt werden soll.
Wir wollen den Shortcode info registrieren und die Funktion die aufgerufen werden soll,nennen wir info_shortcode. Der vollständige Aufruf lautet also
add_shortcode ( ‘Info’, ‘info_shortcode’ );

Wenn wir den Shortcode nun verwenden, sieht das Ergebnis wie erwartet aus.

shortcode_mfg

Beispiel 2: Mit dem Shortcode [info]Text[/info] soll ein Textbereich hervorgehoben werden.

Wir wollen den Redakteur die Möglichkeit geben einen Textblock Rot zu hinterlegen.
Technisch ist es lediglich ein DIV mit entsprechender CSS Formatierung, aber natürlich wollen wir nicht das der Anwender selbst ein öffnendes und schließendes DIV inkl der Klassenangabe im HTML Modus des Editors eingibt. Dazu werden wir den Shortcode [info] anlegen. Die Benutzung durch den Redakteur soll so sein

[info]Dieser Text soll auf roten Grund erscheinen [/info]

Dazu sind folgende Schritte nötig

  1. Erstellen der Funktion die den Text zurückliefert. Ich nenne die Funktion in diesem Beispiel mal my_info_shortcode().
  2. Registrieren der unter Punkt 1 erstellten Funktion als Shortcode mit der add_shortcode() Funktion.
  3. Hinzufügen des CSS Anweisungen.
add_shortcode('info', 'my_info_shortcode');

function my_info_shortcode($attr, $content) {
    return '<div>'.$content.'</div>';
}

Und in die CSS Datei kommt

.infobox {
  background-color: #ff0000;
  border: 1px solid;
  margin-bottom: 10px;
  color: #ffffff;
}

shortcode2

Beispiel 3: Amazon Link mit Angabe der ASIN.

Der Redakteur soll einen Link auf ein Amazon Produkt nur mit Angabe der ASIN und des Linktextes anlegen. Der Aufruf soll sein [amazon asin=“123456“] Linktext [/amazon]

Die Funktion die man per add_shortcode registiert kann 2 Parameter übergeben bekommen, die Attribute und den Content. Der erste Parameter ist ein Assoziatives Array und enthält die Attribute und der zweite Parameter ist der Content, also der Text der zwischen dem öffnenden und dem schliessenden Shorttag steht.
Die ASIN steht also im dem Attribute-Array zur Verfügung.
Daraus ergibt sich folgender Programmcode.

add_shortcode('amazon', 'my_amazon_shortcode');

function my_amazon_shortcode( $attr, $content) {
    return '<a href="http://www.amazon.com/dp/'. $attr["asin"].'">'.$content.'</a>';
}

Natürlich müsste man in einer realen Anwendung noch prüfen ob die ASIN auch übergeben wurde und ggf eine Fehlermeldung statt eines defekten Links ausgeben.

Wo kann ich Shortcodes verwenden?

Theoretisch überall – ggf mit etwas „Handanlegen“. Für das ausführen von Shortcodes ist die Funktion do_shortcode() zuständig. Diese wird per Filter an bestimmte Element gekoppelt, z.B. an das Textfeld des Editor.
Um z.B. direkt in der Templatedatei eines Themes einen Shortcode auszuführen, geht man so vor.

$shortcode = “Dein Text [info] mit Shortcode [/info]“;
echo do_shortcode($shortcode);

Kann ich Shortcodes verschachteln?

Ja, dann muss innerhalb der Funkton die deinen Shortcode implementiert der übergebene Content erneut an do_shortcode() übergeben werden. Die Funktion von Beispiel 2 sähe dann so aus

function my_info_shortcode($attr, $content) {
    return '<div>'. do_shortcode($content) .'</div>';
}

Links?

Die Beschreibung der Shortcode API liegt im Codex unter http://codex.wordpress.org/Shortcode_API

Meetup 24.01.2013

Am Donnerstag, den 24. Januar wollen wir uns das zweite mal Treffen. Jeder, der Interesse an WordPress hat, ist eingeladen. Damit wir genug Plätze reservieren können, gebt bitte eine Rückmeldung per Kommentar.

[UPDATE]
Die Vortragsthemen werden sein:
Shortcodes – was ist das und wie mach ich es selbst
und
Wo finde ich Hilfe bei WordPress Problemen
[/UPDATE]

Wir treffen uns ab 19 Uhr im Palms Diner, Heinrich-Heine-Platz 1.

Größere Kartenansicht

Wir freuen uns auf Euch,
Nadine und Frank