Kategorien in der Menuleiste verlinken

  • Hallo,

    ich stricke gerade an meinem Blog und modifiziere das Theme (BranfordMagazine) und habe folgendes Problem: Ich habe in der Menuleiste den Punkt "Kategorien" eingefügt und darunter gehen die einzelnen Kategorien auf. Wenn ich jetzt auf die Kategorie "Top-Thema" klicke hätte ich gerne, dass die Seite angezeigt wird mit allen Beitragen aus dieser Kategorie. Aber wie das geht weiß ich nicht.
    Weiß das jemand?
    Danke

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Ich habe in der Menuleiste den Punkt "Kategorien" eingefügt und darunter gehen die einzelnen Kategorien auf.


    Wie hast du die Kategorien eingefügt?

    Zitat

    Wenn ich jetzt auf die Kategorie "Top-Thema" klicke hätte ich gerne, dass die Seite angezeigt wird mit allen Beitragen aus dieser Kategorie.


    Template Tags/wp list categories WordPress Codex

  • Die Kategorien habe ich ganz normal über WP >> "Verwalten" >> "Kategorien" angelegt.
    Die Menuleiste habe ich über "Schreiben" >> "Seite" angelegt, wobei ich dann ein beliebiges Template ausgesucht habe und die einzelnen Kategorien der übergeordneten Seite "Kategorien" zugeordnet habe. (ich vermute ja auch, dass ich ein eigenes Template bauen muss in dem dann der Befehl stehen muss. Aber da ich kaum php kann, ist das schwierig.

  • Zitat

    Wenn ich jetzt auf die Kategorie "Top-Thema" klicke hätte ich gerne, dass die Seite angezeigt wird mit allen Beitragen aus dieser Kategorie.
    Template Tags/wp list categories WordPress Codex

    Mit dem Link kann ich leider nur bedingt etwas anfangen:

    1. In welches Dokument an welcher Stelle kommt dieser Code hin? (<?php wp_list_categories('arguments'); ?> )
    1. Der zweite Teil (Examples) muss ja auch irgendwo hin.


    Tut mir leid, aber ich bin da noch ein Greenhorn und ab einem gewissen Level bin ich einfach überfragt.
    Danke

  • Seiten != Kategorien
    Das will ich nur mal festgehalten haben ;-) Dein problem ist also eher im Konzept zu suchen. Das wird dir aber sicher das Theme ein wenig so vorgeben.

    Du könntest entweder den Theme-Header (d.h. da wo die "Seiten" ausgegeben werden) die Kategorieliste mit o.g. Befehl ausgeben. Das wäre das einfachste. Die Frage ist nur, ob dass das Theme so erlaubt, oder ob man da größere Änderungen vornehmen müsste.

    Die andere Variante ist, die Kategorien auf gleichnamigen Seiten auszugeben. Schau dazu mal in diesen Thread rein:
    http://forum.wordpress-deutschland.org/konfiguration/…kel-zeigen.html

  • Ich glaube, mein Problem ist viel einfacher: In der Sidebar besitzte ich bereits eine Liste mit einen Kategorien. Wenn ich die anklicke, komme ich auf eine Seite, auf der alle Artikel dieser Kategorie (mit Headline, Teaser, Autor, etc.) untereinander stehen. In der Menuleiste soll im Endeffekt die selbe Liste noch mal stehen. Mit dem Unterschied, dass Kategorie der Hauptmenu-Punkt ist und die einzelnen Kategorien die "Children" (so wird das wohl genannt) sind. So gesehen bin ich auch auf den Gedanken gekommen, dass ich einzelne "kategorie1-page.php", etc. bauen muss um den erwünschten Effekt zu haben. Aber was sollte in diesem Dokument drinne stehen ist halt meine Frage. Da der Effekt derselbe ist, wie wenn ich auf eine bestimmte Kategorie in der Sidebar klicke, dachte ich mir, dass der Befehl doch auch irgendwo in den Dateien des Themes oder WP zu finden sein muss - aber da bin ich eben überfragt.
    Nach meinem Verständnis müsste auf dieser Seite folgendes stehen (aber eben in php): Rufe alle Artikel dieser Kategorie auf. Zeige jeweils darunter: Headline, die ersten bspw. 40 Wörter, Autor, Kommentare und ein "Weiterlesen"-Button. Und: die Seite muss so aufgebaut sein, dass ich sie dem Kategorie-Punkt beim erstellen der Kategorie im Admin-Bereich zuordnen kann. Klingt einfach - aber vielleicht gibt es dazu noch eine Anleitung,

    Danke

  • In der Sidebar besitzte ich bereits eine Liste mit einen Kategorien.


    Jupp. Diese wird mit ziemlicher Sicherheit von oben genannter wp_list_categories()-Funktion (im WP-Jargon "Template Tag" genannt) generiert.

    Zitat

    Wenn ich die anklicke, komme ich auf eine Seite, auf der alle Artikel dieser Kategorie (mit Headline, Teaser, Autor, etc.) untereinander stehen.


    Ja, auch das ist Standard-WordPress, und nennt sich "Kategoriearchiv". Für dieses Kategoriearchiv wird eine bestimmteTenplate-Datei genutzt, d.h. alle Kategoriearchive greifen zur Darstellung auf diese Template-Datei zurück. Welche das ist erfährst du ebenfalls in der Doku:
    Template Hierarchy WordPress Codex
    Category Templates WordPress Codex

    Zitat

    In der Menuleiste soll im Endeffekt die selbe Liste noch mal stehen.


    Soweit klar. Daher ja mein Hinweis auf wp_list_categories().

    Zitat

    Mit dem Unterschied, dass Kategorie der Hauptmenu-Punkt ist und die einzelnen Kategorien die "Children" (so wird das wohl genannt) sind.


    Nun, du würdest in diesem Fall die Hauptkategorien zu Children des Menüpunktes "Kategorien" degradieren. ;-) Nur die Frage: was ist "Kategorien"? Ein Link oder nicht? Ist es ein Link, dann: wohin?

    Zitat

    So gesehen bin ich auch auf den Gedanken gekommen, dass ich einzelne "kategorie1-page.php", etc. bauen muss um den erwünschten Effekt zu haben.


    Nicht zwingend. Du bekommst aber ein Problem, die Auflistung von Kategorien und "Seiten" (im WP-Sinn) im Menü zu vermischen. Da gibts verschiedene Ansätze, wirklich "schön" ist aber keiner. Wie gesagt, "Seiten != Kategorien" ;-)

    Zitat

    Aber was sollte in diesem Dokument drinne stehen ist halt meine Frage.


    Ein "Loop", d.h. eine Artikelschleife. Darum musst du dich aber nicht kümmern. Wie gesagt, es wird auf eine bestehende Templatedatei zurückgegriffen. WENN du es richtig machst.

    So, ich hoffe, damit auch zu deinen restlichen Fragen zumindest einen Hinweis gegeben zu haben. Wenn nicht, frag einfach nach.

  • Hallo nochmal,

    Zitat

    In der Menuleiste soll im Endeffekt die selbe Liste noch mal stehen.
    Soweit klar. Daher ja mein Hinweis auf wp_list_categories().


    Irgendwie steckt in dem Begriff "wp_list_categories" noch nicht drinne wie und wo ich darauf verweisen kann.
    Ich bräuchte hier aufgrund meiner Kenntnisse einfach den ganz konkreten Hinweis. Also der ganz konkrete Schritt: Bspw. habe ich die Möglichkeit in das Textfeld im WP-Admin-Bereich beim Seiten generieren einen Befehl schreiben zu können. Ist das die Stelle an der ich darauf verweise, dass beim draufklicken bitte die Kategorie xy aufgerufen wird? - und wo steckt die Information, dass es sich um die Kategorie xy und nicht um yz handelt?

    Ich dachte, ich kann den Link dafür aus der Sidebar rausholen - da steht aber nur:


    Siehst du da, etwas, was ich brauchen könnte?


    Zitat

    Du bekommst aber ein Problem, die Auflistung von Kategorien und "Seiten" (im WP-Sinn) im Menü zu vermischen. Da gibts verschiedene Ansätze, wirklich "schön" ist aber keiner. Wie gesagt, "Seiten != Kategorien"


    Ich verstehe hier auch deinen Verweis Seiten!=Kategorien und die Warnung, das nicht zu vermischen, nicht genau, kannst du das konkretisieren? Außerdem: welche sind die Wege?

  • Irgendwie steckt in dem Begriff "wp_list_categories" noch nicht drinne wie und wo ich darauf verweisen kann.


    Hast du dir die Doku zu der Funktion eigentlich mal angesehen? Hier nochmal der Link zur (weniger ausführlichen, aber vielleicht einfacher zu verstehenden) deutschen Doku dieser Funktion:
    Template Tags/wp list categories ? WordDoku
    und ein Zitat aus eben dieser:

    Zitat von Doku

    Zeigt eine Liste aller Kategorien an. Die Links sind zum jeweiligen Archiv der Kategorie verlinkt.

    Zitat

    Ich dachte, ich kann den Link dafür aus der Sidebar rausholen - da steht aber nur:

    PHP
    <?php } ?>
    <li>
    <h3><?php _e('Kategorien','branfordmagazine');?></h3>
    <ul class="subnav">
    <?php [COLOR="Red"][B]wp_list_categories[/B][/COLOR]('orderby=order&hide_empty=1&tit le_li=&exclude=1,');?>
    </ul>
    </li>

    Siehst du da, etwas, was ich brauchen könnte?


    Ja. Hab ich dir rot markiert. (PS: Verwende bitte keine Zitat-Tags für Quellcode, sondern die entsprechenden Code-Buttons)


    Zitat

    Ich verstehe hier auch deinen Verweis Seiten!=Kategorien und die Warnung, das nicht zu vermischen, nicht genau, kannst du das konkretisieren?


    Die Liste der Seiten wird (analog zur Liste der Kategorien) mit der Template-Funktion wp_list_pages() erzeugt und ausgegeben. D.h. du schreibst im Template nur diesen Funktionsaufruf hin, und WP schreibt dir an diese Stelle eine HTML-Liste aller Seiten deines Blogs. Du kannst innerhalb dieser Liste nicht einfach sagen: "an 3. Stelle möchte ich jetzt aber eine Liste meiner Kategorien haben, und danach den Rest der Seiten". Das meine ich mit "vermischen".

    Zitat

    Außerdem: welche sind die Wege?


    Du könntest mit include/exclude-Parametern steuern, welche Seiten ausgegeben werden sollen. D.h. du schließt erst eine Hälfte der Seite aus, gibst dann deine Kategorieliste aus, und dann die restlichen Seiten. Du könntest ebenso mit Filtern (WordPress Plugin-API) arbeiten, und die Seitenliste bei der Ausgabe "editieren". Du könntest Seiten anlegen, die ein Kategorielisting (d.h. die Artikel in eienr Kategorie) ausgeben.
    Wie gesagt, jede dieser Möglichkeiten hat ihre Nachteile, wirklich empfehlen kann ich davon keine. Am sinnvollsten wäre in meinen Augen noch Variante 1, wobei die Kategorieliste am Anfang/Ende der Seitenliste angefügt wird - mittel schon x-mal erwähnter wp_list_categories()-Funktion.

  • Super! Jetzt konnte ich mich entscheiden:
    Ich denke ich entscheide mich für die Variante, bei der ich Seiten anlege, die ein Kategorienlisting ausgeben. Das ist für mich am sinnvollsten, weil ich diese Seiten beim Anlegen im Admin-Bereich eindeutig zuweisen kann.
    Frage 1: liege ich damit richtig, dass das Seiten sind, die bspw. „category-1-page.php“ heißen? (nur solche erscheinen in „Erweiterte Einstellungen“ >> „Seiten-Template“)
    Frage 2: Wenn ja – muss ich auf dieser Seite ja sagen, um welche Kategorie es sich handelt und wie sie dargestellt werden soll (bspw. Überschrift, Teaser, darunter zusätzliche Angaben, wie Autor, Kommentare, etc). Woher bekomme ich diesen Code? Kann ich mir den irgendwo rauskopieren?
    Ich weiß, dass du mir bereits eine Menge an Code-Schnipsel genannt hast – nur kann ich damit nichts anfangen (z.B. der Befehl wp_list_categories () sagt mir so alleine stehend nichts;-)

  • Super! Jetzt konnte ich mich entscheiden:
    Ich denke ich entscheide mich für die Variante, bei der ich Seiten anlege, die ein Kategorienlisting ausgeben. Das ist für mich am sinnvollsten, weil ich diese Seiten beim Anlegen im Admin-Bereich eindeutig zuweisen kann.


    Okay, das klingt gut.


    Zitat

    Frage 1: liege ich damit richtig, dass das Seiten sind, die bspw. „category-1-page.php“ heißen? (nur solche erscheinen in „Erweiterte Einstellungen“ >> „Seiten-Template“)
    Frage 2: Wenn ja – muss ich auf dieser Seite ja sagen, um welche Kategorie es sich handelt und wie sie dargestellt werden soll (bspw. Überschrift, Teaser, darunter zusätzliche Angaben, wie Autor, Kommentare, etc). Woher bekomme ich diesen Code? Kann ich mir den irgendwo rauskopieren?


    Schau mal wie der Fragesteller das in diesem Thread hier gelöst hat:
    http://forum.wordpress-deutschland.org/konfiguration/…kel-zeigen.html
    Grille verwendet da für die Kategorien und zugehörigen Seiten denselben Namen, und prüft daraufhin ab.

    Alternativ kannst du auch über die Benutzerdefinierten Felder mitteilen, welche Kategorie ausgegeben werden soll.

    So oder so benötigst du nur 1 Seitentemplate für alle Kategorien. ;-)


    Zitat

    Ich weiß, dass du mir bereits eine Menge an Code-Schnipsel genannt hast – nur kann ich damit nichts anfangen (z.B. der Befehl wp_list_categories () sagt mir so alleine stehend nichts;-)


    Schon klar, dass dir das nix sagt. Muss ja auch nicht. Aber ich hab das ja jeweils mit der entsprechenden Doku-Seite verlinkt, wo eigentlich alles vernünftig erklärt ist. ;-)

  • Also ich hab jetzt ein Screenshot eingefügt um mein Problem zu visualisieren. Auf dem Bild sieht man oben ein Menu, das als 3. Punkt Kategorien hat. Diese sind (abgesehen von einer) dieselben wie in der Sidebar.
    Nun habe ich vor, pages.php-Templates zu erstellen, die ich den einzelnen Kategorien im Menu (nicht Sidebar) zuweisen möchte. In diesen Templates soll drinne stehen, dass genau dieselbe Seitenansicht gezeigt wird wie wenn ich eine Kategorie aus der Sidebar anklicke. Kann mir da bei dem Code jemand helfen? Das wäre sehr freundlich!

    marX: Tut mir leid, aber der letzte Hinweis trifft mein Problem einfach nicht oder ich verstehe das einfach nicht!

  • Ich verstehe schon was du meinst. ;-) Vielleicht kann ich mit ein wenig Code anschaulicher machen, was ich meine. Poste bitte mal den Code (aus der header.php vermutlich), wo das Top-Menü erzeugt wird. Dann versuchs ich dir daran mal zu erklären. Pagetemplates brauchst du da nicht, denke ich.

  • Hier der Code aus der Header-Datei

    PHP
    <div class="right"></div>
    </div>
    <ul id="nav" class="clearfloat">
    <li><a href="<?php echo get_option('home'); ?>/" class="on">Home</a></li> 
    <?php wp_list_pages('title_li='); ?>
    </ul>


    Bin sehr gespannt und vielen Dank

  • Bau erstmal folgendes ein:

    PHP
    <div class="right"></div> 
    </div> 
    <ul id="nav" class="clearfloat"> 
    <li><a href="<?php echo get_option('home'); ?>/" class="on">Home</a></li>  
    [COLOR="Red"]<li>
      Kategorien
      <ul><?php wp_list_categories('title_li='); ?></ul>
    </li>[/COLOR]
    <?php wp_list_pages('title_li='); ?> 
    </ul>


    und schau mal ob das dem nahe kommt, was du möchtest.

  • Das ist ja unglaublich!
    Ich habe jetzt den Code noch erweitert damit er mir die Reihenfolge so anzeigt, wie ich das auch in der Sidebar gestaltet habe.
    Was ich jedoch nicht checke:
    1. Die Formatierung, die im nav.css festgelegt wurde, übernimmt er mir hier jedoch nicht!? Wieso, verstehe ich nicht, da er "Home", das ja auch explizit im Code steht, auch so formatiert wird!
    2. Wie kann ich ihm "sagen", dass ich "Kategorien" erst an 3. Stelle haben möchte?
    Der Code sieht jetzt folgendermaßen aus:

    Vielen Dank nochmals

  • Habe jetzt das Problem mit der Formatierung in den Griff bekommen. Siehe Code. Aber wegen der Reihenfolge weiß ich echt nicht weiter.

    PHP
    <div class="right"></div>
    </div>
    <ul id="nav" class="clearfloat">
    <li><a href="<?php echo get_option('home'); ?>/" class="on">Home</a></li> 
    
    
    <li>
      <a /" class="nav">Kategorien </a>
      <ul><?php wp_list_categories('orderby=order&hide_empty=1&title_li=&exclude=1,3'); ?></ul>
    </li>


    Danke

  • Das ist ja unglaublich!


    Glaub mir halt auch mal was! :-D

    Zitat

    1. Die Formatierung, die im nav.css festgelegt wurde, übernimmt er mir hier jedoch nicht!? Wieso, verstehe ich nicht, da er "Home", das ja auch explizit im Code steht, auch so formatiert wird!


    [del]Sollte eigentlich. Auf ejden Fall darfst du nicht nochmal die ID "#nav" angeben. IDs dürfen nur 1x im Code auftauchen. Da ich aber nicht weiß was die IDs/Klassen bei dir so machen, kann ich erstmal nicht mehr dazu sagen. Ein Link wäre an der Stelle gut.
    ("Theoretisch" sollte es so aber funktionieren, die Seiten werden ja auch nicht anders eingebunden.)[/del]
    Formatierung siehe unten - da fehlte natürlich das <a>-Element.

    Zitat

    2. Wie kann ich ihm "sagen", dass ich "Kategorien" erst an 3. Stelle haben möchte?


    Wie ich schon weiter oben angedeutet hatte ("Mischen" von Seiten und Kategorien im Menü), du benötigst dann 2x. wp_list_pages() - 1x vor und 1x nach wp_list_categories() mit entsprechenden include/exclude-Parametern. Etwa so:

    PHP
    <ul id="nav" class="clearfloat">
    <li><a href="<?php echo get_option('home'); ?>/" class="on">Home</a></li> 
    <?php wp_list_pages('title_li=&include=123'); ?>
    <li id="nav" class="clearfloat">
      <a href="#">Kategorien</a>
      <ul><?php wp_list_categories('orderby=order&hide_empty=1&title_li=&exclude=1,3'); ?></ul>
    </li>
    <?php wp_list_pages('title_li=&exclude=123'); ?>
    </ul>


    wobei "123" die ID der Seite ist, die vorher auftauchen soll.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!