Seitentemplate auch für bestimmte Kategorie möglich?

  • Hallo,

    wie man ein bestimmtes Seitentemplate für Seiten erstellt ist mir klar.
    Doch gibt es auch eine Möglichkeit, Artikeln einer bestimmten Kategorie ein anderes Aussehen zu verpassen, als Artikeln anderer Kategorien? (also quasi eine zweite single.php für Artikel der Kategorien xy)

    Google konnte mir nicht helfen, ich fand immer nur den Hinweis bzw. FAQ Einträge für Seiten.
    Ich hoffe nun auf eure Hilfe.

    Liebe Grüße,
    duff

    • 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

  • Hallo!

    einfach ein entsprechendes Template mit dem Namen

    category-SLUG.php
    oder
    category-ID.php

    in das Theme-Verzeichnis laden (Slug oder ID natürlich entsprechend der Kategorie anpassen).

    Ich würde folgende Vorgehensweise vorschlagen:


    1. category.php als category-slug.php speichern
    2. Anpassungen vornehmen
    3. Fertig.


    Gruß,
    Nick

    EDIT: Dieser Tipp gilt natürlich nur für die Archiv-Seiten. Um das Aussehen bestimmter Kategorien im Loop zu verändern, dann schau Dir das neue Standard-Theme TwentyTen an.

  • Hallo,

    leider habe ich keine category.php Dateien.
    Ich möchte lediglich, dass bei Artikeln einer bestimmten Kategorie keine Sidebar zu sehen ist (und ein paar andere kleine Änderungen).

    Sprich, wenn ich einen Artikel der Kategorie 'xy' aufrufe, dann soll der Artikel im div 'container' sein und wenn ich Artikel aller anderen Kategorien aufrufe soll der Artikel im div 'container_2' zu sehen sein...
    Ist jetzt nur ein Beispiel...

    Ich habe versucht, das ganze mit single.php und single-7.php zu lösen (7 ist die ID der gewünschten Kategorie) allerdings ergab das keine Besserung. :(

    Hast du noch einen Tipp für mich, oder mache ich etwas falsch?

    Gruß,
    duff

  • Okay. Mein erste Idee funktioniert da leider nicht. Vielleicht zum Verständnis einmal die Template Hierarchie von WordPress:

    http://codex.wordpress.org/images/1/18/Template_Hierarchy.png

    Und die Dokumentation zu Kategorie Vorlagen:

    http://codex.wordpress.org/Category_Templates

    Nun aber zu Deinem Problem. Wahrscheinlich kannst Du es mit Conditional Tags in der single.php lösen. Einfach googeln...

    Gruß,
    Nick

  • Kopier die single.php und nenne Sie in single-slug.php um, wobei "slug" für das Ende des Permalinks steht (unterm Titel im Editor). Alternativ kannst Du auch die ID des Posts nehmen. Dann verstehst Du einmal was damit gemeint ist und was passiert (siehe Link zur template Hierarchy).

    Willst Du zB die Artikelansicht wie bei Deiner Startseite haben, aber ein wenig anpassen, dann kopierst Du Deine zB index.php und nennst sie Category.php, nimmst Deine Änderungen vor, ladest Sie hoch und immer wenn eine Kategorie-Liste kommt, wird dieses Template heran gezogen. Wenn Du das nur für eine bestimmte Kategorie willst, dann nennst Du sie category-YOURSLUG.php usw.

  • Ich bin mir nicht sicher, aber ich glaube, du hast mein Problem falsch verstanden.

    Ich möchte nicht die Artikelübersicht ändern, ich möchte die Ansicht eines einzelnen Artikels ändern.
    Dazu habe ich mal zwei Grafiken erstellt, die das verdeutlichen sollen...

  • Das geht anders besser: Schreib in Deine functions.php folgendes (leicht angepasst > Siehe function reference im WP.org Codex):

    Code
    if ( is_category('1') ) {
      wp_enqueque_style( 'style_name_1', get_bloginfo('template_url') . 'style_custom_cat_1.css', false, '0.0', 'screen' );
    else if ( is_category('2') ) {
      wp_enqueque_style( 'style_name_2', get_bloginfo('template_url') . 'style_custom_cat_2.css', false, '0.0', 'screen' );
    }

    Deine Stylesheets müssen dann halt auch dort liegen und so heißen. Aber so kannst ganz gemütlich via Conditional Tag Deine Stylesheets ausgeben und alles unterschiedlich stylen. Voraussetzung ist halt, dass am übergeordneten div als id auch irgendwo die post-ID dran hängt. Also

    Code
    global $post;
    echo '<div id="' . $post->ID . '">';
    // hier Dein Inhalt
    echo '</div';

    Ich hoffe dass im 2ten Teil bei global kein Wurm drinnen ist. Ist jetzt alles aus dem Gedächtnis. Aber wie schon gesagt, da sollte in die css-ID auf jeden Fall die Post-ID oder -Slug rein, damit Du den Post via css editieren kannst. Falls Du nicht nur jeden Post separat angreifen willst, reicht es, wenn Du die Stylesheets unterschiedlich vergibst, also auf Category Basis (nur den ersten Teil dann verwenden).

    Edit: Kann sein, dass is_category keine Anführungszeichen bei der ID braucht.

  • Hallo,
    bevor ich mich daran wage noch eine Frage.
    Kann ich statt der *.css Datei auch einfach eine php-Datei angeben?
    Sprich cat1.php und cat2.php?

  • Also Php-Css Dateien? Gute Frage. Hab deswegen heute schon beim Zigaretten holen nachgedacht und hier meine ehrliche Antwort: Keine Ahnung & keine Zeit zum Testen. Wäre fein, wenn Du es ausprobierst und hier zurück schreibst.

  • Ich finde, die einfachste Art ist, die anderen "Artikelansichten" in die single.php zu includen.

    PHP
    <?php
    get_header();
            if (in_category (1) ) { include 'single-cat1.php';
    } elseif (in_category (2) ) { include 'single-cat2.php';
    } else { 
    // hier kommen die jetzigen Inhalte der normalen single.php
     } ?>

    die single-cat1.php etc. kannst du dann entweder komplett anders gestalten oder nur andere css-klassen vergeben, die sidebar anders machen, etc., etc.

  • Vielen Dank euch beiden!
    So wie digdigger es vorgeschlagen hat funktioniert es fast wunderbar!

    Hier mal meine Dateien:

    Die aktuelle single.php:

    Wie genau muss ich nun den obigen Code einfügen, dass bei Kategorie ID 7 die single-cat-1.php verwendet wird?
    so wie ich das mache werden immer beide aufgerufen (also single.php und die spezielle) sodass der inhalt doppelt dargestellt wird.
    wenn ich den inhalt der single.php in den kommentar einfüge (an die stelle) dann wird der code nicht geschlossen, kannst du mir da eventuell noch weiterhelfen?

    Einmal editiert, zuletzt von duffman (1. August 2010 um 20:59)

  • single.php:

Jetzt mitmachen!

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