Sascha-Oertlin.com
workablogic
Abonniere meinen Feed
Schnapp mein Feed!
Bleibe immer auf dem neuesten Stand und abonniere den kostenlosen Feed.
Folge mir!
Immer informiert bleiben! Werde mein Follower!
Google Group beitreten
Friend Connect
Trete der ständig wachsenden Community bei.
Facebook Fan werden
Werde Fan!
Werde mein Fan bei Facebook



How To – WordPress – Eigenes Design für einzelne Kategorien + PlugIn

Heute stand ich vor dem Problem, dass ich gerne einer meiner Kategorien ein eigenes Design verpassen wollte, was ich auch recht gut hinbekommen habe. Testweise sah das sogar schon sehr gut aus. Wie ich das gemacht habe, möchte ich kurz schildern. Allerdings gibt es das Ergebnis in meinem Blog erst in ein paar Tagen zu sehen, da ich noch an den Inhalten dieser Kategorie feile.

Die Aufgabe

Ich wollte einer Kategorie ein eigenes Design verpassen. Das Ziel war ein anderer Header, eine andere Sidebar sowie eine eigene Artikelansicht. Nach viel Ausprobiererei habe ich das sogar hinbekommen. Hier also mein Lösungsweg, der vielleicht nicht der beste ist, aber funktioniert hat.

Das Grundgerüst

Als Grundgerüst für dieses Experiment diente mir die “archive.php”. Um diese einer Kategorie zuweisen zu können muss man sie umbenennen. Und zwar in “category-X.php” Das X steht dabei für die ID der Kategorie, welche ein eigenes Design zugewiesen bekommen soll. Bei mir war das die Kategorie mit der ID 56. Die Datei heißt also categorie-56.php. Damit war der Grundstein für das eigene Design gelegt.

Der Header

Die Header Datei (header.php) ist von Grund auf schon referenziert. Sie wird auch in der Archive.php bereits von vorneherein aufgerufen. Der Befehl dazu ist der erste, der bei mir in dieser Datei drin stand und lautet wie folgt:

<?php get_header();?>

Da ich einen eigenen Header für dieses Design haben wollte musste ich also diesen Befehl umschreiben um einen neuen Header (in diesem Fall die header2.php) referenzieren zu können. Der neue Befehl konnte allerdings nicht auf der “GET” Methode basieren, da ich in meinem Theme keinen Pfad zur header2.php angegeben habe. Also nutze ich den “include” Befehl. Das sieht dann wie folgt aus:

<?php  include(”header2.php”); ?>

Damit habe ich eine neue Header Datei für mein Kategorie Template angelegt, die ich frei nach meinen Wünschen gestalten kann.

Die Sidebar

Die Sidebar stellte mich vor ein größeres Problem. Ich wollte ja eine eigene Sidebar in diesem Template haben. Aber einfach die Widgets rausschmeissen ging nicht, da mir diese dann in der normalen Ansicht, also in den anderen Kategorien gefehlt hätten. Also musste eine neue her. Da ich sowieso schon 6 Sidebars verwende war die Erstellung und implementierung auch nicht schwer. Zunächst habe ich mir die Sidebar1.php kopiert und in den Dreamweaver geworfen. Heraus kam eine Sidebar7.php, die nur folgenden Code mit sich herumträgt:

<?php if (!art_sidebar(7)):?>
<?php endif ?>

Da ich diese Sidebar anstatt der Sidebar1.php anzeigen möchte, kann ich den Div-Container darum bestehen lassen, und übernehme so die fertigen Formatierungen. Wer möchte, kann sich dafür auch eine eigene Css Klasse schreiben. Ich empfehle aber, das erst zu tun, wenn das Categorie Template zu 100% ohne Probleme funktioniert.

Selbstverständlich muss diese Sidebar auch ordnungsgemäss registriert und angemeldet werden. Dazu öffnet man einfach die functions.php und sucht nach folgendem Code:

if (function_exists(’register_sidebars’)) {
register_sidebars(6, array(
‘before_widget’ => ‘<!— BEGIN Widget —>’,
‘before_title’ => ‘<!— BEGIN WidgetTitle —>’,
‘after_title’ => ‘<!— END WidgetTitle —>’,
‘after_widget’ => ‘<!— END Widget —>’
));

register_sidebar(array(’name’=>’subfooterleft’));
register_sidebar(array(’name’=>’subfootercenter’));
register_sidebar(array(’name’=>’subfooterright’));
register_sidebar(array(’name’=>’headerwidget’));
}

Das spezielle Augenmerk legt man auf diese Zeile:

register_sidebars(6, array(

Hier wäre die 6 in eine 7 zu ändern, damit die neue Sidebar implementiert ist und genutzt werden kann. Das ganze sähe dann wie folgt aus:

register_sidebars(7, array(

Und als ob das noch nicht genug ist, müssen wir ebenfalls die categorie-56.php anpassen. Hier müssenwir nämlich auch Bescheid geben, dass die neue Sidebar geladen werden soll. Also holen wir uns die archives.php mal in den Editor und fischen folgenden Code heraus:

<div>
<?php include (TEMPLATEPATH . ‘/sidebar1.php’); ?>
<?php include (TEMPLATEPATH . ‘/sidebar2.php’); ?>

<?php include (TEMPLATEPATH . ‘/sidebar3.php’); ?>

<?php include (TEMPLATEPATH . ‘/sidebar4.php’); ?>

<?php include (TEMPLATEPATH . ‘/sidebar5.php’); ?>

<?php include (TEMPLATEPATH . ‘/sidebar6.php’); ?>
</div>

Und ändern ihn wie folgt ab:

<?php include (TEMPLATEPATH . ‘/sidebar7.php’); ?>

Damit erreichen wir, dass in unserem Template nur die Sidebar7.php angezeigt wird. Allerdings ist das alles nutzlos, wenn man einen Artikel anklickt, da wir noch eine wichtige Datei vergessen haben. Hierbei handelt es sich um die Datei, welche die Ansicht der einzelnen Artikel beeinflußt: Die Single.php.

Die Single.php

Wie gesagt, diese Datei beeinflußt das Aussehen der Artikel und alles was darum sonst noch so passiert. Vor allem aber werden in der Single.php die gleichen Dateien referenziert wie in der Archives.php, also auch die Sidebars, was wir natürlich gerne verhindern möchten und deswegen auch hier wieder die Sidebars rausnehmen und gegen die Sidebar7.php tauschen. Der Code ist der gleiche wie in der Archives.php, deswegen werde ich den jetzt nicht noch einmal auflisten.

Wichtig ist auch noch, diese neue Single.php mit der gleichen ID wie die Kategorie zu speichern. Also in meinem Fall ist das dann die single-cat-56.php.

Am besten nimmst Du dann das Plugin custompostemplate (kommt am Schluss des Artikels als Code). Dort siehst Du jetzt wenn Du das Plugin öffnest die folgenden Zeilen:

if ( in_category(’56′) && file_exists(TEMPLATEPATH . ‘/single-cat-56.php’) )
return TEMPLATEPATH . ‘/single-cat-32.php’;

Das habe ich bereits editiert. Die 56 ergänzt Du dann wieder mit Deiner Kategorie-ID.

Wenn Du noch für eine weitere Kategorie eine eigene Single-PHP willst, dann wieder eine weitere erstellen und im Plugin direkt unter der obigen Zeile gleiches nocheinmal einfügen (natürlich mit der richtigen Kategorie-ID).

WICHTIG: Egal wieviele Du im Plugin eingibst, hinter dem letzten muss IMMER

return $template;
}

stehen.

Ganz WICHTIG: DU darfst dieses Plugin NCIHT aktualisieren, denn ansonsten gehen Deine Einstellungen verloren.

Hier also der Code für das PlugIn:
Wichtig: Bitte diesen Code kopieren und in einer Datei mit dem namen customtemplate.php abspeichern. Dann in den Plugin Ordner hochladen.

<?php

/*
Plugin Name:  Custom Post Templates  / Oertlin Edition
Version: 1.0
*/

function cpt_custom_post_template($template) {
global $wp_query;

$post = $wp_query->post;
$id = $post->ID;

// If a template exists for this post ID, load it.
if ( file_exists(TEMPLATEPATH . “/single-{$id}.php”) )
return TEMPLATEPATH . “/single-{$id}.php”;

// Add custom checks here.  For example, give posts different templates
// depending on what categories they are in.
if ( in_category(’56′) && file_exists(TEMPLATEPATH . ‘/single-cat-56.php’) )
return TEMPLATEPATH . ‘/single-cat-56.php’;

return $template;
}

add_filter(’single_template’, ‘cpt_custom_post_template’);
?>

So kann man in allen drei Dateien (single-cat-56.php / header2.php / sidebar7.php) wurschteln wie man mag und sich ein komplett auf eine einzige Kategorie bezogenes Template zusammen bauen.

Nachtrag: Single PHP die zweite

Dafür erstellt man zunächst zwei Kopien der single.php Datei und benennt sie beispielsweise in single-kino.php und single-nprmal.php. In diesen Datei nimmt man seine gewünschten Änderungen vor. Anschließend nimmt man sich noch einmal die “reguläre” single.php vor und schreibt eine Query vergleichbar mit der folgenden:

1
2
3
4
5
6
7
post;
if ( in_category('5') ) {
include(TEMPLATEPATH . '/single-kino.php');
} else {
include(TEMPLATEPATH . '/single-normal.php');
}
?&gt;

In diesem Fall entspräche die Kategorie 5 der Kategorie für Kino. Die Abfrage stellt fest, ob ein Artikel aus der Kategorie Kino aufgerufen wird. Falls ja, wird das Single-Kino-Template aufgerufen, falls nein, das normale Single Template. Wenn weitere Templates benötigt werden müssen sie durch elseif-Abfragen eingebunden werden.

Eigenes Post Design über die functions.php

1
add_filter('single_template', create_function('$t', 'foreach( (array) get_the_category() as $cat ) { if ( file_exists(TEMPLATEPATH . "/single-{$cat-&gt;term_id}.php") ) return TEMPLATEPATH . "/single-{$cat-&gt;term_id}.php"; } return $t;' ));

Vorstehender Code wird in die functions.php (im Themes-Ordner) eingefügt und er weist WordPress an, eine eventuell vorhandene single-DEINECATID.php zur Darstellung der einzelnen Posts zu verwenden, falls nicht, wird die normale single.php verwendet. Man braucht also nur pro Kategorie eine single.php erstellen und schon klappts. (category-1.php ? single-1.php).
Info: Templates für Single-Seiten funktionieren nur, wenn Posts einer einzigen Kategorie zugeordnet sind.

Kommentieren

Infos zur Freischaltung von Kommentaren

Ich habe ein paar Regeln für die Kommentarfunktion aufgestellt. Kommentare mit folgenden Merkmalen werden nicht freigeschaltet oder vor der Freigabe entsprechend editiert:

  • Als Name wurde ein Keyword eingegeben
  • In URL oder Kommentar wurde ein Referrallink eingebaut
  • Der Kommentar dient nur als Werbung
  • Der Kommentar ist vulgär oder beleidigt andere Kommentatoren
  • Der Kommentar dient offensichtlich nur dem Zweck einen Backlink zu erlangen
  • Links zu Porno- Rechtsradikalen oder Gewaltverherrlichenden Seiten werden gelöscht - Ich bin der Admin! Ich habe diese Macht!
  • Die Bereitstellung von Werbekommentaren geschieht ausschließlich auf Basis der AGB, die in den Links zu finden ist.
  • Mit der Veröffentlichung von Werbung via Kommentar, erklären Sie sich durch das Absenden des Kommentars mit den Bedingungen für die Platzierung einer Werbeanzeige und den AGB von Sascha-Oertlin.com einverstanden.

Ich hoffe ihr habt Verständniss für diese Regeln. Sascha-Oertlin.com ist kein Platz um Werbung und verbalen Durchfall abzuladen.

 
Blogstats
433 Beiträge bisher
0 Kommentare bisher
22138 Besucher dieses Jahr
7192 Besucher diesen Monat
146 Besucher heute
Statistik Tool installiert am 01.09.09
Alle Artikel anschauen
Partner & Sponsoren
Sascha-Oertlin.com
ADCELL


Blog Marketing
teliad - Der Marktplatz für Textlinks


Sascha-Oertlin.com
Sascha-Oertlin.com



Letze Kommentare
    Archiv
    Buttons
    Blogverzeichnis - Blog Verzeichnis bloggerei.de www.beliebtestewebseite.de Blog Top Liste  by TopBlogs.de BlogPingR.de - Blog Ping-Dienst, Blogmonitor blogoscoop Blogs.Add to Technorati Favorites
    Bloggeramt.de Web Directories List Bloggers & Blogging Blogs - BlogCatalog Blog Directory Counter Geld verdienen Bookmark & Share Icerocket http://www.wikio.de