WordPress-Theme in Abhängigkeit des Titel

bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.

Kommentare

  
  1. Florian sagt:

    Hättest du daraus jetzt noch ein Plugin gestrickt wäre es der Hammer. Sone Veränderungen direkt am Code zu machen ist ja immer ein wenig gefährlich.

    • @Florian: ich kann gern ein Plugin bauen, welches den Titel des Posts an die function body_class() übergibt, die dann in den Body gehört?

  2. Hansi sagt:

    Hallo Frank, ja mach bitte ein Plugin, die Idee ist gut, aber traue mich so, wie Florian schon sagt auch nicht ran.
    Und gebe bitte kurz bescheid.

  3. Dirk sagt:

    Abhängigkeiten zu veränderlichen Dingen halte ich für nicht so geeignet. Die Abhängigkeit zur ID des Beitrages oder der Seite, wie ebenfalls beschrieben, halte ich da für wesentlich sinnvoller – ganz unabhängig davon, ob man es nun sinnvoll finden will, oder nicht, wenn jede Seite eines Internetauftritts anders aussieht …

  4. Ralf sagt:

    Wie du schon geschrieben hast, für Seiten mit überschaubaren Content und nur geringen Änderungen am Stylesheet ist es ein gangbarer Weg. Sind jedoch relativ viele Seiten betroffen und/oder die Änderungen am Stylesheet sind doch etwas umfangreicher, dann wäre es ggf. besser für jede Seite ein eigenes Stylesheet anzulegen und dieses direkt einzubinden.
    Bsp.:

    <?php
    if(is_page()){ // wenn es eine seite ist...
    $fb_stylesheet = bloginfo( 'template_url' ).'/'.sanitize_title_with_dashes( get_the_title() ).'.css';
    } else {
    $fb_stylesheet = 'style.css';
    }
    ?>

    <link rel="stylesheet" href="<?php echo $fb_stylesheet; ?>" type="text/css" media="screen" />

    Vorteil: Man spart einiges an Traffic und gewinnt etwas Pertformance durch die schlankeren Stylesheets. Zudem wäre es doch etwas übersichtlicher für jede Seite ein eigenes Stylesheet zu hinterlegen anstatt alle Änderungen in einem zusammen zu fassen.
    Nachteil: Man muss natürlich alle Fälle abfangen für die kein extra Stylesheet hinterlegt ist (z.B. Startseite, Einzelansicht, usw)
    -----

    Die Abfrage der ID zur Auswahl eines Stylesheet lässt sich hervorragend für ein Plugin nutzen. Im Backend registriert man die ID jede Seite für die man ein anderes Stylesheet verwenden möchte in einem Array. Für die registrierten Seiten kann dann das entsprechende Stylesheet hochgeladen werden. Beim Hochladen kann man mit sanitize_title_with_dashes( get_the_title( $id ) ) die Stylesheets direkt umbenennen und dann nach den von dir beschriebenen Weg verwenden.

    Bsp.:

    <?php
    $fb_pages_with_xtra_stylesheets = get_option('fb_xtra_stylesheets');
    // die IDs der Seiten die geändert werden sollen sind als Array in der Option-Table hinterlegt

    if( in_array( the_ID(), $fb_pages_with_xtra_stylesheets ) ) {
    $fb_stylesheet = bloginfo( 'template_url' ).'/'.sanitize_title_with_dashes( get_the_title( the_ID() ) ).'.css';
    } else {
    $fb_stylesheet = 'style.css';
    }
    ?>

    <link rel="stylesheet" href="<?php echo $fb_stylesheet; ?>" type="text/css" media="screen" />

    So hat man mit relativ wenig Aufwand eine eigene Stylesheet-Verwaltung realisiert. Einzelnen Seiten kann quasi per Mausklick ein eigenes Stylesheet bzw. wieder das Standard-Stylesheet zugewiesen werden. Als Plugin-Lösung wäre der obige Code natürlich eine Funktion und im Theme wäre nur noch der Funktionsaufruf.
    Von der Performance wäre es eine gute Lösung da nur das CSS ausgeliefert wird, welches benötigt wird. Und auch Änderungen an den einzelnen Stylesheets wären einfacher da man nicht ein riesiges Stylesheet durchforsten muss, sondern gezielt in bestimmten Dateien suchen kann.

  5. Hallo Frank,

    es reicht doch vollkommen aus wenn der Theme die "body_class" Funktion nutz und ggf. jeder Artikel Container durch die Artikel ID bestimmt wird. Alleine mit den dadurch Inviduell ergebenen Classen und ID's für CSS kann man doch inviduelle Page/Archiv/Kategorie/ Styles bauen oder nicht?

    Warum dann also durch ein zusätzlichen Code-Schnipsel in der functions.php oder gar durch ein Plugin einbringen?

    So ganz den Sinn seh ich da nicht wirklich hinter.

    • @Fabian: body_class gibt aber kein Ident für eine Seite mit, daher braucht man die Id, den Titel oder was anderes. Ich erweitere die body_class Funktion in dem Fall und kille alle anderen Klassen, damit der Code schlank bleibt. In meinem Fall war der Kunde ein Designer und wollte zu jedem Produkt ein anderes Design und dies haben wir so gelöst.

  6. Gut zu wissen. Ich dacht es gäbe keine so elegante Lösung für diesen Umstand. 🙂

  7. Okay Frank das ist ein Leuchtend, body_class() mag ich eh nicht wirklich.

    Aber body_class gibt doch von Haus aus eine Identifikation per ID aus oder nicht?
    So wie "page-id-252"... ich mein okay, es steht vieles weitere unnütze zeug drin (Daher mag ich den template tag net)... aber wäre das nicht die einfachste möglichkeit die Seiten Inviduell zu gestallten ohne das man zusätzlichen Code einbinden muss oder irgendwass manipuliert?

    • @Fabian: ja, post und page-id wird mitgegeben - aber eben noch vieles anderes und ich will den Code eher schlank haben, unnütze Strings sind überflüssig und daher filtere ich die Funktion und gebe zurück, was ich brauche. In dem Beispiel ist so schlanker Code entstanden und trotzdem eine Möglichkeit der Individualität. Vorteil des Titels als Klasse war ebenso, dass man sehr gut via Klasse das Stylesheet zum Post identifizieren konnte. Klar geht das über die ID, die aber den meisten Anwendern wenig sagt und so war eine direkte Zuordnung möglich.

  8. Frank ok, leuchtet ein.

    Wie gesagt, ich halte von den Template Tag "body_class" eh wenig, gerade weil er soviele verschiedene Klassen einfügt die man wahrscheinlich zu 99% nicht nötig hat.

    Ich hinterlege meistens in der "functions.php" eine kleine Funktion mit Conditional Abfrage, wenn ich einzelne Artikel/Seiten/Kategorien etc. extra abheben will, weil mir eine Klasse im body völlig ausreicht.

    Hier meint es WordPress jedenfalls defenitiv viel zu gut.

  9. RainerM sagt:

    Hallo Frank

    Das ist zwar jetzt total am Thema vorbei, aber ich hoffe ich bekomme trotzdem eine Antwort.
    Welches Plugin verwendest Du für die Live Kommentar Vorschau?

    Gruß Rainer

  10. Flo sagt:

    Ein Plugin wäre echt wünschenswert. Auch ich bin eher ein "User" der wiederum sich lieber in der WordPressoberfläche wohl fühlt als irgendwo im Code was zu verändern. Sofern hier was kommen sollte, würde ich mich darüber freuen 🙂

  11. Das Plugin steht nun zum Download bereit, kann gern erweitert und angepasst werden - viel Freude damit.

  12. Tom sagt:

    Flo, bedanke Dich mal beim Frank 🙂

  13. Ralf sagt:

    Wenn nach einem Plugin gerufen wird, dann sollte es auch genutzt werden. Und bei der Benutzung hätte auffallen müssen, das dass Plugin einen kleinen Fehler enthält. Nach 'return $classes' ist eine geschweifte Klammer zu viel.

    Und was auch nicht geht, Konstanten in Klassen definieren. Wusste ich bisher aber auch noch nicht.
    Die beiden Zeilen mit "define" kann man bedenkenlos löschen, beide Konstanten werden nicht benötigt.

    Wenn jemand also nach einem Plugin schreit und jemand anderes sich die Mühe macht es zu schreiben, dann sollte derjenige der geschrien hat sich wenigstens die 5 Minuten Zeit nehmen und das Plugin testen. Ansonsten wird es in Zukunft deutlich weniger Plugins auf dieser Welt geben. Zumindest fehlerfrei funktionierende.

    • @Ralf: danke dir vielmals, habe es korrigiert - hatte das Plugin an die Schreihälse per Mail versandt und um ein Feedback gebeten 🙁

  14. Stefan sagt:

    Hey, Danke für das Plugin. Super genial! Gruß, Stefan

© 2016, since 2005 bueltge.de [by:ltge.de] · Theme is built by ThemeShift