CMS | t3n News News, Infos, Tipps und aktuelle Artikel zu CMS 2014-09-17T14:00:32Z t3n Redaktion http://t3n.de/tag/cms PHPStorm 8: Alle Features der neuen Version im Überblick http://t3n.de/news/jetbrains-phpstorm-8-ide-567597/ 2014-09-17T14:00:32Z
JetBrains hat PHPStorm 8 veröffentlicht. Die neue Version der beliebten Entwicklungsumgebung unterstützt jetzt PHP 5.6 und bringt unter anderem auch Support für WordPress und Drupal 8 mit.

JetBrains hat PHPStorm 8 veröffentlicht. Die neue Version der beliebten Entwicklungsumgebung unterstützt jetzt PHP 5.6 und bringt unter anderem auch Support für WordPress und Drupal 8 mit.

PHPStorm 8: JetBrains hat die neue Version ihrer Entwicklungsumgebung veröffentlicht. (Screenshot: PHPStorm 8)
PHPStorm 8: JetBrains hat die neue Version ihrer Entwicklungsumgebung veröffentlicht. (Screenshot: PHPStorm 8)

PHPStorm 8: JetBrains veröffentlicht neue Version der Entwicklungsumgebung

Die tschechische Softwareschmiede JetBrains hat ihre Entwicklungsumgebung PHPStorm in Version 8 veröffentlicht. Die IDE bietet jetzt vollständigen Support für PHP 5.6. Außerdem wurde das Language-Injection-Feature verbessert, mit dem sich SQL-Queries, JavaScript oder HTML einfach in den Arbeitsfluss integrieren lassen. Außerdem unterstützt PHPStorm 8 jetzt auch direkt die beiden Content-Management-Systeme WordPress und Drupal 8. Dadurch soll die Arbeit an den CMS schneller von der Hand gehen. TYPO3 Flow wird allerdings nicht unterstützt. Wer sich das wünscht, kann aber seine Stimme für das entsprechende Feature-Request abgeben.

Neu ist auch die Unterstützung für Remote-PHP-Interpreters. Damit kann der Code in einem produktionsähnlichen Umfeld ausgeführt werden. Außerdem wird auch die Template-Engine Blade vollständig unterstützt. Darüber hinaus gibt es jetzt auch eine Live-Console mit JavaScript- und NodeJS-Debugger. PHP und Javascript könnt ihr in PHPStorm 8 auch gleichzeitig debuggen.

PHPStorm 8: IDE bringt Unterstützung für AngularJS, Spy-JS und Grunt mit

PHPStorm 8 bietet zudem einen verbesserten Support für das beliebte AngularJS-Framework von Google. Auch JavaScript-Tracing mit Spy-JS wurde integriert. Wie das funktioniert, könnt ihr in einem Video der PHPStorm-Macher sehen, das wir unterhalb des Artikels eingebunden haben. Auch der JavaScript-Task-Runner Grunt wurde direkt in PHPStorm 8 integriert. Ihr könnt Tasks in der Entwicklungsumgebung auswählen und mit einem Klick starten.

PHPStorm 8 könnt ihr 30 Tage lang testen, danach wird der Erwerb einer kostenpflichtige Lizenz notwendig. Unternehmen zahlen 179 Euro, Privatpersonen 89 Euro. Darüber hinaus gibt es verschieden Rabattmöglichkeiten für Startups sowie für Studenten und Lehrer. Wer eine Lizenz nach dem 16. September 2013 erworben hat, bekommt das Update kostenlos.

]]>
Kim Rixecker
Für euer CMS oder eure Web-App: Mit dem jQuery-Plugin ContentBuilderJS werden Inhalte einfach zusammengeklickt http://t3n.de/news/contentbuilderjs-jquery-plugin-567121/ 2014-09-15T11:07:03Z
ContentBuilderJS ist ein jQuery-Plugin, mit dem sich Webseiten aus vorgefertigten Blöcken einfach zusammenklicken lassen. Die Inhalte der jeweiligen Blöcke lassen sich anschließend direkt Inline …

ContentBuilderJS ist ein jQuery-Plugin, mit dem sich Webseiten aus vorgefertigten Blöcken einfach zusammenklicken lassen. Die Inhalte der jeweiligen Blöcke lassen sich anschließend direkt Inline bearbeiten.

Mit dem jQuery-Plugin ContentBuilderJS klickt ihr euch eure Seite einfach aus verschiedenen Elementen zusammen. (Screenshot: ContentBuilderJS)
Mit dem jQuery-Plugin ContentBuilderJS klickt ihr euch eure Seite einfach aus verschiedenen Elementen zusammen. (Screenshot: ContentBuilderJS)

jQuery-Plugin: Content-Blöcke einfach auswählen und bearbeiten mit ContentBuilderJS

Verschiedene Content-Managment-Systeme wie beispielsweise Marquee bieten die Möglichkeit, Texte, Bilder, Videos oder andere Elemente per Drag-and-Drop auszuwählen und so die Struktur eines Seite oder eines Beitrags festzulegen. Mit ContentBuilderJS gibt es jetzt ein kommerzielles jQuery-Plugin, mit dem ihr diese Funktionalität ebenfalls bekommt.

ContentBuilderJS macht aus DIV-Elementen editierbare Flächen. Nutzer können vorgefertigte Blöcke auf die Seite ziehen und selbst bestimmen, in welcher Reihenfolge sie dargestellt werden sollen. Dazu greift ihr entweder auf vorgefertigte Blöcke des Anbieters zurück, oder ihr erstellt eigene Blöcke, die zu eurem Design und der gewünschten Funktionalität der Seite passen.

ContentBuilderJS bringt praktische Editierfunktionen für Texte und Bilder mit

Blöcke können aus verschiedenen Elementen bestehen und beispielsweise Texte und Bilder vereinen. Die Texte können direkt auf der Seite bearbeitet werden. Dazu stehen euch die üblichen Editierfunktionen zur Verfügung. Auch in Bilder könnt ihr nach dem Upload herein- oder herauszoomen. Außerdem könnt ihr euch den HTML-Code von jedem einzelnen Element oder der gesamten Seite anzeigen lassen. Einige Demos des Plugins findet ihr hier, hier oder hier.

ContentBuilderJS eignet sich zum Einsatz in einem CMS oder für die eigene Web-App. Die günstigste Lizenz kostet 55 US-Dollar. Damit könnt ihr ContentBuilderJS auf so vielen Websites einsetzen, wie ihr möchtet, aber ihr könnt es nicht in Form eines fertigen Produktes weiterverkaufen. Für 169 US-Dollar dürft ihr ContentBuilderJS als Teil eines Produktes weiterverkaufen und für 399 US-Dollar sogar in drei Produkten. Zahlt ihr den letztgenannten Preis, steht euch auch der Source-Code zur freien Verfügung. Die Bezahlung kann bequem über PayPal abgewickelt werden und es besteht die Möglichkeit, an einem späteren Zeitpunkt zu einem reduzierten Preis von einer der niedrigeren Lizenzen auf die teuerste Variante umzusteigen.

via news.ycombinator.com

]]>
Kim Rixecker
Schick, einfach und mit WordPress-Integration: So erzählt ihr Geschichten mit Storyform http://t3n.de/news/storyform-wordpress-566707/ 2014-09-12T08:47:54Z
Mit Storyform sollt ihr eure Artikel in kürzester Zeit richtig schick aufbereiten können. Das Tool gibt es als WordPress-Plugin, mit etwas mehr aufwand kann es aber auch mit anderen …

Mit Storyform sollt ihr eure Artikel in kürzester Zeit richtig schick aufbereiten können. Das Tool gibt es als WordPress-Plugin, mit etwas mehr aufwand kann es aber auch mit anderen Content-Management-Systemen genutzt werden.

WordPress-Plugin: Mit Storyform erstellte Artikel sehen einfach schick aus. (Screenshot: Storyform)
WordPress-Plugin: Mit Storyform erstellte Artikel sehen einfach schick aus. (Screenshot: Storyform)

Storyform: In wenigen Klicks zu einem schicken Artikel

Die New York Times hat es 2012 mit ihren Multimedia-Artikel „Snow Fall“ vorgemacht: Online-Artikel müssen nicht unbedingt einer starren Form folgen. Es gibt Alternativen zum einfachen Webseiten-Layout, bei dem der Text von oben nach unten verläuft und nur gelegentlich durch Bilder unterbrochen wird. Allerdings hat natürlich nicht jeder die notwendigen Ressourcen, um gleich einen sogenannten Scrollytelling-Artikel auf die Beine zu stellen.

Wer trotzdem nicht auf ein schickes, von Print-Magazinen inspiriertes Design verzichten möchte, für den gibt es mit Storyform eine einfache Möglichkeit, um genau das zu erreichen. Die damit erstellten Artikel setzen auf ansehnliche Typografie, nebeneinander angeordnete Spalten und großformatige Bilder. Außerdem lassen sich leicht Fullscreen-Videos integrieren und die verschiedenen Templates sind vollständig responsiv.

Storyform kann mit jedem beliebigen CMS genutzt werden. (Screenshot: Storyform)
Storyform kann mit jedem beliebigen CMS genutzt werden. (Screenshot: Storyform)

Storyform für WordPress oder für jedes andere CMS

Die einfachste Möglichkeit Storyform zu verwenden, ist das WordPress-Plugin. Das könnt ihr über WordPress.org installieren, oder indem ihr euch das Plugin direkt von der Storyform-Website als ZIP-Datei besorgt. Da findet sich auch eine Anleitung zur Erstellung von Storyform-Artikeln.

Alternativ zum WordPress-Plugin, könnt ihr Storyform auch in Kombination mit anderen Content-Managment-Systemen verwenden. Das ist aber logischerweise deutlich aufwendiger bei der Einrichtung und bei der Erstellung von Artikeln. Egal, für welche Plattform ihr euch entscheidet, um Storyform nutzen zu können, müsst ihr auf der Website des Anbieters einen App-Key beantragen. Dazu reicht die Eingabe eurer E-Mail-Adresse, eures Namens und der URL eurer Website.

via www.producthunt.com

]]>
Kim Rixecker
Der große t3n-Guide zum eigenen WordPress-Theme – Teil 3: Alternative Startseite und Galerie-Teaser http://t3n.de/news/t3n-guide-wordpress-theme-teil-3-alternative-startseite-galerie-teaser-558172/ 2014-09-10T09:38:38Z
Diese Artikelreihe dreht sich darum, ein WordPress-Theme zu erstellen – von Grund auf. Im dritten Teil geht es weiter mit der Entwicklung und wir kümmern uns um die ersten Details.

Diese Artikelreihe dreht sich darum, ein WordPress-Theme zu erstellen – von Grund auf. Im dritten Teil geht es weiter mit der Entwicklung und wir kümmern uns um die ersten Details.

Zuerst möchte ich darauf hinweisen, dass der letzte Teil ein wenig aktualisiert wurde und einige kleine Änderungen vorgenommen wurden (siehe dazu die Update-Box am Anfang des Artikels). Da der letzte Teil der Reihe doch ziemlich lang war habe ich mich dazu entschieden, lieber noch ein oder zwei Artikel mehr zu schreiben und dafür die einzelnen Teile kürzer zu halten. Deshalb werden wir in diesem Teil nicht mit allem inhaltlichen fertig werden (würden wir vermutlich auch nicht, wenn der Artikel so lang werden würde wie Teil zwei).

Wir wollen uns in diesem Teil zuerst um die verschiedenen Post-Format-Templates kümmern. Teilweise ist die Code-Darstellung hier in dem Artikel etwas unübersichtlich, da der Editor von WordPress die Einrückung zunichte macht und auch einige längere Zeilen dabei sind – ihr könnt euch den Code etwas übersichtlicher auf GitHub anschauen. Die langen Zeilen sind hier in dem Beitrag umgebrochen (zu erkennen an diesem Zeichen: ), weshalb die Zeilenangaben hier in dem Artikel nicht mit den Zeilen bei GitHub übereinstimmen.

Bei den meisten Post-Formaten, die wir in der functions.php ziemlich am Anfang aktiviert haben, sehe ich aktuell keinen Anlass, die Standardausgabe der content.php-Datei zu verändern. Anders sieht das bei der Galerie aus. Hier wollen wir ein großes Vorschaubild und noch einige kleine Vorschaubilder anzeigen lassen. Wenn der Artikel ein Featured Image gesetzt hat, werden wir dies als großes Bild darstellen. Gibt es das nicht, nehmen wir das erste aus der Galerie.

Ungefähr so soll eine Galerie in der Blog-Ansicht aussehen. (Fotos: Dennis Brinkmann)
Ungefähr so soll eine Galerie in der Blog-Ansicht aussehen. (Fotos: Dennis Brinkmann)

Kopieren wir zuerst den Inhalt der content.php-Datei in die neu erstellte content-gallery.php-Datei. Anschließend tauschen wir im Header den Aufruf der Funktion bornholm_the_post_header() gegen folgenden Schnipsel Code aus:

$images = bornholm_get_gallery_images( $post->ID );
bornholm_gallery_thumbnail_and_title('large', $images, 'h1');

Mit der Funktion bornholm_get_gallery_images() holen wir uns die Bilder der Galerie und speichern sie in der Variable $images.  Diese sieht wie folgt aus und wird an das Ende der functions.php-Datei geschrieben.

function bornholm_get_gallery_images( $post_id ) {
$post = get_post( $post_id );
// Den Beitrag gibt es nicht, oder er ist leer.
if ( ! $post || empty ( $post->post_content ) )
return array();
$galleries = get_post_galleries( $post, false );
if ( empty ( $galleries ) )
return array();
$ids = array();
foreach ( $galleries as $gallery ) {
if ( ! empty ( $gallery['ids'] ) )
$ids = array_merge( $ids, explode( ',', $gallery['ids'] ) );
}
$ids = array_unique( $ids );
if ( empty ( $ids ) )
return array();
$images = get_posts(
array (
'post_type'      => 'attachment',
'post_mime_type' => 'image',
'orderby'        => 'menu_order',
'numberposts'    => 999,
'include'        => $ids
)
);
if ( ! $images )
return array();
return $images;
}

An dieser Stelle zuerst vielen Dank an Thomas Scholz, der sich den von mir fabrizierten Code angeschaut und mir einige Tipps zur Verbesserung gegeben hat – unter anderem hat er mir die Funktion bornholm_get_gallery_images() geschrieben, da mein Weg nicht ganz zum Ziel geführt hat.

In der Funktion holen wir uns mit get_post() die Informationen zu dem Beitrag und speichern sie in der Variable $post. Wenn es den Post nicht gibt oder er leer ist, dann beenden wir die Funktion und geben nur ein leeres Array zurück. Anschließend speichern wir uns die Galerie-Informationen (unter anderem die IDs der Bilder aus der Galerie) in der Variable $galleries. An die Funktion get_post_galleries() übergeben wir neben dem Post-Objekt den booleschen Wert false, damit wir keinen HTML-Code zurückbekommen, sondern nur Daten in einem Array. Wenn keine Galerie oder Galerien vorhanden sind, dann beenden wir die Funktion wieder und geben ein leeres Array zurück.

In der nächsten Zeile initiieren wir ein Array und speichern es in der Variable $ids, das wir anschließend in einer foreach-Schleife befüllen. Wir durchlaufen die Galerien und befüllen das Array $ids mit den Werten aus dem Schlüssel ids des $gallery-Arrays. Nach Beendigung der Schleife entfernen wir doppelte Werte aus dem Array und prüfen, ob das Array leer ist. Ist das der Fall, beenden wir die Funktion wiederum mit der Rückgabe eines leeren Arrays.

Wenn das Array nicht leer ist, dann holen wir uns mit get_posts() die Informationen der Bilder, die wir später benötigen. Wenn wir keine Daten zurückbekommen, dann beenden wir die Funktion wieder vorzeitig und geben sonst das Ergebnis-Array mit den Informationen zu den Galerie-Bildern zurück.

An die Funktion bornholm_gallery_thumbnail_and_title() aus der content-gallery.php-Datei übergeben wir als Parameter die gewünschte Größe des Thumbnails, das Ergebnis der gerade besprochenen bornholm_get_gallery_images()-Funktion und die Überschriften-Ebene. Die Funktion schreiben wir wie folgt an das Ende der functions.php:

function bornholm_gallery_thumbnail_and_title($size, $images, $heading) {
global $post;
if ( $images ) :
$image = array_shift( $images );
$image_img_tag = wp_get_attachment_image( $image->ID, $size );
?>
<a href="<?php the_permalink(); ?>" ↵
title="<?php the_title_attribute( array( ↵
'before' => __( 'Permalink to: ', 'bornholm'), ↵
'after' => '' ) ); ?>" rel="bookmark">
<?php echo '<' . $heading .' class="entry-title">';
the_title();
echo '</' .$heading .'>'; ?>
<figure class="gallery-thumb">
<?php if ( has_post_thumbnail() ):
the_post_thumbnail($size);
else:
echo $image_img_tag;
endif; ?>
</figure><!-- .gallery-thumb -->
</a>
<?php else:?>
<?php echo '<' . $heading .' class="entry-title">';?>
<a href="<?php the_permalink(); ?>" ↵
title="<?php the_title_attribute( ↵
array( 'before' => __( 'Permalink to: ', 'bornholm'), ↵
'after' => '' ) ); ?>" rel="bookmark"><?php the_title();?></a>
<?php echo '</' .$heading .'>';
endif;
}

Wenn wir aus dem Aufruf der bornholm_get_gallery_images()-Funktion etwas zurückbekommen, speichern wir in der Variable $image das erste Element des Bilder-Arrays mittels der PHP-Funktion array_shift. In der nächsten Zeile speichern wir dann in der Variable $image_img_tag das Image-Tag des ersten Bildes. An die Funktion wp_get_attachment_image() übergeben wir die ID des ersten Bildes und die gewünschte Größe large, die wir als Parameter mit dem Funktionsaufruf übergeben haben.

Anschließend kommt bereits bekannter Code. Wir verlinken den Titel, bei dem wir die Ebene der Überschrift aus der Variable $heading holen, und das Featured Image oder, wenn kein Featured Image gesetzt ist, geben wir stattdessen das erste Bild aus. Falls aus irgendeinem Grund keine Bilder gefunden werden sollten, geben wir einfach den Titel aus.

Das war noch relativ einfach – problematisch wurde es als es daran ging, die ersten zwei Bilder aus der Galerie zu bekommen. Nach einiger Bastelei ist dann folgendes dabei herausgekommen, was wir an das Ende der functions.php-Datei schreiben:

function bornholm_small_gallery_thumbnails_and_picture_number($size, $images) {
global $post;
if ( $images ) :
$total_images = count( $images );
$small_images = bornholm_get_gallery_images( $post->ID );
if ( has_post_thumbnail() ):
$post_thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ));
$counter = 0;
$image_list = '<ul>';
foreach( $small_images as $single_image ):
$single_image_url = wp_get_attachment_image_src( $single_image->ID );
if($counter>=2):
break;
endif;
if($post_thumbnail[0]==$single_image_url[0]):
continue;
endif;
$image_list .= '<li>' . wp_get_attachment_image( $single_image->ID, $size ) . '</li>';
$counter++;
endforeach;
$image_list .= '</ul>';
echo $image_list;
else:
$counter = 0;
$image_list = '<ul>';
foreach( $small_images as $single_image ):
if($counter==0):
$counter++;
continue;
endif;
if($counter>=3):
break;
endif;
$image_list .= '<li>' . wp_get_attachment_image( $single_image->ID, $size ) . '</li>';
$counter++;
endforeach;
$image_list .= '</ul>';
echo $image_list;
endif;
?>
<p><em><?php printf( _n( 'This gallery contains ↵
<a %1$s>%2$s photo</a>.', 'This gallery contains ↵
<a %1$s>%2$s photos</a>.', $total_images, 'bornholm' ), ↵
'href="' . esc_url( get_permalink() ) . '" ↵
title="' . esc_attr( sprintf( __( 'Permalink to %s', 'bornholm' ), ↵
the_title_attribute( 'echo=0' ) ) ) . '" ↵
rel="bookmark"', number_format_i18n( $total_images )); ?> ↵
</em></p>
<?php endif;
}

Die ersten Zeilen der Funktion sind hier identisch mit der vorherigen. Nach der Überprüfung der Variable $images speichern wir die Anzahl der Bilder in der Variable $total_images. Anschließend durchlaufen wir die Bilder wie in dem oberen Code-Teil und speichern das Ergebnis in der Variable $small_images. Danach prüfen wir, ob es ein Featured Image gibt – ist das der Fall, müssen wir prüfen, welches das ist, damit wir nicht aus Versehen hier dasselbe Bild ein zweites Mal in klein ausgeben.

Wir holen uns mit der wp_get_attachment_image_src()-Funktion die Daten des Featured Image (unter anderem die URL an erster Stelle des Ergebnis-Arrays), indem wir die ID übergeben, die wir aus der get_post_thumbnail_id()-Funktion zurückbekommen, und speichern sie in der Variable $post_thumbnail. Anschließend setzen wir eine Zähler-Variable auf Null und widmen uns der Liste der kleineren Vorschaubilder.

Wir durchlaufen eine foreach-Schleife für jeden der Array-Werte aus der bornholm_get_gallery_images()-Funktion und speichern jedes Mal die Daten des Bildes in der Variable $single_image_url. Wenn der Counter größer oder gleich zwei ist, brechen wir die foreach-Schleife ab und machen danach weiter. Wenn die URL des aktuellen Bildes identisch mit der des Featured Image ist, brechen wir nur den aktuellen Durchlauf ab. Andernfalls hängen wir bei jedem Durchlauf an die Variable $image_list einen Listeneintrag mit dem aktuellen Bild an und erhöhen den Zähler um einen Wert.

Wenn kein Featured Image gesetzt ist, dann gehen wir etwas anders vor. Wenn der Counter auf Null steht, brechen wir den aktuellen Durchlauf der Schleife ab – also immer den ersten. Wenn der Counter größer oder gleich drei ist, dann brechen wir die komplette Schleife ab – andernfalls füllen wir die Variable mit einem weiteren Listenelement und erhöhen den Zähler. Abschließend schließen wir die Liste und geben per echo die Liste aus. Danach zeigen wir noch die Zahl der Bilder an, die wir anfangs in $total_images gespeichert haben.

Der Aufruf der Funktion sieht in der content-gallery.php-Datei dann so aus – damit ersetzen wir den Inhalt des div-Elements mit der Klasse entry-content:

bornholm_small_gallery_thumbnails_and_picture_number('thumbnail', $images);

Damit sieht die content-gallery.php nun so aus:

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<?php $images = bornholm_get_gallery_images( $post->ID );
bornholm_gallery_thumbnail_and_title('large', $images, 'h1');?>
</header><!-- .entry-header -->
<div class="entry-content">
<?php bornholm_small_gallery_thumbnails_and_picture_number('thumbnail', $images);?>
</div><!-- .entry-content -->
<footer class="entry-meta">
<?php bornholm_footer_meta() ?>
</footer><!-- .entry-meta -->
</article><!-- #post-<?php the_ID(); ?> -->

Und das war's auch erst mal mit dem Kapitel content-Dateien. Vielleicht werden wir hier später noch die Kamera-Informationen darstellen, die der Nutzer eingetragen hat, und einen prominenteren Hinweis auf die ganze Galerie platzieren aber für den Moment soll uns das so reichen.

Kümmern wir uns als nächstes um die alternative Startseite des Themes – den kleinen Ausschnitt aus dem Portfolio. Hier möchten wir zuerst grundlegend die neuesten zwei oder drei Galerien aus den verschiedenen Kategorien darstellen. Wenn mehr Galerien vorhanden sind, dann zeigen wir zusätzlich noch einen Link auf die Kategorie-Seite – im besten Fall hat der Nutzer eigene Kategorien für Galerien, damit der Besucher auch wirklich nur Galerien vorfindet.

So in etwa soll am Ende die alternative Startseite aussehen. (Fotos: Dennis Brinkmann)
So in etwa soll am Ende die alternative Startseite aussehen. (Fotos: Dennis Brinkmann)

Standardmäßig möchten wir außerdem, dass Galerien aus untergeordneten Kategorien auch direkt unter der übergeordneten Galerie-Kategorie aufgeführt werden. Wenn es also eine allgemeinere Galerie-Kategorie „Sport“ gibt, und dieser dann die Galerie-Kategorie „Leichtathletik“ untergeordnet ist, dann sollen die neusten Galerien aus „Leichtathletik“ direkt unter denen aus der Kategorie „Sport“ angezeigt werden. In dem Theme-Customizer werden wir dem Nutzer dann in einem späteren Teil noch die Möglichkeit geben, die ganzen Kategorien einfach alphabetisch sortiert auszugeben ohne die Hierarchie zu beachten.

Legen wir uns also die Datei alternative-home-page.php an und füllen sie mit ein wenig Inhalt:

<?php
/*
* Template Name: Alternative home page
* Description: A Page Template for the alternative home page. It displays a brief overview of the portfolio.
*/
get_header(); ?>
<main role="main">
<?php
$args = array(
'orderby' => 'name',
'parent' => 0
);
$categories = get_categories( $args );
foreach ( $categories as $cat ):
$galleries_args = array(
'category__in' => $cat->cat_ID,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => $cat->slug
),
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => 'post-format-gallery'
)
)
);
$galleries = get_posts( $galleries_args );
if( $galleries) :
$total_galleries = count($galleries);
$number_of_galleries = 3;
$gallery_counter = 0;?>
<div class="gallery-category">
<h2><?php echo $cat->name; ?></h2>
<?php foreach ( $galleries as $post ):
if($total_galleries > $number_of_galleries):
$gallery_counter++;
if($gallery_counter > $number_of_galleries):?>
<article>
<h3><a href="<?php echo esc_url(get_category_link( $cat->cat_ID )) ?>" ↵
title="<?php _e('All Posts from ', 'bornholm'); echo $cat->name ?>"> ↵
<?php _e('Display all', 'bornholm');?></a></h3>
</article>
<?php break;
endif;
endif;?>
<article>
<?php $images = bornholm_get_gallery_images( $post->ID );
bornholm_gallery_thumbnail_and_title('thumbnail', $images, 'h3'); ?>
</article>
<?php endforeach;
bornholm_get_child_category_galleries($cat, $number_of_galleries);?>
</div>
<?php endif;
endforeach;?>
</main>
<?php get_sidebar();
get_footer(); ?>

Zuerst kommt in dem Kommentar der Name und die Beschreibung des Templates, den der Nutzer dann auch zu sehen bekommt. Anschließend holen wir uns ganz normal den Header und öffnen das main-Tag. In Zeile neun befüllen wir ein Array mit den benötigten Angaben, nach denen wir anschließend die Kategorien aussuchen möchten. Wir sortieren nach dem Namen der Kategorien und geben per 'parent' => 0 an, dass wir nur die Kategorien der obersten Ebene haben möchten – wir erinnern uns: Die untergeordneten Kategorien möchten wir räumlich dicht bei den Oberkategorien ausgeben.

Im nächsten Schritt speichern wir die Informationen, die uns die get_categories()-Funktion zu den Kategorien liefert, in der Variablen $categories. Jede dieser Kategorien durchlaufen wir nun mit einer foreach-Schleife – die gerade aktuelle Kategorie wird dabei in der Variable $cat gespeichert. Nun müssen wir als nächstes die Beiträge auslesen, die in der Kategorie sind und das Post-Format „Galerie“ haben. Dafür bereiten wir ab Zeile 15 ein Array vor, dem wir die Parameter für die später aufzurufende get_posts()-Funktion übergeben.

Als Wert für 'category__in' übergeben wir mit $cat->cat_ID die ID der aktuellen Kategorie. Den Schlüssen category statt 'category__in' zu verwenden, wie es naheliegen würde, reicht hier nicht aus, da sonst auch die Beiträge der Unterkategorien ausgelesen werden würden. Dem Schlüssel 'tax_query' übergeben wir als Wert ein mehrdimensionales Array: Die Posts sollen einmal für die Taxonomie 'category' den slug haben, der mit dem Slug der aktuellen Kategorie übereinstimmt ('terms' => $cat_child->slug). Diese Bedingung verknüpfen wir mittels AND mit der zweiten, nämlich dass der Slug des Post-Formats mit dem Slug post-format-gallery übereinstimmen muss.

Die Posts, die diese Merkmale erfüllen, holen wir uns in Zeile 31 mit der get_posts()-Funktion und speichern sie in der Variable $galleries. Danach prüfen wir, ob wir Posts zurückbekommen haben – wenn das der Fall ist, dann zählen wir sie und legen die Zahl der anzuzeigenden Galerien ($number_of_galleries) fest. In der nächsten Zeile setzen wir einen Counter auf Null und geben danach als ersten Inhalt in dem div-Element den Namen der Kategorie aus. Nun folgt eine weitere foreach-Schleife, mit der wir die einzelnen Galerie-Beiträge durchlaufen.

Wenn die Anzahl der Galerien größer ist, als die Zahl, die wir anzeigen möchten, dann müssen wir ja entsprechend den Link zu der Kategorie ausgeben, damit der Nutzer auch die anderen Galerien anschauen kann. Wenn das also der Fall ist, erhöhen wir zuerst den Counter um eins und testen anschließend, ob der Wert des Counters größer ist als die Anzahl der Galerien, die wir anzeigen wollen. Ist dem so, geben wir innerhalb eines article-Elements als h3-Headline den Text „Display all“ als Link auf die Kategorie aus. Danach brechen wir die foreach-Schleife mit break ab.

Wenn der Counter noch nicht höher ist als die Anzahl der anzuzeigenden Galerien oder sowieso weniger Galerien vorhanden sind, dann geben wir ab Zeile 50 wiederum in einem article-Element mit der bornholm_gallery_thumbnail_and_title()-Funktion das Artikelbild oder das erste Bild der Galerie mit der Headline aus, wie wir das oben in der content-gallery.php-Datei schon gemacht haben.

Nachdem der Durchlauf der foreach-Schleife entweder durch das break abgebrochen oder normal beendet wurde, wenn weniger Galerien vorhanden sind als dargestellt werden sollen, rufen wir die Funktion bornholm_get_child_category_galleries() auf, um die Kategorien auszugeben, die der aktuellen Kategorie untergeordnet sind. Als Parameter übergeben wir die aktuelle Kategorie und die Nummer der anzuzeigenden Galerien. Danach werden einfach noch die Tags, Schleifen und Bedingungen geschlossen und beendet, die noch offen sind, und die Sidebar und der Footer auf altbekannte Weise eingebunden.

Die Funktion bornholm_get_child_category_galleries() gehört wieder in die functions.php und sieht so aus:

function bornholm_get_child_category_galleries($cat, $number_of_galleries) {
$category_children = get_term_children( $cat->term_id, 'category' );
if ( $category_children ):
foreach( $category_children as $cat_child ):
$cat_child = get_category($cat_child);
$child_galleries_args = array(
'category__in' => $cat_child->term_id,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' =>  $cat_child->slug
),
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => 'post-format-gallery'
)
)
);
$child_galleries = get_posts( $child_galleries_args );
if( $child_galleries) :
$total_child_gallerys = count($child_galleries);
$gallery_child_counter = 0;?>
<div class="gallery-category child">
<h2><?php echo $cat_child->name; ?></h2>
<?php foreach ( $child_galleries as $post_child ) :
if($total_child_gallerys > $number_of_galleries):
$gallery_child_counter++;
if($gallery_child_counter > $number_of_galleries):?>
<article>
<h3><a href="<?php echo esc_url(get_category_link( $cat_child->cat_ID )) ?>" ↵
title="<?php _e('All Posts from ', 'bornholm'); echo $cat_child->name ?>"> ↵
<?php _e('Display all', 'bornholm');?></a></h3>
</article>
<?php break;
endif;
endif;?>
<article>
<?php $images_child = bornholm_get_gallery_images( $post_child->ID );
if ( $images_child ) :
$image_child = array_shift( $images_child );
$image_child_img_tag = wp_get_attachment_image( $image_child->ID, 'thumbnail' );
?>
<a href="<?php echo get_permalink( $post_child->ID ); ?>" ↵
title="<?php _e( 'Permalink to: ', 'bornholm'); echo $post_child->post_title ?>" rel="bookmark">
<h3 class="entry-title"><?php echo $post_child->post_title; ?></h3>
<figure class="gallery-thumb">
<?php if ( has_post_thumbnail($post_child->ID) ):
echo get_the_post_thumbnail($post_child->ID, 'thumbnail');
else:
echo $image_child_img_tag;
endif; ?>
</figure><!-- .gallery-thumb -->
</a>
<?php else:?>
<h3 class="entry-title"><a href="<?php echo get_permalink( $post_child->ID ); ?>" ↵
title="<?php _e( 'Permalink to: ', 'bornholm'); echo $post_child->post_title ?>" ↵
rel="bookmark"><?php echo $post_child->post_title; ?></a></h3>
<?php endif; ?>
</article>
<?php endforeach; ?>
</div>
<?php endif;
endforeach;
endif;
}

Das sieht zugegebenermaßen viel aus, aber einiges davon hatten wir eben in der alternative-home-page.php-Datei bereits in Verwendung. Zuerst holen wir uns mittels der get_term_children()-Funktion die untergeordneten Kategorien der aktuellen Kategorie und speichern das Ergebnis in der Variable $category_children. Wir übergeben als Parameter die ID der aktuellen Kategorie ($cat->term_id) und die Art des Terms, die wir zurückbekommen möchten, nämlich 'category'. Wenn wir hier untergeordnete Kategorien zurückbekommen, dann durchlaufen wir diese genauso, wie wir das mit den übergeordneten Kategorien in der alternative-home-page.php-Datei auch gemacht haben:

In der Variable $cat_child speichern wir uns äquivalent zu der Variable $cat die Informationen aus dem Aufruf der get_category()-Funktion – get_term_children() liefert uns nämlich nur die ID zurück. Bis Zeile 41 ist danach alles fast identisch mit dem Code aus der alternative-home-page.php, wir müssen lediglich die Variablen anpassen und brauchen nicht mehr die Anzahl der anzuzeigenden Galerien festzulegen, da wir das ja in der Variable $number_of_galleries bereits getan haben.

Bei meinem Versuch, auch einfach wie in der anderen Datei die Funktion bornholm_get_child_category_galleries() zu nutzen, trat dann allerdings ein Fehler auf. Es wurde nicht der korrekte Titel und Link ausgegeben, sondern der von der letzten Galerie aus der übergeordneten Kategorie – auch das Featured Image hat nicht gepasst.

Die Zeilen 42 bis 61 entsprechen also nur fast denen in der bornholm_get_child_category_galleries()-Funktion. Die Funktion the_permalink() ersetzen wir durch echo get_permalink( $post_child->ID );, die Funktion the_title_attribute() durch echo $post_child->post_title; und the_title() ersetzen wir durch echo $post_child->post_title. Der Funktion has_post_thumbnail() übergeben wir die ID des Posts und the_post_thumbnail('thumbnail'); ersetzen wir durch folgende Zeile:

echo get_the_post_thumbnail($post_child->ID, 'thumbnail');

Schon wieder ziemlich viel geworden – Schluss jetzt!

Das soll es dann auch mit diesem Teil gewesen sein. Die Code-Beispiele waren diesmal ziemlich lang, ich hoffe, es war noch okay so und ich konnte es verständlich erklären (Ich werde mein „Code-Design“ für den nächsten Teil anpassen, weshalb es sein kann, dass die Veröffentlichung etwas länger dauert (Einarbeitungszeit et cetera)). Wir haben jetzt also die Galerien in der Blog-Ansicht und die alternative Startseite grundlegend fertig.

Bei den Galerien in der Blog-Ansicht kommen, wie schon gesagt, vielleicht noch die Kamera-Informationen dazu, die der Autor angeben können soll. Bei der alternativen Startseite fehlt auf jeden Fall noch die Möglichkeit, ein großes Vorschaubild festzulegen, sowie die großen Widgets optional nach oben zu ziehen.

Alle Teile unseres Guides im Überblick:

]]>
Florian Brinkmann
WordPress 4.0 erschienen: Diese Funktionen bringt die neue Version http://t3n.de/news/wordpress-4-0-funktionen-neue-version-556971/ 2014-09-05T08:30:38Z
WordPress 4.0 „Benny“ ist erschienen. Die neue Major-Version bringt etliche neue Features mit, und verspricht vor allem beim Editor und Media-Modul viele neue Features.

4.0 „Benny“ ist erschienen. Die neue Major-Version bringt etliche neue Features mit, und verspricht vor allem beim Editor und Media-Modul viele neue Features.

WordPress liefert in Version 4.0 einige Verbesserungen, die das Leben der Nutzer erheblich vereinfachen können – darunter Änderungen der Medienansicht, bei der Einbindung von Videos, Tweets et cetera und vor allem eine deutliche Verbesserungen Nutzbarkeit des Editors.

WordPress 4.0: Viele hilfreiche neue Features

Doch der Reihe nach: In WordPress ist es seit Version 2.9 möglich, bestimmte Dienste einfach per Angabe der URL einzubinden – häufig genutzt wird beispielsweise die Einbindung von Tweets, die seit Version 3.4 unterstützt wird. In der kommenden Version 4.0 wird in den visuellen Editor eine Vorschau dieser Einbettungen integriert. Wenn ihr also in eine eigene Zeile die URL eines Tweets einfügt, dann bekommt ihr gleich die Vorschau angezeigt. Dasselbe funktioniert auch bei dem Punkt „Von URL einfügen“ unter „Dateien einfügen“.

Für mehr Übersicht und einen schnelleren Überblick in medienlastigen Backends sorgt die Grid-Ansicht, die – jedenfalls in der Beta – standardmäßig aktiv ist. Die „alte“ Listenansicht könnt ihr euch natürlich aber auch zurückholen, wenn ihr wollt.

Für den schnellen Überblick: Die neue Darstellung der Medien in WordPress 4.0. (Screenshot: eigene Installation)
Für den schnellen Überblick: Die neue Darstellung der Medien in WordPress 4.0. (Screenshot: eigene Installation)

Ebenfalls visuell verbessert wurde die Suche nach Plugins. Wenn ihr nach einem Plugin sucht, dann wird euch statt einer Liste jetzt eine übersichtlichere Kachelansicht der Ergebnisse angezeigt – zusätzlich zur Listenansicht wird euch hier auch gleich gezeigt, wann das Plugin zuletzt aktualisiert wurde und ob es bereits erfolgreich mit der WordPress-Version getestet wurde, die ihr nutzt. Wenn ihr euch dann die Details eines Plugins anschauen möchtet, öffnet sich in einem Overlay die Plugin-Seite aus dem WordPress-Plugin-Verzeichnis, wodurch ihr jetzt neben der ansprechenderen Gestaltung auch gleich Zugriff auf die Reviews habt, was in der vorherigen Ansicht nicht möglich war.

So sieht die Ergebnisseite nach einer Plugin-Suche aus. (Screenshot: eigene Installation)
So sieht die Ergebnisseite nach einer Plugin-Suche aus. (Screenshot: eigene Installation)

Die besten Änderungen erfolgen im Editor

„Die besten Änderungen“ ist natürlich rein subjektiv, doch wir denken, dass die Verbesserungen am Editor nicht nur uns sehr gut gefallen. Wie Mark Jaquith, einer der Lead-Developer von WordPress, es in seinem Ticket ganz richtig beschreibt:

„Die Höhe des Bildschirms wird nicht voll genutzt und das Bearbeiten ist eine frustrierende Situation aus einem scrollbaren Container innerhalb eines weiteren scrollbaren Containers mit vielen Ablenkungen.“

Dem kann man nur zustimmen. Hat man aus Versehen mal wieder zu weit „im äußeren Bereich“ gescrollt und die Werkzeugleiste oben nicht mehr sichtbar ist, muss man erst wieder nach oben scrollen, um beispielsweise ein Bild einfügen zu können. Befindet man sich mit dem Cursor im Artikel, muss man eventuell auch hier noch scrollen oder die Maus an den Rand bewegen. Das ändert sich jetzt endlich: Der Editor passt sich in WordPress 4.0 automatisch der Höhe des Inhalts an. Einen Scrollbalken gibt es im Editor damit nicht mehr. Wenn dann gescrollt wird und die obere Werkzeugeiste eigentlich aus dem sichtbaren Bereich verschwinden würde, wird sie einfach am oberen Rand fixiert. Gleiches gilt für die untere Leiste, in der Informationen wie die Wortanzahl und der zuletzt Bearbeitende angezeigt werden.

Meiner Meinung nach die beste Änderung: Die Überarbeitung des Editors. (Screenshot: eigene Installation)
Meiner Meinung nach die beste Änderung: Die Überarbeitung des Editors. (Screenshot: eigene Installation)

Fazit: WordPress 4.0 wird toll – vor allem der Editor!

Es sind zwar keine revolutionären Änderungen dabei, aber die mitgebrachten Verbesserungen sind gut überlegt und sinnvoll. Weitere Infos über den neuen Release findet ihr im offiziellen WordPress-Blog. Bestehende WordPress-Installationen weisen euch automatisch auf die Verfügbarkeit des neuen Updates hin. Wer sich WordPress 4.0 neu downloaden möchte, muss sich zukünftig nicht mehr für eine Sprachversion entscheiden. Diese Einstellung kann nun während der Installation ausgewählt werden.

via wordpress.org

]]>
Florian Brinkmann
Welches Theme ist das? Diese Tools identifizieren WordPress-Themes für euch http://t3n.de/news/wordpress-themes-identifizieren-564458/ 2014-08-28T09:10:33Z
Wir haben für euch drei Tools unter die Lupe genommen, die euch sagen, welches Theme ein WordPress-Blog einsetzt. Welches das beste Werkzeug dafür ist, verraten wir euch in unserem Artikel.

Wir haben für euch drei Tools unter die Lupe genommen, die euch sagen, welches ein WordPress-Blog einsetzt. Welches das beste Werkzeug dafür ist, verraten wir euch in unserem Artikel.

WordPres-Themes identifizieren: Wir stellen euch drei Tools vor, die euch sagen. welches Theme eine Seite nutzt. (Screenshot: WhatTheme)
WordPres-Themes identifizieren: Wir stellen euch drei Tools vor, die genau diese Möglichkeit liefern. (Screenshot: WhatTheme)

WordPress: Diese Tools identifizieren das eingesetzte Theme für dich

Ihr habt ein WordPress-Blog gesehen und würdet gerne wissen, welches Theme die Seite nutzt, findet aber keinen Hinweis darauf? Kein Problem, es gibt mittlerweile mehrere Tools, die das Theme einer WordPress-Seite identifizieren können. Wir haben uns drei solcher Werkzeuge für euch angeschaut und überprüft, wie gut die Tools arbeiten. In unserem kleinen Test haben wir einen Blick auf WordPress Theme Search, WPThemeDoctor und WhatTheme geworfen.

Im Bezug auf konnte uns WhatTheme leider am wenigsten überzeugen. Einige unserer Test-Seiten erkannte das Tool überhaupt nicht. Und wenn das Werkzeug ein Theme erkannte, lieferte es im Gegensatz zu den beiden anderen Tools nur den Namen und keine zusätzlichen Informationen. Dafür erkennt WhatTheme aber auch Joomla- und Drupal-Themes. Dadurch kann die Seite auch hilfreich sein, wenn ihr nicht wissen solltet, welches CMS eingesetzt wird. Zu Identifikation von WordPress-Themes würden wir trotzdem eines der beiden anderen Werkzeuge empfehlen.

WordPress Theme Search und WPThemeDoctor liefern euch zusätzliche Informationen zu erkannten WordPress-Themes. (Screenshot: WordPress Theme Search)
WordPress Theme Search und WPThemeDoctor liefern euch zusätzliche Informationen zu erkannten WordPress-Themes. (Screenshot: WordPress Theme Search)

WordPress-Themes identifizieren

Sowohl Theme Search als auch WPThemeDoctor funktionierten in unserem kleinen Test recht gut. Perfekt sind beide allerdings auch nicht. Tendenziell schien WPThemeDoctor geringfügig mehr Themes zu erkennen, lieferte aber zumindest in einem Fall auch ein falsche Ergebnis. Trotzdem ist die Trefferquote noch relativ hoch. Außerdem liefern sie zu allen erkannten WordPress-Themes zusätzliche Informationen zum Ersteller des jeweiligen Themes sowie einen Link und eine Kurzbeschreibung.

Auch wenn die Tools gewisse Schwächen haben, kann es sich durchaus lohnen, alle drei Werkzeuge in die eigenen Bookmarks aufzunehmen. Wer wirklich mal ein Theme identifizieren will, erspart sich damit möglicherweise viel Zeit.

via www.producthunt.com

]]>
Kim Rixecker
PencilBlue: Open-Source-CMS-Alternative auf Node.js-Basis http://t3n.de/news/einfache-cms-alternative-pencilblue-563801/ 2014-08-25T09:21:53Z
Einfach, erweiter- und skalierbar, das will das Open-Source-CMS PencilBlue sein. Wir stellen euch das System kurz vor.

Einfach, erweiter- und skalierbar, das will das Open-Source-CMS PencilBlue sein. Wir stellen euch das System kurz vor.

Vor einiger Zeit haben die Entwickler von PencilBlue ihr neues CMS PencilBlue auf den Markt losgelassen. Das auf Node.js basierende Tool will dabei einfach erweiterbar und sogar in Cloud-Systemen lauffähig sein.

PencilBlue: Responsive Design, einfache Nutzung und Erweiterbarkeit

Um PencilBlue zu installieren, benötigt der interessierte Nutzer eine Node.js-Umgebung. Laut eigenen Angaben haben die Entwickler schon von Grund auf darauf geachtet, ein Plugin-System nutzen zu können, mit dem das Open-Source-CMS leicht erweiterbar sein soll. Auch auf skalierenden Cloud-Systemen soll das Tool ohne Probleme seinen Dienst tun.

Das Backend von PencilBlue ist einfach aufgebaut und auch auf Mobilgeräte optimiert. (Foto: PencilBlue)
Das Backend von PencilBlue ist einfach aufgebaut und auch auf Mobilgeräte optimiert. (Foto: PencilBlue)

Die eigene Template-Engine erleichtert Webentwicklern mit integriertem Support für Bootstrap, AngularJS und jQueryUI die Arbeit. Das übersichtliche Backend kommt mit einem responsive Design daher und ist somit von Haus aus auch auf Mobilgeräten ohne Probleme nutzbar. Bei der Bedienung dessen wird viel auf Drag & Drop gesetzt, außerdem ist die Oberfläche für die Touch-Bedienung optimiert.

Für den Einstieg in das Content-Management-System stehen die Macher auf ihrem Blog mit einige hilfreichen Artikeln zur Seite. Unter anderem dabei: eine Erklärung des Backends, das Erstellen eines Plugins oder die Migration von WordPress zu PencilBlue. Der Code ist auf GitHub einsehbar, die Entwickler freuen sich über die Teilnahme am Projekt.

Falls ihr noch auf der Suche nach einer passenden Lösung für ein Projekt seid und es etwas Einfaches und Kompaktes sein soll, hat Kollege Moritz in seinem Artikel einige Alternativen zu PencilBlue und anderen CMS zusammengestellt.

]]>
Johannes Schuba
Exklusiv: LaterPay für alle! WordPress-Plugin für Paid-Content ab sofort kostenlos verfügbar [Update] http://t3n.de/news/laterpay-557417/ 2014-08-19T12:52:14Z
Das WordPress-Plugin des Münchener Startups LaterPay gilt als deutsche Hoffnung für die Finanzierung journalistischer Inhalte im Netz. Nach einer geschlossenen Testphase ist der Bezahldienst jetzt …

Das WordPress-Plugin des Münchener LaterPay gilt als deutsche Hoffnung für die Finanzierung journalistischer Inhalte im Netz. Nach einer geschlossenen Testphase ist der Bezahldienst jetzt für alle kostenlos nutzbar.

Update vom 19. August 2014: Das LaterPay-Plugin ist ab sofort im offiziellen Plugin-Release-Channel von WordPress.org zum Download erhältlich. Die Installation des Plugins zur Monetarisierung von Content auf Blogs und Webseiten sowie digitalen Gütern wird damit noch einmal erleichtert. Mit der aktuellen Versionsnummer 0.9.7.2 befindet sich das Plugin allerdings noch immer in einer offenen Testphase. Die Macher empfehlen weiterhin, LaterPay vor der kommerziellen Integration in einer separaten Testumgebung zu installieren.

LaterPay: WordPress-Plugin auf Github zum Download

Es ist soweit: Nach mehreren Monaten in der geschlossenen Testphase stellt das Münchner Startup LaterPay ab heute sein WordPress-Plugin zur Monetarisierung von digitalen Inhalten kostenlos zum Testen zur Verfügung. Alle Interessenten – ob Blogger, Journalisten oder Webseitenbetreiber – können sich das LaterPay-Plugin für WordPress über Github kostenlos runterladen und installieren.

Hinter dem Plugin steht die Idee, Leser und Konsumenten nur für jene digitalen Inhalte im Netz zahlen zu lassen, die sie auch tatsächlich gelesen haben. Der Preis für jeden Text wird individuell vom Urheber bestimmt, soll gemäß der Philosophie aber im Bereich einiger Cents bis hin zu wenigen Euro liegen. Die Zahlung wird erst dann veranlasst, wenn Leser Inhalte für insgesamt fünf Euro konsumiert haben. Neben der Möglichkeit, Paid-Content mit nur einem Klick einzusehen und zu bezahlen, können Nutzer die Zahlung für einen Text bei Nichtgefallen auch revidieren. Autoren, Verleger und Urheber wiederum werden mit einem Algorithmus vor Missbrauch dieser Funktion geschützt.

LaterPay-Nutzer wählen zwischen zwei Bezahlmodellen: dem Pay-per-use auf der einen, und dem Freemium-Modell auf der anderen Seite. Beim ersten Modell zahlen Leser beispielsweise für einen kompletten Artikel, beim zweiten Modell können kostenpflichtige und kostenlose Inhalte in Kombination angeboten werden – zum Beispiel kann ein Blogpost kostenlos, eine dazugehörige Infografik oder ein Video aber kostenpflichtig angeboten werden. Über die Preisstruktur bestimmen dabei die Seitenbetreiber.

LaterPay: Das WordPress-Plugin des gleichnamigen Münchener Startups ermöglicht das einfache Bezahlen journalistischer Inhalte im Netz. (Bild: LaterPay)
LaterPay: Das WordPress-Plugin des gleichnamigen Münchener Startups ermöglicht das einfache Bezahlen journalistischer Inhalte im Netz. (Grafik: LaterPay)

Das LaterPay-Plugin mit der aktuellen Versionsnummer 0.9.5.1 beinhaltet schon alle zum Verkauf von Content notwendigen Funktionen. Derzeit arbeite man aber beispielsweise noch an Videotutorials, Integrationsbeispielen und Testumgebungen, um die Nutzbarkeit des Bezahldienstes weiter zu verbessern. Als eine der wichtigsten Neuerungen als Ergebnis der geschlossenen Testphase preist LaterPay eine automatisierte Rechnungsstellung inklusive Umsatzsteuerausweis an. „Wir wissen aus viel Feedback, dass dies eine bei Bloggern, Journalisten und Content-Anbietern immer sehr wichtige Funktion ist“, sagt Daniel Raumer, verantwortlicher Produktmanager bei LaterPay.

Deutsches Startup mit dem Segen von Richard Gutjahr

Das Münchner Startup LaterPay unternimmt den Versuch, eine erste Antwort auf die schon seit Jahren schwelende Debatte um die künftige Finanzierung journalistischer Inhalte im Netz zu liefern. Während einige große deutsche Medien nach dem Vorbild von US-Verlagen eine allumfassende Bezahlschranke (Paywall) um ihre Inhalte errichten, hält der Großteil aus Mangel an entsprechenden Alternativen weiterhin an werbefinanzierten Geschäftsmodellen fest. Beide Lösungsansätze sind bei Lesern und Konsumenten jedoch umstritten.

Julian Assange und Richard Gutjahr, ConventionCamp 2012
Prominente Unterstützung bekommt LaterPay von Journalist und Blogger Richard Gutjahr. (Foto: ConventionCamp 2012)

Mit seinem WordPress-Plugin will LaterPay das ändern und weiß bekanntlich um prominente Unterstützung: Der Journalist und Blogger Richard Gutjahr hat bei dem 2010 von Cosmin-Gabriel Ene und Jonas Maurus gegründeten Unternehmen eine Beraterfunktion inne. Entsprechend wirbt Gutjahr für LaterPay, auf seinem Blog nutzt er das Plugin schon von Beginn an für die Monetarisierung seiner Inhalte. Neben Texten kann Laterpay zum Beispiel auch für die vereinfachte Bezahlung von Video-, Audio- und sogar Gaming-Inhalten im Netz genutzt werden.

So installierst du LaterPay auf deinem Blog

Es wird empfohlen, das LaterPay-Plugin zunächst in einer Testumgebung zu installieren, zu nutzen und erst danach in einer Produktivumgebung zu aktivieren. Losgelöst vom eigenen Blog lässt sich eine solche Testumgebung zum Beispiel über den Cloudhoster Digital Ocean fünf US-Dollar (circa 3, 60 Euro) monatlich einrichten. Neben der automatisierten Installation per Mausklick geschieht die anschließende Konfiguration des Plugins in drei Schritten: Zugangsdaten eingeben, Standardpreis festlegen und aktivieren. Eine Schritt-für-Schritt-Anleitung findet ihr in der nachfolgenden Bildergalerie.

Was Nutzer noch über LaterPay wissen müssen

Wie aber können Blogger, Journalisten und Content-Anbieter das LaterPay-Plugin zu gewerblichen Zwecken nutzen? Schließlich werden in der Testumgebung nur fiktive Zahlungen simuliert. Um reale Umsätze zu ermöglichen, müssen Nutzer ihre gültigen Live-API-Zugangsdaten im Plugin hinterlegen. Diese Daten erhält man, indem man einen sogenannten LaterPay-Händlervertrag ausfüllt und an das Startup zurückschickt.

Der Vertrag ermöglicht den Einsatz von LaterPay auf der Webseite, er verpflichtet jedoch nicht dazu. Fixkosten entstehen übrigens nicht, weder Registrierungs- noch Setup- oder Grundgebühren fallen bei LaterPay an. Nur für verkaufte Artikel führen Nutzer eine Provision in Höhe von 15 Prozent an Laterpay ab. Der Vertrag ist jederzeit monatlich und ohne Angabe von Gründen kündbar.

]]>
Daniel Hüfner
Mächtig und schnell: Das dateibasierte CMS Grav http://t3n.de/news/maechtig-schnell-dateibasierte-cms-grav-562643/ 2014-08-18T12:51:59Z
Wenn ihr ein dateibasiertes und schlankes Content-Management-System für eine Website sucht und des Markdown mächtig seid, solltet ihr euch Grav mal anschauen.

Wenn ihr ein dateibasiertes und schlankes Content-Management-System für eine Website sucht und des mächtig seid, solltet ihr euch Grav mal anschauen.

Grav: Schnelle Installation und schnelle Ergebnisse

Es dürfte wohl kaum ein Content-Management-System geben, das so schnell istalliert ist, wie Grav. Nachdem ihr Grav heruntergeladen habt, entpackt ihr es einfach in ein Verzeichnis und könnt loslegen. Benötigt wird lediglich PHP 5.4 oder neuer. Wenn ihr jetzt die URL aufruft, in die ihr Grav entpackt habt, sehr ihr schon eine Inhaltsseite, die euch die wichtigsten nächsten Schritte mit dem näher bringt.

Sofort nach dem Entpacken einsatzbereit: Das CMS Grav. (Screenshot: Eigene Grav-Installation)
Sofort nach dem Entpacken einsatzbereit: Das CMS Grav. (Screenshot: Eigene Grav-Installation)

In dem grav-Ordner findet ihr dann einige Verzeichnisse, von denen ganz zu Anfang eigentlich nur user wichtig ist.

Wenn ihr euch die Datei in dem Ordner user/pages/01.home anschaut, werdet ihr feststellen, dass es eine Markdown-Datei ist. Wenn ihr eine neue Seite anlegen möchtet, dann erstellt ihr einfach einen neuen Ordner 02.newpage und darin dann eine default.md-Datei. An den Anfang der Datei kommen dann alle wichtigen Header-Informationen nach dem folgenden Schema:

---
title: New Page
slug: my-new-page
menu: New Page Menu Title
---

Mit title legen wir den Titel des Dokuments fest und das ist die einzige Angabe, die wirklich gesetzt werden sollte. slug überschreibt als optionale Angabe den automatisch erstellten Pfad, der dem Ordnernamen ohne die vorangestellte Zahl entspricht. Mit menu können wir den Titel im Menü verändern, der sonst der Angabe unter title entsprechen würde. Weitere Header-Angaben findet ihr in der Dokumentation.

Wenn ihr nicht wollt, dass die Seite in dem Menü aufgeführt wird, dann lasst ihr einfach die Zahl mit dem Punkt vor dem Ordnernamen weg. Alternativ könnt ihr auch die Angabe visible: false als weitere Header-Angabe in die Markdown-Datei schreiben. Mit der Zahl und dem Punkt im Ordnernamen wird standardmäßig die Reihenfolge der Einträge im Menü festgelegt. Der übrige Inhalt einer Seite wird in Markdown geschrieben.

Die grundlegenderen Konfigurationsdateien sind in der YAML-Syntax geschrieben. Im Ordner user/config/ findet ihr die system.yaml-Datei, in der ihr unter anderem Dinge wie das Datumsformat, die Sortierreihenfolge von Seiten et cetera einstellen könnt. Genauere Informationen findet ihr auch hier wieder in der umfangreichen Dokumentation.

Grav: Mächtige Bildfunktionen

Wenn ihr Bilder oder andere Medien-Dateien in eine Seite einfügen möchtet, dann kopiert ihr einfach das Bild in den Ordner der Seite und bindet es nach dem folgenden Schema ein (dafür müsst ihr im Header den Prozess twig auf true setzen – siehe Header-Dokumentationsseite):

{{ media['grav-cms-installiert.jpg'].html() }}

Daneben gibt es aber noch viel mehr Möglichkeiten, was ihr mit Bildern anstellen könnt. Ihr könnt problemlos das Bild verkleinern, indem ihr beispielsweise folgendes eingebt:

{{ media['grav-cms-installiert.jpg'].resize(200, 200, '75879a').html() }}

Damit wird das Bild an der längsten Seite auf 200 Pixel gebracht und der „leere Raum“ der kürzeren Seite, der zum Quadrat fehlt, mit der angegebenen Farbe gefüllt. Dabei wird das Bild nicht einfach per CSS skaliert, sondern wirklich als neues Bild erstellt. Ihr könnt daneben auch noch verschiedene Arten der Skalierung auswählen: Ohne die Ursprungs-Seitenverhältnisse zu berücksichtigen, mit Zuschneiden und so weiter. Außerdem bringt Grav auch noch einige Filter mit, wie etwa einen Helligkeits- und Kontrastfilter.

Fazit: Viele Möglichkeiten in einem schlanken System

Abschließend lässt sich sagen, dass Grav ein ziemlich mächtiges dateibasiertes CMS ist, mit dem viel bewerkstelligt werden kann. In diesem Artikel wurde der Fuktionsumfang nur angerissen, mehr Infos, unter anderem auch zu der Theme-Erstellung, findet ihr in der Dokumentation. Neben dem reinen Grundgerüst gibt es auch schon drei Themes zur Auswahl und einige Plugins.

]]>
Florian Brinkmann
Multi-User-Unterstützung und mehr: Das bringt die neue Version 0.5 der Blog-Software Ghost http://t3n.de/news/mutli-user-unterstuetzung-mehr-562064/ 2014-08-12T12:02:00Z
Ghost ist die Software eines ehemaligen WordPress-Mitarbeiters und soll dem Nutzer in einer schlanken Lösung einfach nur das Bloggen ermöglichen. Gestern wurde Version 0.5 des Systems …

ist die Software eines ehemaligen WordPress-Mitarbeiters und soll dem Nutzer in einer schlanken Lösung einfach nur das Bloggen ermöglichen. Gestern wurde Version 0.5 des Systems veröffentlicht, und die bringt einige neue Features mit.

Ghost: Multi-User-Unterstützung, offene JSON-API und mehr

Ghost bringt in der neuen Version drei Kern-Veränderungen mit. Zuerst, und für den „einfachen Nutzer“ vermutlich am interessantesten, ist die Unterstützung für mehrere Autoren – dieses Feature haben die Macher auch gleich in ihrem Blogbeitrag zur neuen Ghost-Version genutzt. Das dürfte ein Feature sein, was viele Nutzer oder potenzielle Nutzer von Ghost bislang stark vermisst haben.

Wichtiges neues Feature: Multi-User-Unterstützung bei Ghost. (Screenshot: Ghost)
Wichtiges neues Feature: Multi-User-Unterstützung bei Ghost. (Screenshot: Ghost)

Als zweites Kern-Feature wurde eine öffentliche JSON-API eingeführt, mit der ihr Web-, Desktop-, Android- und iOS-Apps auf Basis eines Ghost-Blogs aufbauen könnt. Jedes Feature von Ghost ist damit für Entwickler von Drittanwendungen zugänglich. In naher Zukunft werden die Entwickler die Authentifizierung per OAuth öffnen.

Als drittes Feature wird das technisch überarbeitete Backend genannt, das komplett neu in Ember.js geschrieben wurde. Neben diesen Schlüssel-Features wurde unter anderem das Standard-Theme überarbeitet und liegt nun in Version 1.0 vor, es gibt OAuth-Support, neue Funktionen für Theme-Entwickler, automatische Gzip-Komprimierung im Produktiv-System und Verbesserungen für die Nutzung auf mobilen Geräten. Alle Änderungen könnt ihr auf Gist finden.

Ghost ab sofort mit einem neuen Update-Zyklus

Bisher hat es Ghost mit Updates ungefähr so gehalten wie andere Open-Source-Systeme und zwei bis drei pro Jahr veröffentlicht. Das ist den Machern von Ghost nicht agil genug, weshalb sie jetzt zu einem Update-Zyklus übergehen, der alle zwei bis vier Wochen ein Update bringt. Große Updates wie das zu Version 0.5 wird es damit nicht mehr geben.

]]>
Florian Brinkmann