
- childcategories on parentcategory
Du möchtest, dass man beim Klick auf die Hauptkategorie die Unterkategorien sieht mit einigen ihrer Artikel und einen *weiterlesen* Link, der zur jeweiligen Unterkategorie führt.
Hauptkategorie keinen Artikel
Dies ist nur sinnvoll, wenn man in der Hauptkategorie keinen Artikel hat. Aber mancher mag dies so, weil er so wichtige Worte in der URL unterbringt und seinen Besuchern genug Überblick durch die Aufteilung bieten kann.
Umblättern – Pagination
Ich habe diese Auflistung der Unterkategorien mit Artikeln absichtlich nicht zum *Umblättern* hergerichtet, weil dies ja wiederum den Überblick schmälert und 2. programmiertechnisch ein wenig mehr Aufwand wäre, der wegen des fehlenden Überblicks für die Besucher wiederum umsonst wäre.
Category.php html und Sprache anpassen
Die erstellte category.php stell ich als .zip Datei zur Verfügung. Ich ersuche das HTML anzupassen und außerdem ist das Template für Übersetzungen vorbereitet, da muss man dann sicher den “Projektnamen” ändern.
Diese category.php bietet sowohl Unterkategorien auf der Hauptkategorieseite wie eine ganz normale Kategorienansicht, die den *weiterlesen Link* zeigt.
Dies hat den Vorteil, dass man völlig frei Kategorien ohne Unterkategorien haben kann, aber auch Hauptkategorien mit Unterseiten, die man dann eben in der Hauptkategorie herzeigt.
unterschiedliche templates für unterschiedliche Kategorien
Die Mischung:1x Unterkategorien auf der Haupt-Kategorie anzeigen und 1x nicht ist höchst verwirrend für den Besucher, daher rate ich davon ab. Außerdem kann man dies nicht automatisieren, weil WP einfach nicht weiß, was Du Dir als Admin denkst .
Wer mag kann sich den Code hier ansehen.
Es ist viel, ich warne
Download der Hauptkategorie zeigt Unterkategorien category.php als .zip Datei.
<?php get_header(); ?> <?php $numposts = 3; // # posts to display; -1 for all $cat_obj = $wp_query->get_queried_object(); if( $cat_obj->parent ) : $child_posts = get_posts('category=' . $cat_obj->term_id . '&numberposts=' . $numposts); if( $child_posts ) :?> <h3 class="archive"><?php _e('Archive for','mtsdreaming'); ?><?php echo $cat_obj->name; ?></h3> <ul> <?php foreach( $child_posts as $post ) : ?> <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> </ul> <?php endif; else : ?> <h3 class="archive"><?php _e('Archive for','mtsdreaming'); ?><?php echo $cat_obj->name; ?></h3> <div <?php post_class(); ?>> <?php global $wpdb; $categories = $wpdb->get_results("SELECT $wpdb->terms.term_id, $wpdb->terms.name from $wpdb->terms INNER JOIN $wpdb->term_taxonomy ON $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id WHERE taxonomy = 'category' AND parent = '{$cat_obj->term_id}' ORDER BY name ASC"); foreach($categories as $category) : $child_posts = get_posts('category=' . $category->term_id . '&numberposts=' . $numposts); if( $child_posts ) :?> <h3 class="archive"><?php echo $category->name; ?></h3> <ul class="clearfix"> <?php foreach( $child_posts as $post ) : setup_postdata($post);?> <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a> <br /><?php echo strip_tags(get_the_excerpt()); ?></li> <?php endforeach; endif; ?> <li class="readmore"> <?php _e(' » » more Articles:','mtsdreaming'); ?> <?php the_category(',') ?></li> </ul> <?php endforeach; endif; ?> </div><!--end of childcategories on parentcategory--> <?php if( !$child_posts ) : if (have_posts()) : ?> <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?> <?php if (is_category()) { ?> <p class="archive"><?php echo strip_tags(category_description()); ?></p> <?php } ?> <?php while (have_posts()) : the_post(); ?> <div <?php post_class(); ?>> <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> <?php the_content("»» " . the_title('', '', false)); ?> <p class="metadata"> <?php _e('Filed under:','mtsdreaming'); ?> <?php the_category(',') ?> | <?php if (get_the_tags()) the_tags('',',',' |'); ?> <?php comments_popup_link(__('No Comments','mtsdreaming'), __('1 Comment','mtsdreaming'), __('% Comments','mtsdreaming'), '', __('Comments off','mtsdreaming')); ?> <?php edit_post_link(__('edit','mtsdreaming'),' | '); ?> </p> </div><!--end of post--> <?php endwhile;endif;?> <?php if (function_exists('wp_page_numbers')) { wp_page_numbers(); echo '<br class="clear"/>'; } elseif (!function_exists('wp_page_numbers')){ echo'<p class="navigate">'; next_posts_link(__('« Previous Entries |','mtsdreaming')) ; previous_posts_link(__('| Next Entries »','mtsdreaming')) ; echo'</p>';}?> <?php endif;?> <?php get_sidebar(); ?> <?php get_footer(); ?>
Bei Fragen einfach fragen.
Andreas
10.06.09 um 21:54Hallo Monika,
klasse Artikel!
Er trifft schon fast das was ich suche, aber leider nur fast. Wenn ich Artikel in einer Unterkategorie anklicke, dann geht in der Sidebar in der Artikelansicht der Kategorienbaum zu. Wie kann ich denn die Kinder der Hauptkategorie anzeigen lassen, wenn ich einen Artikel aus einer der Unterkategorien lese? (vgl. website…)
Viele Grüße,
Andreas
texto
12.06.09 um 13:18hi Andreas
das ist eine Frage welche Menü-NaviPlugin du verwendest
markomann
19.01.10 um 09:51ja genau das hab ich gesucht, doch leider wird bei meiner mehrsprachigen seite die unterkategorie nicht übersetzt.
ich benutze qtranslate.
ich glaube das problem liegt in dieser zeile.
name; ?>
hab aber keinen schimmer wie es zu beheben wäre.
markomann
19.01.10 um 09:52hier nochmal die zeile.
?php echo $category->name; ?
Martin
16.06.10 um 07:47Vielen, vielen Dank. Nach diesem Code suche ich schon seit Tagen.
Stephan
07.09.10 um 12:20Hi super Script….
Ich versuche name; ?> klickbar zu machen…
Für´s erste würde es auch reichen wenn man duch die querry auch noch “slug” abfragen könnte… soweit reichts dann aber bei mir leider doch nciht
hast du eine Idee?
Danke
Stephan
07.09.10 um 12:21Ich meine natürliche
?php echo $category->name; ?