Wordpress (Hauptkategorie, Unterkategorie)
lima-city → Forum → Die eigene Homepage → Homepage Allgemein
anlegen
arbeit
archiv
artikel
bild
code
datei
deutschland
echten unterkategorien
feld
formel
http
index
kategorie
motorsport
page
post
sagen
unterkategorie
url
-
Hallo,
Ich habe ein Problem mit Wordpress, sagen wir ich habe eine Hauptkategorie z.B. Motorsport und verschiedene Unterkategorie Formel 1, Motorrad ect. und dann habe ich verschiedene beiträge, die ich eben den unterkategorie zuordne. Wenn ich nun auf die hauptkategorie klicke, dann sehe ich ja alle Beiträge, egal in welcher kategorie sie sich befinden.
Ich möchte es allerdings so haben, dass wenn man auf die Kategorie Motorsport klickt, man alle Unterkategorie sieht (Formel 1, Motorrad), wenn erst wenn ich anschließend auf die Unterkategorie klicke, sollen die einzelnen Beiträge erscheinen.
Hat jemand eine Idee wie das funktioniert? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du könntest es mit Seiten (Pages) machen, in denen du dann einfach die Unterkategorien auflistest (d. h. du hast gar keine echten Unterkategorien). Und im Menü deines Blogs lässt du dann nicht die Wordpress-Kategorien auflisten, sondern verlinkst nur die Pages, auf denen du wiederum die jeweiligen "Unter"kategorien verlinkt hast.
-
Hallo,
du musst dabei auf jeden Fall Veränderungen im Theme vornehmen. Die Datei um die es sich handelt ist entweder archive.php oder index.php.
Nun wird es schon schwerer. Ich kann dir nur "in etwa" sagen, wie es geht:
Es muss zunächst einmal unterschieden werden, ob dies eine Kategorie ist:
Das reicht jedoch nicht aus. Denn du willst ja zumindest bei der Unterkategorie dann auch die Artikel ausgegeben haben. Daher könnteste das so schreiben:is_category();
Nun wird nur die Kategorie Motorsport angesprochen und du kannst loslegen, was denn jetzt passieren soll, wenn diese Kategorie aufgerufen wird:is_category('Motorsport')
<?php if ( is_category('Motorsport') ) { ?> wp_list_categories('child_of=' . $post->ID); <?php } else { //hier gehts mit der normalen Loop weiter } ?>
Hier ist dieses wp_list_categories für dich interessant. Es sollen nur die "Kinder" der Kategorie "Motorsport" ausgegeben werden. Da Motorsport die aktuelle Seite ist, dürfte man mit $post->ID auch die aktuelle ID herausbekommen.
Alternativ kannst du auch für eine bestimmte Kategorie ein eigenes Template anlegen. Die Template-Datei category-7.php würde demnach für die Kategorie mit der ID 7 ein eigenes Template sein. Schöner wäre letztlich, dass man dies unabhängig macht von der Kategorie - aber mir fällt spontan nicht ein, wie man herausfindet ob es sich um eine Unterkategorie handelt oder nicht.
Wenn du dich um eine saubere Lösung bemühen willst, solltest du im WP-Forum Deutschland zusätzlich nachfragen. Die können dir sicherlich besser helfen oder hatten schon mal eine Lösung geschrieben.
Vielleicht kann dir aber schon dieser Link weiterhelfen - es ist allerdings nicht das gewünschte Ergebnis und der Code ist auch nicht sehr schlank. -
fcr schrieb:
Du könntest es mit Seiten (Pages) machen, in denen du dann einfach die Unterkategorien auflistest (d. h. du hast gar keine echten Unterkategorien). Und im Menü deines Blogs lässt du dann nicht die Wordpress-Kategorien auflisten, sondern verlinkst nur die Pages, auf denen du wiederum die jeweiligen "Unter"kategorien verlinkt hast.
Also ich habe das nun mal ausprobiert.
Ich habe mir dazu nun eine neue Seite erstellt und habe darin den Code eingefügt, das habe ich so gemacht wie auf der FAQ Seite von Wordpress angegeben wird.
<?php query_posts('category_name=Allgemein'); ?>
In der statischen Seite habe ich nun ein Bild eingefügt, über das benutzerdefinierte Feld. Das Bild kann man nun auch auf der statischen Seite sehen, wenn ich jedoch das Bild nun anklicke, öffnet sich leider nicht die entsprechende Kategorie, sondern der Link führt zur gleichen statischen Seite.
Besteht nun die Möglichkeit, das Bild welches ich über das benutzerdefinierte Feld eingefügt haben zu einer bestimmten Seite zu verlinken?
Wie füge ich denn jetzt nun eine zweite und dritte Kategorie auf die statische Seite ein?
Beitrag zuletzt geändert: 16.1.2010 19:40:51 von hiacynta -
verändert lediglich die Loop. Ist dir bewusst was "benutzerdefinierte Felder" sind? Interessiert es dich nicht, was ich geschrieben hab?<?php query_posts('category_name=Allgemein'); ?>
Die Variante, die dir fcr vorschlägt ist sicherlich möglich, aber im Endeffekt aufwändiger:
Du musst jedes Mal beim Anlegen einer neuen Kategorie die Seite abändern, das ist je nachdem mit viel Arbeit verbunden.
Du könntest aber auch hier mal einen Link posten, damit man sehen kann, wie weit du bisher vorangekommen bist. -
Irgendwie komme ich mit deinem Post nicht so recht weiter, ich weiß nicht so recht, wo ich das einbinden soll.
Aber hier mal nen Link und nochmal ne kurze Erklärung, was ich überhaupt will :-)
Wenn man meine Seite aufruft und oben in der roten Leiste auf Travel klickt, will ich meine Kategorie angezeigt haben diese sollen Amerika und Europa heißen. Das sind sozusagen meine Hauptkategorie. Wenn man nun auf Europa klickt, soll es einee Unterkategorie mit z.B. Deutschland geben und wenn man nun wieder auf Deutschland klickt, sieht man nun die ganzen beiträge bzw. Bilder zu Deutschland. Das ganze sollte natürlich ein einheitliches Design haben:
http://www.varsity.de/creativephotodesign/website/v1/wordpress/?cat=12/
Also sobald man auf oben auf Travel klickt, sollen die Kategorien Amerika und Europa so dargestellt werden wie in dem o.g. Beispiel und das "Design" sollte natürlich beigehalten werden wenn man sich durch die ganzen Kategorien und Beiträge durchklickt.
Das Benutzerdefinierte Feld habe ich übrigens benutzt, damit man die Thumbnails sieht, bevor man sich den Artikel anschaut.
Ich hoffe, dass dies nun etwas verständlicher ist, denn eigentlich ist es ja ne simple Sache -
Eine mögliche Lösung geht letztlich nur durch etwas Arbeit am aktuellen Theme:
Eine der folgenden Dateien sollte man sich vornehmen (geordnet, absteigende Priorität).
Du findest diese Dateien im Verzeichnis wp-content/themes/ und dann im entsprechenden aktivierten Theme.category.php archive.php index.php
Nun sollte man erstmal sich einen groben Überblick verschaffen. Die Datei wird wahrscheinlich so aufgebaut sein, dass man die Basis des Loops erst einmal suchen muss:
Daran kann man sich zunächst orientieren. Das Ziel ist es: Wenn eine Unterkategorie existiert, soll ein Menü ausgegeben werde mit den jeweils noch hierarisch darunter liegenden Kategorien. Wenn es allerdings keine Unterkategorie mehr gibt, sollen die Artikel dieser Unterkategorie ausgegeben werden.<?php if (have_posts()) : ?> ... <?php while (have_posts()) : the_post(); ?> ...<?php the_content() ?>... <?php endwhile; ?> .. <?php endif; ?>
Vorsicht: In diesem Fall sind für den Besucher Artikel, die in einer Oberkategorie und in keiner Unterkategorie liegen nicht mehr sichtbar!
Um nicht zu viel zu schwafeln, zeige ich nun den Auszug aus dem Kubrick-Standard-Theme. Es handelt sich dabei um die archive.php:
Wichtig sind hierbei die Funktion subcategory_exists, und natürlich die wp_list_categories. Diese kann man nach belieben anpassen, eine gute Anleitung liefert die Dokumentation. is_category erklärt sich sicherlich von selbst.if (is_category()) { ?> <h2 class="pagetitle"><?php printf(__('Archive for the ‘%s’ Category', 'kubrick'), single_cat_title('', false)); ?></h2> <ul> <?php if (subcategory_exists($cat)) { wp_list_categories('child_of='.$cat.'&title_li='); } ?> </ul> <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?> <h2 class="pagetitle"><?php printf(__('Posts Tagged ‘%s’', 'kubrick'), single_tag_title('', false) ); ?></h2> <?php /* If this is a daily archive */ } elseif (is_day()) { ?> <h2 class="pagetitle"><?php printf(_c('Archive for %s|Daily archive page', 'kubrick'), get_the_time(__('F jS, Y', 'kubrick'))); ?></h2> <?php /* If this is a monthly archive */ } elseif (is_month()) { ?> <h2 class="pagetitle"><?php printf(_c('Archive for %s|Monthly archive page', 'kubrick'), get_the_time(__('F, Y', 'kubrick'))); ?></h2> <?php /* If this is a yearly archive */ } elseif (is_year()) { ?> <h2 class="pagetitle"><?php printf(_c('Archive for %s|Yearly archive page', 'kubrick'), get_the_time(__('Y', 'kubrick'))); ?></h2> <?php /* If this is an author archive */ } elseif (is_author()) { ?> <h2 class="pagetitle"><?php _e('Author Archive', 'kubrick'); ?></h2> <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?> <h2 class="pagetitle"><?php _e('Blog Archives', 'kubrick'); ?></h2> <?php } ?> <div class="navigation"> <div class="alignleft"><?php next_posts_link(__('« Older Entries', 'kubrick')); ?></div> <div class="alignright"><?php previous_posts_link(__('Newer Entries »', 'kubrick')); ?></div> </div> <?php while (have_posts()) : the_post(); ?> <?php if (!(subcategory_exists($cat))) { ?> <div <?php post_class(); ?>> <h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf(__('Permanent Link to %s', 'kubrick'), the_title_attribute('echo=0')); ?>"><?php the_title(); ?></a></h3> <small><?php the_time(__('l, F jS, Y', 'kubrick')) ?></small> <div class="entry"> <?php the_content() ?> </div> <p class="postmetadata"><?php the_tags(__('Tags:', 'kubrick'), ', ', '<br />'); ?> <?php printf(__('Posted in %s', 'kubrick'), get_the_category_list(', ')); ?> | <?php edit_post_link(__('Edit', 'kubrick'), '', ' | '); ?> <?php comments_popup_link(__('No Comments »', 'kubrick'), __('1 Comment »', 'kubrick'), __('% Comments »', 'kubrick'), '', __('Comments Closed', 'kubrick') ); ?></p> </div> <?php } ?> <?php endwhile; ?>
Damit noch nicht genug: Im letzten Schritt noch folgende Funktion in die functions.php legen (auch im jeweiligen Theme-Ordner).
Das dürfte es nun im groben und ganzen gewesen sein. Ich hoffe ich habe alle Fehlerquellen bei der Erstellung beachtet.function subcategory_exists($catID) { global $wpdb; $abfrage = "SELECT parent FROM $wpdb->term_taxonomy WHERE parent = ".$catID; $result = $wpdb->get_results($abfrage); if (empty($result)) {return false;} else {return true;} }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage