Theme Entwicklung und Widget Klassen

  • Hallo in die Runde,

    mein erster Post, nach erstmaligem Kontakt zu WP vor 10 Tagen. PHP ist mir nicht fremd. Ich habe Jahre an und um TYPO3 gearbeitet, kenne ZF, OOP und Derivate sowie auch die verschiedensten Templating Engines. WP erscheint mir bestens dokumentiert und ich hatte keinerlei Probleme, meine WP Entwicklungssite aufzusetzen.

    Mein erstes Projekt ist ein Theme auf Basis Bootstrap 3.x.x. Gibt's schon 100fach, aber ich will Verständnis, und es deshalb selber machen. Alles klappt wie es soll. Responsive Navbar, 2-3 andere Navigationselemente, die Inhaltsbereiche, die Seiten, alles funktioniert wunderbar mit Bootstrap, inklusive responsive media. Mit einer gravierenden Ausnahme. Den Widgets.

    Im Quellcode erkennt man, dass der Markup statisch "verdrahtet" ist. Der ul-Tag im Kategorien-Widget hat keine Klasse, und es gibt auch keine Bordmittel-Methode, ihm eine zu spendieren. Erkennt man auch an allen aufgefundenen anderen Bootstrap Themes, die an gleicher Stelle "gescheitert" sind.

    Jetzt sehe ich mehrere Ansätze, das Problem zu lösen:


    1. Per css, indem man die WP Widget Klassen in seine Bootstrap Less Files aufnimmt (und somit dupliziert, und aufbläht). Gefällt mir nicht wirklich, denn unnötige Redundanz führt mittelfristig immer zu Ärger. Mein Theme soll Bootstrap nach Bedarf auch neu kompilieren, und in style.css möchte ich ab Werk nur leere Klassen, zum individuellen Styling durch die Nutzer.
    2. Per Javascript die Klassen tauschen: Kein Problem, ist aber übelster Bastelkram. Kommt nicht in Frage.
    3. Klassentausch per PHP. Gesamten Sidebar mittels output Buffering in Variable einlesen, und Klassen austauschen. Technisch kein Problem, fühlt sich aber falsch an (und hebelt ggf. das Caching aus???).
    4. Widgets mit geändertem Markup (i.e. einer zugefügten Klasse) im Theme duplizieren (class MyBootstrap_Widget_Recent_Posts extends WP_Widget_Recent_Posts). Gigantischer Overkill, nur um eine popelige Klasse hinzuzufügen.
    5. Navigationsartige Widgets (Categories, Archive, Latest Posts...) durch Custom-Menues ersetzen und im BE als Widget ausblenden.

    Vielleicht habe ich ja eine Möglichkeit übersehen? Gangbar sind alle Wege. Der am wenigsten falsch wirkende wäre Nr. 5, der flexibelste Nr. 3 (vorausgesetzt, er hat keinen zu großen Performancenachteil). Wie wären Eure Gedanken zu dieser Problematik?

    Bin dankbar für jeden Input.

    Grüße,

    Thomas

    • 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

  • Habe ich Dich richtig verstanden, dass Du dem UL für das Kategorie-Widget eine Class geben willst?

    Der übergeordnete LI bekommt doch schon die Class "widget_categories". Kannst Du es darüber nicht ansteuern? Oder wie sieht die Ausgabe der Sidebar bei Dir aus?

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Wie SirEctor schon schreibt hat der LI eine Klasse. Mittels Konkatenation sollte entsprechendes CSS problemlos möglich sein. Ansonsten würde ich Deinen Punkt 5 bzw. das komplette Ersetzen der Standardwidgets durch eigene empfehlen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • wow - so schnell - danke Euch beiden.

    SirEctor:
    Ja, natürlich kann ich das ul über css addressieren und ihm eigene Styles aufzwingen. Mein Problem ist per css lösbar. Mir geht es aber im Endausbau meines Themes um Automatismen, die auch automatische Style-Generierung einschließt (php Less Autocompiler). Ich möchte also Bootstrap Styles nicht durch WP-spezifische zusätzlich aufblähen. In der style.css soll bei mir eine (ab Werk) leere Definition für z.B. widget_categories stehen. Hier soll dann das endgültige Nutzer Styling statt finden. Möglicherweise denke ich aber zu perfektionistisch.

    mensmaximus:
    Hab's gerade getestet. Klappt wunderbar bei den Kategorien, beim Archiv scheint's nicht so einfach. Ich denke, ich werde einen Mischbetrieb aus css (wo's nicht besser geht) und custom-menue (wo's geht) wählen.

    Und wenn mal Langeweile aufkommen sollte, kann man immer noch einen Widget Generator schreiben, der sich alles reinpfeift, was ab Werk oder per Plugin angelandet wird, dieses dann semantisch und accessible aufbereitet und wieder zurück in's System spuckt. Wäre wahrscheinlich der Königsweg. Aber dazu brauche ich mehr Einblick ins System.

  • Aber dazu brauche ich mehr Einblick ins System.

    Nicht wirklich. Du wirst wahrscheinlich eher enttäuscht sein (bei Deinem Background), wenn Du das teilweise Durcheinander im Code siehst (Prozedural, OOP meist ohne Singelton). Ich nehme mir immer vor "auf der Höhe der Zeit" zu entwickeln und am Ende muss ich dann doch wieder Teile "The WordPress Way" schreiben. Code is poetry ;-)

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Hier soll dann das endgültige Nutzer Styling statt finden. Möglicherweise denke ich aber zu perfektionistisch.

    Willkommen im Club! Ein indischer Freund von mir und ich hatten die dumme Idee ein Theme zu entwickeln, dass keinen PHP Code mehr in den Templates enthält ;-) Strickte Trennung von Code, HTML und Styling. Den Geist hätten wir mal besser nicht gerufen - jetzt hält er uns wach.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Willkommen im Club! Ein indischer Freund von mir und ich hatten die dumme Idee ein Theme zu entwickeln, dass keinen PHP Code mehr in den Templates enthält ;-) Strickte Trennung von Code, HTML und Styling. Den Geist hätten wir mal besser nicht gerufen - jetzt hält er uns wach.

    Ja, ich kenne die "reine Lehre". Auch beim Zend Framework gab es ellenlange Diskussionen, ob php in die View darf. Bei TYPO3 ist alles strikt getrennt, aber anstatt auf etablierte Standards zu setzen, hat man lieber eigene Paradigmen entwickelt, deren Überambitioniertheit heute sogar mich vom Projekt TYPO3 abgeschreckt hat. Und meine Leidensfähigkeit ist ziemlich groß :-)

Jetzt mitmachen!

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