aus der Praxis: Kategorie und Beiträge anders darstellen zb Asides, Kurznachrichten

Kategorie und ihre Bieträge anders gestalten
Kategorie und ihre Bieträge anders gestalten

Schon lange wollte ich auf meiner WebDesign-in.de eine eigene Kategorie für „Kurznachrichten“. Außerdem werde ich auch sehr oft via E-Mail gefragt wie man denn kurze Beiträge in einer eigenen Kategorie anders darstellen kann als sonst. Meist geht es dann um die Formatvorlage „aside“.

Dieser Artikel ist also für alle von euch die eine Kategorie und die in ihr enthaltenen Beiträge anders darstellen wollen als den Rest.

  • Meine Lösung ist unabhängig von einer Formatvorlage => obwohl ich eine nutze.
  • Ich biete ein Rezept zum Fischen und kein fertiges Gericht :-)
  • Achtung: Das alles ist nicht für Beiträge in mehreren Kategorien.

Spezielles Template für diese Kategorie Kurznachrichten

WordPress erkennt alle „archiv“ Templates anhand des Permalink Slugs von sich aus. Dies macht ich mir zunutze und erstelle das category-kurznachrichten.php Template.

Magst Du mehr dazu wissen, dann sieh dir die Template Hierarchie an oder lies Vladimirs Beitrag spezielle Templates für Archive.

WP Filter nutzen für single-categoryslug.php

Um die Beiträge dieser Kategorie Kurznachrichten anders darzustellen brauch ich ein spezielles single.php Template.

Ich nutze zwar die Formatvorlage „links“ für diese Beiträge, aber nur die Beiträge in der Kategorie Kurznachrichten sollen anders aussehen egal welche Formatvorlage ich dafür nutze.

Und da ich gerne gleich auf einen Blick sehe was ich bei einem etwaig neuen Theme brauche wäre hier eine single-categoryslug.php sehr hilfreich.

So nutz ich einen WordPress Filter:

// set up category specific single.php templates

add_filter('single_template', create_function('$t', 
'foreach( (array) get_the_category() as $cat ) { 
if ( file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php") ) 
return TEMPLATEPATH . "/single-{$cat->slug}.php"; } return $t;' ));

Nun erkennt WordPress meine single-kurznachrichten.php.

Diesen Filter erstellte ich mir als Modul für die Toolbox, weil ich ihn unabhängig von einem Theme haben mag.

Nathan Rice bietet dafür auch ein WP Plugin an: Single Post Template. Nathan Rice ist sicher allen Liebhabern des Genesis Frameworks ein Begriff.

Service an die Leser: Permalink ändern

Die Einzelansichten dieser Beiträge haben absolut keinen anderen Inhalt als Du auf der Kategorieseite siehst. Daher ist ein Link zu dieser Ansicht völlig sinnlos.

Es wäre aber super, wenn der erste Link in diesem Beitrag zu einem „Permalink“ werden tät, weil ich dann Gestaltungsfreiheit habe.

Auch hier liefert mir WordPress 3.6 alles von sich aus, ich muss es nur nutzen:

//first link in a post as permalink
function mts_get_link_url() {
	$content = get_the_content();
	$has_url = get_url_in_content( $content );

	return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', get_permalink() );
}

Aufmerksam wurde ich auf get_url_in_content hier bei queryposts.com.

Vielleicht kann get_url_in_content bald mehr …

Die Anzahl der Beiträge für diese Kategorie ändern

add_action( 'pre_get_posts', 'be_change_surftipps_posts_per_page' );
function be_change_surftipps_posts_per_page( $query ) {
   if( $query->is_main_query() && !is_admin() && is_category( array('kurznachrichten' ) )) {
	$query->set( 'posts_per_page', '26' );
	}

}

Zur Erhaltung der Performance nutze ich hier pre_get_posts.

Was du damit noch machen kannst findest Du im Artikel zur WordPress Suche.

Auch dies wanderte als Modul in die Toolbox, weil auch bei einem Themewechsel mag ich in dieser Kategorie eine andere Anzahl von Beiträgen haben.

Die Sociallinks ändern

Ich nutze kein WordPress Plugin für meine Twitter und G+ Links. So änderte ich die Links für diese beiden Socialmedien so, dass nur die URL der Kategorie genommen wird und nicht der Permalink des zuletzt geschriebenen Beitrags.
Wie dies WP Plugins anbieten habe ich keine Erfahrung, es wäre zu testen.

Noindex nicht vergessen

Ich mag zwar die Kategorieseite im Index von Suchmaschinen haben, aber nicht die Beiträge. Sie sollen absolute Kurzmeldungen sein und sind auch sicher irgendwann sehr „out of date“ :-).

Daher bekommen die Einzelansichten dieser Kategorie ein noindex, follow.

die Übersichtsseite ändern

Für die Übersicht meiner Fachartikel auf der WebDesign-in.de verwende ich ein spezielles page-slug.php Template. Es werden auf dieser Seite aber nicht alle Kategorien aufgelistet.

Dafür nutze ich im Loop category__not_in und ich zeige hier nur den ersten Loop auf dieser Seite.

<?php $temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query( array('post_type' => 'post',
                        'category__not_in' => (array ( '6','210' ) ),
                        'showposts' => 1)
                      ); 
 while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

Mehr Spielereien mit dem Loop kannst Du hier finden.

… und das Feed

Im RSS Feed werden die Einzelbeiträge weiterhin angezeigt. Daher auch das spezielle single-kurznachrichten.php Template und das „Noindex“.

Ich möchte daran nichts ändern, weil ich ja mag, dass alle meine Leser die Kurznachrichten rasch erreichen.

ToDo Liste für diese spezielle Kategorie

Ich bin nie fertig :-). Sollte ich wieder mal eine Stunde übrig haben, dann werde ich die Kategorie „Kurznachrichten“ als full-width Ansicht herrichten und vielleicht auch noch den neuesten Beitrag hervorheben.

War es hilfreich freu ich mich übers Weitersagen oder einfach ein +1