Artikel einer Kateborie auf einer Seite

  • Hallo,

    ich habe eine (evtl. Anfänger-) Frage... vielleicht kann mir ja jemand auf die Sprünge helfen.

    Ich habe die Startseite meines Blogs so angepasst, dass "Artikel" einer bestimmten "Kategorie" nicht mehr angezeigt werden bzw. herausgefiltert werden.
    Nun möchte ich aber, dass genau diese "Artikel" (also alle "Artikel" einer von mir vorgegebenen "Kategorie") auf einer "Seite" angezeigt werden.

    Wie kann ich / man das bewerkstelligen?

    • 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

  • Hi,

    so habe ich es im Moment auch gemacht. IM Moment habe ich also einen Menü-Eintrag, der auf "http://www.example.de/category/blog/" verweist.

    Die dort angezeigten Artikel liegen immer unter "http://www.example.de/blog/artikel-xyz/".

    Rufe ich nun aber die Seite "http://www.example.de/blog/" auf, ist die Seite natürlich leer. Vin daher dachte ich, dass es klasse wäre, wenn man es hinbekommtg und die Artikel direkt auf "http://www.example.de/blog/" angezeigt werden.

    Oder geht das nicht? Wie gesagt - ich kenne mich noch nicht so gut aus...

  • Du legst eine Extra-Seite an, für die Du ein Extra-Page-Template anlegst.

    Dafür kannst Du Deine page.php kopieren, umbennen und an den Anfang sowas einfügen:

    PHP
    /*
    Template Name: Extra-Seite
    */



    Abspeichern unter page_extra.php (oder was immer Du wiltst).

    Diese Template weist Du Deiner Extra-Seite zu. Diese erscheint nun immer noch mit dem Inhalt, den Du eingegeben hast.

    Um das zu ändern, benutzen wir die query-posts - Funktion:

    PHP
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts('cat=45&posts_per_page=10&paged='.$paged);



    Das fügst Du an den Anfang Deines Extra-Template nach dem ganz oben geschriebenen Code (/* Template.... */) ein, ersetzt die 45 durch die ID Deiner Kategorie "Blog", und voila.

  • Hm, irgendwie bekomme ich es nicht hin...

    Ich habe die Page.php kopiert und unbenannt in "page-blog.php".

    Der Quelltext sieht ohne dass ich etwas ändere so aus:

    Wo muss ich nun aber was genau machen? Sorry... ich kenne mich damit leider nicht aus. :-/ Ach ja... und wie weise ich das Template der Extra-Seite zu?

  • Über

    PHP
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>



    einsetzen:

    PHP
    query_posts('cat=XY&posts_per_page=10&paged='.$paged); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;



    Über


    PHP
    <?php get_header(); ?>



    einsetzen:

    PHP
    /*
    Template Name: Blog-Seite
    */
  • Danke Dir für die Beschreibung. Nun erscheint die Seite und ich habe diese einmal angelegt.

    Leider funktioniert es aber noch nicht 100%ig. Es werden nun zwar anscheinend die entsprechenden Artikel der angegebenen Kategorie gefiltert, aber es wird leider nur der Text der Artikel ausgegeben. Der Titel / Link zum kompletten Artikel, etc. fehlt.

    Nun sieht der Quellcode folgendermaßen aus:

    Ich mach' doch sicher noch etwas falsch, oder? ;-)

  • Ja, es wäre evtl. (oder ziemlich sicher) besser gewesen, den Code der index.php zu kopieren :oops: .

    Also Code der index.php kopieren, dort den Code einfügen, den Du in die kopierte page.php eingefügt hast (selbes Schema) und das als page-blog.php speichern -sorry, hätte ich gleich dran denken sollen....

  • Huhu, ich wieder... wenn ich Glück habe, liest hier noch jemand mit bzw. schaut in den Post und kann evtl. weiterhelfen.

    Also, ich habe ja nun eine extra Seite eingerichtet, auf der nur Artikel einer Kategorie auftauchen. Alles funktioniert soweit wunderbar - bis auf eine KLeinigkeit:
    Erstelle ich einen Artikel, kann ich einen (ich nenne es einfach mal) "Weiterlesen"-Tag einfügen. Sobald ich diesen eingefügt habe, erscheint auf der Index (jedenfalls sollte es so sein) nur der Text bis zum "Weiterlesen-Link". KLickt der Nutzer drauf, gelangt er auf die eigentliche Artikelseite und kann sich den Artikel weiter durchlesen. Das Ganze funktioniert nun leider nicht auf der neu eingereichteten "Extra-Seite".

    Muss ich noch irgendwo etwas abändern, so dass diese kleine Funktion auch auf der neu eingerichteten Seite funktionkiert?

  • Und es hat sich schon erledigt. Ich habe vor der Content-Ausgabe folgendes eingefügt:

    <?php
    global $more;
    $more = 0;
    ?>

    Nun funktioniert es. :-)

  • Ich habe die Startseite meines Blogs so angepasst, dass "Artikel" einer bestimmten "Kategorie" nicht mehr angezeigt werden bzw. herausgefiltert werden.



    Hi,

    könntest du mir das vielleicht erklären? Nachdem ich notgedrungen nun auch eine bestimmte Kategorie meines Blogs auf einer bestimmten Seite anzeigen lasse (habe vergeblich nach einem Kalender gesucht, der mir das eigentlich ersparen sollte), fehlt mir nur noch der "Kniff", wie ich verhindern kann, dass die Artikel dieser Kategorie auch auf der Startseite gezeigt werden. Viele Dank schon mal. :wink:

    Gruß, Hurly

  • Habe es jetzt selbst gefunden. Ich wüsste nur gerne, wo genau ich den folgenden Code in die index.php einsetzen muss:

    PHP
    <?php
       if (is_home()) {
          query_posts("cat=-1");
       }
    ?>



    Danke schon mal für eine Antwort. :)

  • O.k., wenn Du Artikel einer bestimmten Kategorie von der Startseite ausschliessen möchtest, sollte das hier weiterhelfen:

    Füge in der "functions.php" (z.B. ganz am Ende) folgendes ein:
    [COLOR=#000000]<?php[/COLOR][COLOR=#666666][/COLOR]

    function filter_posts() {
    global $wp_query;
    if(is_front_page()) {
    $wp_query->set('category__not_in',array(XXX));
    }
    }
    add_action('pre_get_posts','filter_posts');


    ?>[COLOR=#000000][/COLOR]
    Anstatt "XXX" fügst Du hier die Kategorie-ID ein, die Du von der Startseite aussliessen möchtest..

  • Da haben sich unsere Posts ja fast überschnitten... ich habe es nur über den von mir beschriebenen Weg hinbekommen. Probiere das mal aus. :-)

  • Danke schön. Teste ich mal. :)

    Update: Habe doch erst mal auf gut Glück den gefundenen Code in die index.php eingesetzt - auch einfach vor

    PHP
    <?php if (have_posts()) : ?>



    Passt, wackelt und hat Luft. :-D

    Einmal editiert, zuletzt von Hurly (29. Mai 2011 um 22:27)

Jetzt mitmachen!

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