Wordpress mit mehreren Themes verwenden!

Posted in Projekte & HowTos, Blogs Inside von LJayam 20. Aug. 2006 um 20:51
Zelnorm Online Buy Elavil Flomax Online Buy Aldactone Avapro Online Buy Zelnorm Nizoral Online Buy Propecia Lotrisone Online Buy Topamax

Individuelle Kategorie Templates kennen wir schon und wissen, wie man sie im WP realisiert.

Hier möchte ich einen (naja recht schlampig umgesetzten ;p ) Weg zeigen, wie man mit einem Wordpress auch mehrere Websites in unterschiedlichen Themes realisieren kann.
(Verbesserungsvorschläge erwünscht)

Vor ein paar Tagen erhielt ich einen Auftrag mit u.a. folgenden
Anforderungen:

  • 3 Websites
  • 3 unterschiedliche Layouts
  • 1 Adminbereich
  • easy Bedienung
  • SE-Optimiert
  • wenig statischer Content
  • !Aber auf einer Domain!

Es sollte dabei eine bereits vorhandene Domain verwendet werden und die 2 zusätzlichen Micro-Sites sollten entweder als Subdomain oder via Subdirectory aufrufbar sein.

Ziel:

www.domainname.de -> Hauptseite (Layout #1)
www.domainname.de/microsite-one/ -> (Layout #2)
www.domainname.de/mircosite-two/ -> (Layout #3)

 

Auf Grund der obigen Anforderungen habe ich als erstes schonmal an den Einsatz von Wordpress in aktueller Version gedacht.
Da der Kunde bereits eine andere Website von mir - auch mit Wordpress - besitzt, ist so eine einfachere Einarbeitung in die Administration sichergestellt.
Ausserdem ist damit auch schon zum grössten Teil der Punkt "SE-Optimierung" abgehakt. ;)

Für die Umsetzung der 3 unterschiedlichen Layouts in einem Wordpress überlegte ich mir, wie ich das umsetzen könnte.
Als erstes dachte ich an unterschiedliche Kategorie-Templates, was ja recht simpel zu erstellen ist.
Das Problem dabei:

  1. pages können keiner Kategorie zugeordnet werden
  2. Individualisierung von Header-, Metadaten und dem Layout an sich sind sehr umständlich und schwer möglich

Geht also so nicht.

 

Lösung


Logische Trennung des Contents:

- 3 Kategorien die die posts unterteilen

    - die Kategorien erhalten 3 eindeutige Slugs (mainsite, microsite-one, microsite-two)

- 3 pages die als "übergeordnete pages" dienen

    - diese drei pages erhalten den gleichen Slug wie auch die Kategorien (mainsite, microsite-one, microsite-two)


Permalink Struktur: 

- "/%category%/%postname%.html"


Nun haben wir eine logische Unterteilung, aber wie bewegen wir Wordpress dazu, je nach Slug (Kategorie bzw. Mainpage) das Theme zu wechseln?

Als erstes musste ich herausfinden, wie ich das Theme am besten per PlugIn wechseln kann.
Das fand ich heraus, indem ich das PlugIn "Theme Switcher" analysierte. (Theme Switcher)
Jetzt wusste ich, wie ich das "switchen" realisieren konnte.

Wie ermittel ich aber, wann ich welches Theme einsetzen muss?

Theoretisch wäre dies machbar, indem ich immer herausfinde, zu welcher Kategorie oder zu welcher Mainpage ein post oder eine page gehört.
Das sollte wohl mit dem PlugIn "is_child" möglich sein, worüber ich erst neulich bei Robert gelesen habe. (is_child)
Es ermittelt zu jeder/m page/post das Eltern-Element.

Somit perfekt für meine Steuerung des Theme Switcher.

Oder doch nicht?

Leider nein, denn das PlugIn is_child verwendet Funktionen und Variablen, die es zum Zeitpunkt des Theme Switchers noch nicht gibt und liefert somit keine Ergebnisse.
Rein cronologisch gesehen, wird das Theme bereits entschieden und eingestellt, bevor es möglich ist zu ermitteln, welche page aufgerufen werden soll und was das Eltern-Element ist (jedenfalls mit WP-Mitteln).
Somit leider unbrauchbar.

Nach vielem hin und her und einigen Versuchen, musste ich vorerst zu einer etwas unsauberen Variante greifen.

Anhand der globalen Server Variable "REQUEST_URI" kann ich sehen, welches Slug in der obersten Hierarchie vorkommt.
(Nur mit einer Permalink Struktur wie oben möglich)
Enthält der String also z.B. "mircosite-one", kann ich den Theme Switcher anweisen, das entsprechende Theme zu verwenden.
Enthält der String "mircosite-two", nimmt er das andere entsprechende Theme und findet er keinen Slug der beiden darin, verwendet er das normale Theme, welches im Wordpress eingestellt wurde.

Das Ergebnis des Ganzen ist eine einfach zu durchschauende logische Struktur des Contents und ein kleines PlugIn.
Das "CiD Multitheme PlugIn" benötigt als Einstellung lediglich die zwei Slugs der microsites und den Namen der jeweiligen Themes.

Alles andere sind reine Standardanpassungen am Theme selbst.
(Ausblendung von anderen microsites (exclude=x,x,…)

(hab ich was vergessen? - poste es als Kommentar)



4 Kommentare zu “Wordpress mit mehreren Themes verwenden!”

Trackback · Kommentare als RSS

[…] Wie auch schon teilweise im Arikelt "Wordpress mit mehreren Themes verwenden" angewandt, habe ich nun dieses PlugIn etwas erweitert für einen anderen Anwednungsfall.Anforderung war:- 20 (und mehr…) Domains mit unterschiedlichem Content- 1 Layout (individuelle Layouts sind aber mit gleichem PlugIn machbar)- 1 Admininterface- Nutzung als CMSUmsetzung / Prinzip:Alle 20 Domain werden im Webserver so eingerichtet, das sie auf den gleichen DocumentRoot zeigen.Kein Redirect oder ähnliches!!!Es werden für den Content lediglich Pages verwendet!Für jede der Domains legt man eine Page im Wordpress an, die als Startseite (mittels Static Front Page) eingerichtet wird. Diese Page dient gleichzeit als "übergeordnete" Seite für alle Content-Seiten einer jeden Domain.Die einzelnen Seiten einer Domain (Microsite) werden als dieser Page untergeordnet. Im Wordpress haben wir so, nun schon ein übersichtliche Struktur für die Verwaltung der einzelnen Seiten und deren Content.Das PlugIn muss nun ermitteln, welche Domain gerade angesurft wird und in meinem Fall zerlegt es die Domain so, das am Ende nur der String zwischen der TLD und der SubDomain übrigbleibt.Aus "www.domainname1.de" wird dann also "domainname1".Unserer übergeordneten Page für diese Microsite geben wir im Wordpress den Slug/Titel-form "domainname1".Das PlugIn sucht jetzt also mit dem Domainnamen in der Datenbank nach einer Page die den Slug "domainname1" hat und als Sicherheit auch noch den Parameter "post_parent" = "0" hat.Die Funktion sollte dann lediglich die Page ID zurückliefern. Mehr brauchen wir aktuell nicht.Im Theme werden nun in der Sidebar alle Pages einer Microsite aufgelistet.Dies geht mitwp_list_pages(’title_li=&child_of=XX’);Für "XX" wird am besten per Variable nun die ermittelte PageID übergeben.Schon listet er nur die Pages dieser Domain/Microsite auf.Hier geben hier absichtlich nur einen Anreisser des ganzen, da ich hier nicht unnötig ins Detail gehen will.Je nach Interesse/Nachfrage, kann ich das auch gern mal später ausführlicher beschreiben.[Tags:Blogs Inside] ähnliche Beiträge: […]

#2
Fallen Angel
8. Nov. 2006 um 22:12

Genial, genau sowas hatte ich für meine Website gesucht, jetzt kann ich mir zum Glück die Arbeit ersparen das alles doppelt einzurichten :)

Ein Problem hat die Lösung allerdings noch:
Ich benutze Hemingway 0.19 und ein selbstgeschriebenes Theme. eigentlich wollte ich das selbstgeschriebene als Default verwenden, aber das aktzeptiert Hemingway nicht. Dur wenn Hemingway als Default eingerichtet ist kann ich es verwenden. Ich habe als lösung einfach
$cid_theme = ‘myTheme’; //if we find nothing
gesetzt, jetzt funktioniert es so, wie ich es wollte.

MfG Fallen Angel

super, das du nicht nur ein Problem sondern auch gleich eine Lösung postest.

Was mich allerdings interessiert; was ist HemmingWay bzw. wozu ist das gedacht?
Kenne das überhaupt nicht.

#4
Fallen Angel
8. Nov. 2006 um 22:26

Ist ein ziemlich nettes Theme für WP…
Es lässt sich gut anpassen und erweitern, hat ein eigenes Admin-panel um die Blöcke zu konfigurieren, ist… ach, lies selbst oder probiers aus ;)
http://warpspire.com/hemingway

Kommentar hinterlassen:

Du musst eingeloggt sein um Kommentare zu hinterlassen.