DIVI Theme: Reply-To des Kontaktformular-Moduls ändern

Standardmäßig tut DIVI die Mail Adresse, die abgefragt wird, als „Reply-To“-Adresse einsetzen. Die „Reply-To“ Adresse ist die Mail-Adresse, an die eine Mail geschickt werden soll, wenn man in seinem Mail-Programm auf „Antworten“ klickt.

An sich ist das recht praktisch, als Website-Betreiber bekommt man eine Mail und kann direkt auf „Antworten“ klicken, um der Person zu schreiben. Was aber vermeintlich praktisch ist mögen einige Mail-Server nicht. Denn es ist nicht üblich, dass der Sender eine ganz andere Antwort-Adresse hat als die „Reply-To“. Spammer nutzen das u. a. in dem sie einen bekannten Sender faken und Sie die Antwort über das „Reply-To“ an eine andere Adresse schicken.

Leider bietet das DIVI Modul keine Einstellmöglichkeit, das „Reply-To“-Feld anders zu setzen. Daher muss es anders gelöst werden, wir nutzen einen Filter. Der Code wird einfach in die functions.php hinzugefügt.

function my_custom_headers($headers, $contact_name, $contact_email){

  $my_headers = array();
  $header_reply_to_found = false;
  $http_host = str_replace("www.", "", $_SERVER["HTTP_HOST"]);

  for( $i = 0 ; $i < sizeof($headers) ; $i++ ){

    if( preg_match("/Reply-To/", $headers[$i]) > 0 ){

      $my_headers[] = "Reply-To: info@" . $http_host;
      $header_reply_to_found = true;
    }else{

    $my_headers[] = $headers[$i];
    }
  }

  if( ! $header_reply_to_found ){

    $my_headers[] = "Reply-To: info@" . $http_host;
  }

  return $my_headers;
}

add_filter( 'et_contact_page_headers', 'my_custom_headers', 999, 3 );

In diesem Beispiel wird die Reply-To Adresse auf info@ der Website-Domain gesetzt.

Achtung, nicht vergessen: Standardmäßig schickt das Kontaktformular nur den Inhalt des Nachrichtenfeldes mit. Wenn also die Mail-Adresse des Formulars nicht mehr als „Reply-To“ verwendet wird, weiß man nicht mehr wer einen angeschrieben hat. Man muss also die Information mitschicken. Das geht über die Einstellung „E-Mail Adresse“ > „Meldungsschema“ wie hier in dem Screenshot.

DIVI Meldungsschema

Ferien-Karlsruhe Verkaufstags-Rush reibungslos

Wie jedes Jahr im Februar, werden die neuen Angebote vom Stadtjugendausschuss zum Kauf angeboten. Ein bisschen anders als jedes Jahr war, dass nur der Top-Seller (Karlopolis) buchbar war, die anderen neuen Freizeiten werden eine Woche später erst angeboten.

Letztes Jahr haben ca. 5.000 Besucher quasi zeitgleich (die Angebote wurden um 18h freigeschaltet) versucht sich die Wunsch-Freizeiten zu reservieren – was die Server eine Zeit lang überforderte. Nach einer dreiviertel Stunde und geboosteter Performance konnten alle Bestellungen abgearbeitet werden.

Aus den Fehlern wurde aber gelernt. So wurden dieses Jahr folgende Maßnahmen umgesetzt:

  • Produktseiten cachbar gemacht; die Information ob noch freie Plätz vorhanden oder nicht, wird per Ajax asynchron nachgeladen
  • Warteschleife in den Bestellprozess eingebaut: eingehende Bestellungen werden nicht sofort von WooCommerce versucht abgearbeitet zu werden, sie werden nach dem Klick auf „Jetzt bestellen“ in eine Warteschleife geführt und in „30er Pakete“ zum Abarbeiten geschickt. Erst dann werden die Bestellungen in Reservierungen umgewandelt und die Kunden erhalten eine Bestätigungsmail. Diese Funktion ermöglicht die Last deutlich zu drosseln, wenn um Punkt 18h knapp 2.000 Personen gleichzeitig versuchen die Karlopolis-Freizeiten zu buchen.

Natürlich wurden für den Verkaufstag auch die Performance der Systeme hochgefahren, etwa um das Zehnfache im Vergleich zu einem normalen Geschäftstag.

Ferien-Karlsruhe.de: ein umfangreiches Reisebuchungsportal mit WooCommerce

Karlsruher Ferienportal ferien-karlsruhe.de

Das Ferienportal ferien-karslruhe.de bietet hauptsächlich Freizeiten in und um Karlsruhe sowie Sprach-, Spaß- und Entdeckungsreisen ins europäische Ausland. Das Angebot richtet sich an Kinder im Alter von 6 bis 16 Jahren und hat einen großen Fokus auf Inklusion - die Teamer sind geschulte Betreuer, die entsprechend individuell auf Bedürfnisse der Kinder eingehen können. Außerdem können Familien mit geringem Einkommen mit der Unterstützung durch verschiedene Förderprogramme rechnen, sodass die Kinder nicht auf wohltuenden Urlaub verzichten müssen.

Vom einfachen Reservierungssystem zum vollwertigen Buchungssystem

Schnell wurde erkannt, dass WooCommerce den benötigten Workflow nicht abbilden kann: denn anders als bei handfesten Produkten, die im Internet verkauft werden, und bei denen jede Bestellung sofort bezahlt wird und die verfügbare Menge im Lager heruntergezählt wird, werden bei ferien-karlsruhe.de Reservierungen kostenlos entgegengenommen und in einem zweiten Schritt eine Anzahlung zur verbindlichen Bestätigung der Reservierung gefordert. Erst kurz vor Antritt der Reise wird der Restbetrag beglichen und eine Teilnehmerkarte gedruckt.

Features, Features, Features

Eine Menge Features wurde speziell für das Ferienportal entwickelt. Hier solche aus der Kundensicht:

  • Warenkorb Zeitlimitierung: damit Überbuchungen vermieden werden, wird die Verfügbarkeit eines Angebots beim Klick in den Warenkorb heruntergezählt. Jedoch muss der Warenkorb innerhalb einer bestimmten Zeit eingelöst werden, sonst wird das Angebot zurückgesetzt.
  • Warteliste: wenn ein Angebot ausgebucht ist, kann ein Interessent sein Kind in die Warteliste eintragen. So kann das Kind eventuell dennoch teilnehmen, wenn eine andere Reservierung storniert wird.
  • Erweiterte Angaben im Checkout: anders als in den meisten Onlineshops gibt es einen Besteller und das Kind, für das das Angebot reserviert wird. Es können mehrere Angebote und mehrere Kinder in beliebiger Kombination reserviert werden. Zu jedem Kind werden Informationen wie Name, Geburtsdatum und etwaige Besonderheiten (z. B. ADS/ADHS, Behinderung, ...) angegeben.

Aus der Betreibersicht:

  • Angebotsstatus: ein neu erstelltes Angebot durchläuft verschiedene Stati: Entwurf, Freigegeben, Buchbar, Ausgebucht, Abgeschlossen um die wichtigsten zu nennen.
  • Kunden- und Reservierungsstatus: Besteller werden zu Bezugspersonen (es müssen nicht immer die Eltern sein), Kinder werden zu Teilnehmer, und Reservierungen zu Buchungen.
  • Zuschüsse: es lassen sich verschiedene Zuschüsse zu Angeboten eintragen.
  • Druckfunktion für Teilnehmerkarten: ist die Reise bezahlt, kann zu gegebenen Zeitpunkt die Teilnehmerkarte gedruckt werden. Hierzu wird der Druckauftrag mit dem netzinternen IIS Server übermittelt an dem die Drucker angebunden sind. Die Software (.NET) wurde hierfür von SaaS Web programmiert.
  • Kundenkommunikation: anders als im Standard, können die Mailtemplates bei jedem manuellen Aufruf angepasst werden. Auch beinhalten sie individuell erstellte PDF-Anhänge. Die gesamte Kundenkommunikation wird darüber hinaus archiviert.
  • Buchungsexport für Buchhaltungssoftware: der STJA arbeitet mit einer kommerziellen Buchhaltungssoftware zu der alle Geld Ein- und Ausgänge übermittelt werden müssen.
  • Kassen: in der Geschäftsstelle befinden sich Geldkassen, deren Inhalt buchhalterisch festgehalten werden muss.

WordPress und WooCommerce kompatibel

Besonders wichtig war bei der Entwicklung (immerhin ca. 400 Stunden Arbeit), dass das Ergebnis die Update-Fähigkeit von WordPress nicht beeinträchigt, was auch gelungen ist. Die im neuen Modul erstellten Angebote generieren (und überschreibt bereits existierende) WooCommerce Produkte, die auch über das entsprechende Menü gelistet und durchforstet werden können.

Professionelle WordPress Entwicklung von SaaS Web

Sie suchen einen kompetenten und erfahrenen WordPress-Entwickler für ein eigenes Projekt? Kontaktieren Sie das SaaS Web Team.

[Update]Steve: jetzt mit Bildvergleich – WordPress Management für Profis

Die Aufgabe: WordPress Updates

WordPress Core Updates verlaufen in aller Regel ohne Probleme. Bei Plugin- oder Theme-Updates sieht die Sache schon ganz anders aus. Die Ursachen können sehr unterschiedlich sein: Bugs in dem Plugin selbst, Kompatibilität zu anderen Plugins... Die möglichen Auswirkungen der Fehler sind auch höchst unterschiedlich, in manchen Fällen ist es die komplette Homepage, die nicht mehr angezeigt wird oder PHP-Fehlermeldungen, die mitten auf der Seite zu sehen sind. Oftmals sind es eher kleine Veränderungen, dennoch unerwünschte.

 

Screenshots nach einem Update vergleichen

Mit dem Vergleich "davor und danach" von automatischen Bildschirmfotos der Website, können auch kleine Fehler entdeckt werden. Das System sucht nämlich automatisiert nach Veränderungen und gibt die Anzahl gefundener Unterschiede (in %) an.

So lassen sich Fehler auch viel später erkennen (Steve behält die Historie der Updates und die entsprechenden Screenshots) und ermöglicht, wenn notwendig, das Einspielen des richtigen Backups - standardmäßig wird bei jedem Update-Vorgang, das kann ein einzelnes oder mehrere Updates direkt hintereinanderer, ein Backup erstellt.

Die Zukunft: Auto Backup Restore, Auto Plugin Tagging uvm

Als nächstes ist geplant, die SLA-Funktionalität für unsere WordPress-Kunden auszubauen:

  • Kunden können nach Updates eine Mail mit einem Link zu dem Screenshot-Vergleich erhalten, um selbst zu prüfen, dass alles in Ordnung ist
  • Kunden können angeben, dass die Prüfung in Ordnung war, oder Fehler beinhaltet; daraufhin werden Meldungen an Steve übergeben, um die Updates ggf. rückgängig zu machen und ggf. die Plugins (in der vorhandenen Version) als "broken" zu taggen.
  • Wenn das automatisierte Staging integriert sein wird, kann dieser Prozess auch darauf abgebildet werden: erst nach Freigabe vom Kunden wird das Update auf die Live-Instanz durchgeführt

Steve: das neue WordPress Management Tool für SaaS Web

Nach mehreren Monaten Entwicklungszeit ist Steve nun in Produktion gegangen. Steve steht für Perfektion: eine Hommage an Steve Jobs und ein Lob an den Core-Entwickler und SaaS Web Geschäftsführer Daniel Jagszent. Steve steht aber auch für Gleichberechtigung zwischen Frau und Mann: nachdem „intelligente Bots“ nach Frauen benannt wurden (Siri, Alexa, Cortana), haben wir uns entschieden unser Tool nach einem Mann zu benennen!

Mit Steve ersetzen wir InfiniteWP

InfiniteWP (IWP) ist eine populäre PHP/MySQL Webanwendung um (zahlreiche) WordPress Websites zu verwalten – in der Basisversion kostenfrei, jedoch kann man für einen professionellen Einsatz nicht auf die kostenpflichtigen Add-Ons verzichten. IWP bietet durch seine Erweiterungen zahlreiche Funktionen, es kommen immer wieder neue dazu.
Trotz der umfangreichen Funktionalität waren wir mit der Anwendung nie ganz zufrieden:

  • Zum Einen waren Features, die für die Verwaltung von Business Sites wichtig sind (z. B. SLA für Update-Management oder Auto-Backups bei Updates) nicht verfügbar,
  • zum Anderen waren wir auch mit der Qualität der Software nicht zufrieden (viele Bugs, nicht fertig gedachte Features).

Professionelles WordPress Management mit Steve

Steve WordPress Management

Mit der neuen (Ruby on Rails) Anwendung ist das Management der WordPress Sites auf unsere Bedürfnisse zugeschnitten. Ein Auszug der Features:

  • Auto Discover der WordPress-Instanzen auf den Servern
  • Automatische „SaaS Web“ MU-Plugin Installation für Kommunikation mit Steve
  • Automatische Backups bei Updates (ein/ausschaltbar)
  • Daily bzw. nightly Backups aller WordPress Instanzen; File-Backups sind inkrementell.
  • One Click Backup Restore
  • Individuelle SLA Integration: u. a. Updates für VIP Sites nur außerhalb Geschäftszeiten möglich – außer Sicherheitsupdates
  • Audit Funktion: Logging aller WordPress Aktionen
  • Unterstützung von WordPress Multisite

Ein Fokus auf die Usability

Steve ist nicht nur ein fleißiger Musterschüler. Steve ist auch eine ergonomische Software, um die tägliche Arbeit mit WordPress komfortabel und effizient zu verrichten.

Dazu gehört zum Beispiel:

  • Einfache Menüführung ohne komplizierte Verschachtelungen
  • Suchfeld für Websites mit Autocompletion
  • Actions-Quicklinks bei Website-Listeneintrag
  • Kommunikation zwischen Browser und Server mittels WebSocket für direkte Rückmeldung ohne Neuladen der Website

Ein Tool auch für die Zukunft

Schon in Planung, leider noch nicht verfügbar, ist das automatische Aufnehmen von ausgewählten Seiten (als Bild) vor und nach einem Update. So lassen sich manuell (ungewollte) Änderungen schneller erkennen und ggf. auch zeitlich einordnen, falls nicht sofort erkannt. Entsprechend kann das richtige Backup schneller wieder eingespielt werden.
Auch automatisches Staging steht an – aktuell ein manuelles Verfahren – und viele andere Features…

WordPress mit WP CLI einfach und schnell installieren

Dieses kurze Video-Tutorial zeigt wie man in wenigen Schritten, eine neue WordPress-Website installieren kann. Voraussetzung für die erfolgreiche Ausführung sind: ein SSH-Zugang, WP CLI und eine bereits eingerichtete Datenbank. Die Domain sollte auf dem Webserver auch bereits angelegt worden sein.

 

Weinblog Redesign Livegang

Endlich ist der französischsprachige Weinblog von François Potevin nach einigen Wochen harter Arbeit im neuen Look bzw. mit neuem „Unterbau“ live gegangen. Zu den Neuerungen zählen:

  • HTML5
  • Responsive Layout
  • Bildoptimierungen (Kompression)
  • Einheitliche Struktur der Artikel und Excerpts
  • Kontextuelle Angebote in der Sidebar (aktuell nur für Desktop- und Tablettansicht)

vinsdumonde

Die neue Lindenbaum Homepage ist live

Nach langer Entwicklungs- und Finetuningszeit ist die neue Lindenbaum-Homepage heute live gegangen. Das Design stammt vom Hochquadrat-Mitglied Miss Koepke und die Entwicklung ist natürlich von uns. Nicht nur das Theme der WordPress Website war zu entwickeln, sondern auch intelligente Backend Einstellmöglichkeiten, damit das Lindenbaum-Team auch künftig selbständig Änderungen durchführen kann.

screenshot-lindenbaum

Relaunch Ferien-Karlsruhe

Kurz bevor die neuen Angebote in der Geschäftsstelle buchbar sein sollen, geht die Website mit einem überarbeiteten Design (Miss Koepke) und neuen Funktionen live. Neuerungen sind u. a. :

  • eine kompaktere Startseite mit einem neuen Logo
  • ein Suchfilter auf der Startseite
  • eine übersichtlichere Ansicht der Angebotseinzelseiten
  • die Möglichkeit mehrere Angebote gleichzeitig zu buchen und dabei verschiedenen Kindern direkt zuzuweisen
  • und einiges mehr.. 

Ferien Karlsruhe

TEDxESA Website für Online Registrierungen offen

TEDxESA

SaaS Web hat für das TEDx Event die Teilnehmer-Registrierung in die bestehende WordPress Event-Seite integriert. Das Projekt bestand darin ein Anmeldeformular anzuzeigen und die Möglichkeit zu geben, Anfragen zu sortieren sowie ausgewählten Teilnehmern per Rückmeldung zur Zahlung aufzufordern. Zudem wurde ein ermäßigter Zugang für Studenten angeboten.

Wordcamp in Köln war ein tolles Event

Es ist eigentlich noch nicht vorbei, heute ist Contributor Day. Dieser Tag wird den Personen gewidmet, die der (Weiter-)Entwicklung von WordPress beitragen – in allen möglichen Bereichen, es muss nicht unbedingt technischer Natur sein.

SaaS Web war nicht nur Sponsor des Events! Wir, Daniel Jagszent und Matthias Wulkow, waren auch vor Ort und haben an den zahlreichen Vorträgen teilgenommen. Am Sonntag wurde auch unter vielen anderen Geschenken ein WordPress Hosting L verschenkt.

Hier ein paar Eindrücke des Wordcamps:

David Jardin zum Thema CMS Garden

CMS Garden

Silvan Hagen zum Thema UX Design Prozess zur Plugin Entwicklung

Feedback Plugin

Elisabeth Hölzl zum Thema Barrierefreiheit bzw. Barrierefreundlichkeit

Barrierefreiheit

Jon Ziemlich zum Thema WordPress Security (und mit einem Live-Hack)

Wordpress Security

Dominik Schilling und Konstantin Obenland in der Fragen/Antworten Session

Fragen & Antworten

Luc Princen zum Thema Javascript Theme

js-theme-1

Torsten Landsiedel zum Thema Child Themes

child-themes-1

Homepage stammel.de online

stammel-logoBasierend auf das Theme Zonya hat Navispace ein individuelles Design für die Stammel-Modehäuser aus der Münchner Umgebung, genauer in Buchloe, Mindelheim und Schwabmünchen. SaaS Web hat die gewünschten Anpassungen umgesetzt und dabei die Theme-eigenen Mittel genutzt. Das Hosting der Website übernimmt SaaS Web ebenfalls.

WordPress: Stylesheets verändern oder ergänzen mit wp_enqueue_style und wp_dequeue_style

WordPress LogoWer schon mal mit WordPress gearbeitet hat, weiß, dass es durchaus passieren kann, dass hinzugefügte PlugIns eigene Styles mit sich bringen und daher ggf. angepasst werden müssen. Natürlich ist es keine besonders gut Idee, die Styles direkt in dem PlugIn zu ändern, denn beim nächsten Update, sind die Anpassungen weg. Auch lassen sich die Styles oft nicht mit der style.css aus dem Root-Verzeichnis überschreiben, da die PlugIn-Styles durchaus später geladen werden.

So geht’s: wp_enqueue_style / wp_dequeue_style

 

# Der Code hier sollte in die functions.php eingetragen werden
# Sollte das Theme ein Child-Theme sein, und es gibt noch keine functions.php in 
# dem Child-Theme-Verzeichnis, dann genügt eine eigene functions.php in dem 
# Child-Theme Verzeichnis mit den Angaben hier unten (die neuen Anweisungen 
# und Funktionen ergänzen dann die functions.php des Parent-Themes)
#
# Hier wird verhindert, das "Problem_Stylesheet" zu laden
# 'plugin-style' ist der unique Identifier

function plugin_style_drop(){
  wp_dequeue_style( 'plugin-style' );
}

# Hier wird ein extra Stylesheet eingebunden
# Beispielsweise um die Stylesheet Informationen eines Formular-PlugIns zu überschreiben

function style_extension_scripts() {
  wp_enqueue_style( 'custom-plugin-style', get_template_directory_uri() . '/plugin-new-style.css' );
}

# Hier werden die Funktionen ausgeführt
# wp_print_scripts; diese Funktion stellt sicher, dass das zu 
# dequeuende Style auch geladen wurde, um es sicher zu entfernen
# Die Prio wird als drittes Argument in add_action hinzugefügt,
# der Wert kann individuell angepasst werden

add_action( 'wp_print_scripts', 'plugin_style_drop', 100 );
add_action( 'wp_enqueue_scripts', 'style_extension_scripts', 101 );

 


MBI Geodata Website Relaunch

mbi-geodata

Zu MBI-International: MB-International verfügt als Hersteller über ein weit reichendes Angebot an internationalen Markt- und Geodaten auf verschiedenen Gebietsebenen (Postalisch-, Administrativ-, Mikroebene). Hierzu zählen Soziodemographische Daten wie z.B. Bevölkerungszahlen, Anzahl Haushalte und die Alterstruktur sowie Kaufkraftdaten und die dazu passenden Gebietsgrenzen. Weltweite Straßendaten in unterschiedlichen Maßstäben und Qualitäten runden das Angebot ab.

Hier geht es zur Homepage.

OpenShift offiziell released und wird kommerziell vertrieben

openshift-logoDie populäre Platform as a Service Lösung von RedHat (ehemals Makara) ist nun offiziell aus dem Betastadium raus und wird neben dem kostenfreien gehosteten Package auch mit Premium Service kostenpflichtig angeboten.

Mit OpenShift lassen sich zahlreiche Plattformen einrichten wie z. B. für Java, Ruby, JavaScript (Node.js), PHP, Perl und Python. Über Cartridges lassen sich zudem auch eigene Anwendungen einbinden.

Git Flow – Professionelles Arbeiten mit Git

gitflow

Git ist bereits ein hervorragendes Versionierungssystem mit dem gerade verteilte Teams sehr gut zusammen arbeiten können.

Man kann der Torte allerdings noch eine Kirsche verpassen in dem man Git Flow nachrüstet und somit eine wirklich professionelle Umgebung schafft. Mit Git Flow lassen sich verschiedene Branches automatisiert erstellen und mit vorgegeben Regeln wieder mergen.

So geht’s (wenn git bereits installiert ist):

– Git Flow installieren
– Git Bash öffnen und in das Repo wechseln

Git Flow für ein Repo aktivieren:
git flow init

Von einem Branch zum anderen wechselt man einfach mit:
git checkout [branch-name]

Beispiele:

  • Hotfix-Branch starten:
    git flow hotfix start [hotfix-branch-name]
  • Hotfix-Branch beenden:
    git flow hotfix finish [hotfix-branch-name]

Hotfix-Branches werden automatisch mit den master- und staging/developer-Branches gemerged. Der Feature-Branch wird mit dem staging/developer-Branch gemerged. Um anschließend online zu gehen, muss der Umweg über den Release-Branch gemacht werden, der dann mit dem master-Branch gemerged wird.

WordPress: Wirklich individuelle Navigation erstellen und der Walker_Nav_Menu Klasse

Es kommt immer wieder vor, dass eine Website-Navigation, nicht nur den Seitennamen anzeigen soll, sondern auch Informationen, die dazu gehören, wie zum Beispiel die Description oder das Seiten-Bild, oder was auch immer… Um die Kontrolle darüber zu bekommen, braucht man die Walker_Nav_Menu Klasse.

Vorgehensweise
In der functions.php folgenden Code eingeben, es entspricht dem WP-eigenen Code. Dort werden anschließend die gewünschten Änderungen durchgeführt.

class Custom_Walker extends Walker_Nav_Menu{

  function start_el(&$output, $item, $depth, $args){

    $classes = empty ( $item->classes ) ? array () : (array) $item->classes;
    $class_names = join(“ „, apply_filters(„nav_menu_css_class“, array_filter($classes), $item));

    ! empty ($class_names) and $class_names = “ class='“ . esc_attr($class_names) . „‚“;

    $output .= $indent . „<li id=’menu-item-“ . $item->ID . „‚“ . $value . $class_names . „>“;

    $attributes = „“;

    ! empty($item->attr_title) and $attributes .= “ title='“ . esc_attr($item->attr_title) . „‚“;
    ! empty($item->target) and $attributes .= “ target='“ . esc_attr($item->target) . „‚“;
    ! empty($item->xfn) and $attributes .= “ rel='“ . esc_attr($item->xfn) . „‚“;
    ! empty($item->url) and $attributes .= “ href='“ . esc_attr($item->url) . „‚“;

    $title = apply_filters(„the_title“, $item->title, $item->ID);

    $item_output = $args->before . „<a $attributes>“ . $args->link_before . $title . „$lt;/a> “ . $args->link_after. $args->after;

    // Since $output is called by reference we don’t need to return anything.
    $output .= apply_filters(„walker_nav_menu_start_el“, $item_output, $item, $depth, $args);
  }
}

Was wollen wir jetzt ändern? Zum Beispiel keine <ul><li>-Navigation sondern einfach <div> für die einzelnen Navigationselemente. Dazu das Artikelbild unterhalb, und die Description (aus dem Menue). Das sieht dann z. B. aus aus:

// Add these lines in order to fetch the additional information you wish to display

// We need the target page id in order to fetch the page image
$page = get_page_by_path(basename($item->url));
$page_id = $page->ID;
// We should check if there is an image set or not, but we are lazy for this example
$image_url = get_the_post_thumbnail( $page_id, ‚custom-image-preview‘ );
// Same thing for the description
$description = esc_attr( $item->description );

// Remove the li
// Instead of $item_output = $args->before . „<a $attributes>“ . $args->link_before . $title . „$lt;/a> “ . $args->link_after. $args->after;
$output .= „“;

// Change the output like you need it
$item_output = $args->before . „<div class=’container-main’><a $attributes>“ . $args->link_before . $title . „</a><div class=’page-image’>“ . $image_url . „</div><div class=’menu-page-description’>“ . $description . „</div></div> “ . $args->link_after. $args->after;

Damit es nun auch angezeigt wird, muss der Aufruf von wp_nav_menu modifiziert werden. Beispielsweise so:

wp_nav_menu( array( ‚theme_location‘ => ‚my-custom-navigation‘,
    ‚menu‘ => “,
    ‚container‘ => ’nav‘, // Auto wrap navigation in <nav> area
    ‚container_class‘ => FALSE,
    ‚container_id‘ => FALSE,
    ‚menu_class‘ => FALSE,
    ‚menu_id‘ => FALSE,
    ‚echo‘ => true,
    ‚fallback_cb‘ => ‚wp_page_menu‘,
    ‚before‘ => “,
    ‚after‘ => “,
    ‚link_before‘ => “,
    ‚link_after‘ => “,
    ‚items_wrap‘ => ‚%3$s‘, // Remove the ul container
    ‚depth‘ => 0,
    ‚walker‘ => new Custom_Walker ) );

GEOwidget nun Open-Source mit MIT Lizenz

GEOwidget ist eine Online Anwendung mit der sich beliebig viele Locations auf einer interaktiven Google Maps Karte platzieren lassen. So erstellen Nutzer in wenigen Klicks (ohne Programmierkenntnisse) mühelos Widgets für Homepages, beispielsweise um das Unternehmensnetzwerk darzustellen.

Nun ist GEOwidget unter der MIT Lizenz in das Google Code Repository gewandert. Jeder kann die Anwendung nun selbst betreiben und weiterentwickeln.

http://code.google.com/p/geowidget-project/

GEOwidget Homepage

Mage+ / Magento-Fork weg von Ebay!

Schön, dass die Community reagiert hat und nach vorne schaut. Nun ist die Magento 1.7.0 Version zu GitHub als Mage+ gewandert, mit dem Ziel einfacher neue Entwickler zu finden, die sich an dem Projekt beteiligen. Das ausführliche Statement zu dem Fork und dem Wechsel von SVN zu GIT kann hier nachgelesen werden: https://github.com/mageplus/mageplus/blob/master/README.md.

WordPress, eigene Templates gestalten: Individuelle Längen für die Kurzfassung von Artikeln

Auf der Artikelseite (index) möchte man gegebenenfalls die Länge der Kurzfassung (excerpt) anpassen. Aber vielleicht möchte man zusätzlich auf einer anderen Seite eine Voransicht – beispielsweise die 3 aktuellsten Beiträge – mit einer kürzer gefassten Kurzfassung der Artikel.

Für den ersten Fall braucht es lediglich diesen Eintrag in der functions.php:

function custom_excerpt_length( $length ) {
  // Standard ist 54
  return 40;
}
add_filter( ‚excerpt_length‘, ‚custom_excerpt_length‘, 999 );

Problem: Damit sind alle Kurzfassungen 40 Wörter lang.

Um aber nun zu differenzieren, anhand der besuchten Seite beispielsweise kann man einfach die Seite innerhalb der Funktion abfragen.

function custom_excerpt_length( $length ) {

  // Home ist index
  if( is_home() ){
    return 40;
  }else{
    return 10;
  }
}

add_filter( ‚excerpt_length‘, ‚custom_excerpt_length‘, 999 );