<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"> 
<channel>
    

    <title>Wordpress: body_class() im Layoutalltag</title>
    <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
    <description>Leider ist die Implementation dieser interessanten und n&#252;tzlichen Funktion in Wordpress eher ungl&#252;cklich gel&#246;st. Die Jungs von WPEngineer haben bereits im Februar vorbildlich dar&#252;ber informiert, welche Klassennamen das Tag ins Markup rendert. Darunter befinden sich zahlreiche allgemein gebr&#228;uchliche Klassenbezeichnungen wie:


archive
author
blog
category
date
home
page
search
tag


Das Problem bei der Verwendung derart gebr&#228;uchlichen Bezeichnungen sind fast zwangsl&#228;ufig Kollisionen bei der Implementation bestehender CSS&#45;Layouts in Wordpress. Gerade heute habe ich eine Mail zu diesem Thema bekommen:

Man kann sich ja mittlerweile im BODY&#45;Tag CSS&#45;Klassen einf&#252;gen lassen je nachdem welcher Typ von Seite aktuelle von WordPress ausgegeben wird. Dabei gibt es auch die Klasse &#8220;page&#8221; f&#252;r die Seiten in WordPress. Resultat ist, dass sich das dann mit der Klasse &#8220;page&#8221; aus YAML &#252;berschneidet.

Ich kann im Moment froh sein, dass es nur eine CSS&#45;Klasse von YAML trifft. Schon innerhalb dieses Bloglayouts hier &amp;ndash; w&#252;rde dieses Blog mit Wordpress laufen &amp;ndash; w&#252;rden weitere Klassenbezeichnungen kollidieren, denn ich verwende in meinem Bloglayout auch Klassenbezeichnungen wie &#8220;date&#8221; oder &#8220;category&#8221;. Nur sind diese Klassen in meinem Layout nicht daf&#252;r gedacht, an das body&#45;Element geheftet zu werden. Nun k&#246;nnte ich mein CSS&#45;Framework YAML in einer n&#228;chsten Version nat&#252;rlich anpassen, um der Kollision aus dem Wege zu gehen, aber ich halte dies f&#252;r den falschen Weg, denn die Welt dreht sich nicht um Wordpress und YAML ist nicht allein von diesem Problem betroffen. Wordpress als Blogtool oder CMS sollte eigenst&#228;ndig kein Markup generieren (soweit die graue Theorie) und es sollte ebenso die Implementation bestehender Layouts nicht durch die Kollision von Klassennamen unn&#246;tig erschweren.

Ein relativ einfacher und unkomplizierter L&#246;sungsweg heisst: Namespacing. Wordpress k&#246;nnte allen dynamisch ins Markup generierten CSS&#45;Klassen das K&#252;rzel &#8220;wp&#45;&#8221; voranstellen (oder dieses sogar im Backend konfigurierbar machen). Bei anderen Content Management Systemen (Bsp: TYPO3) kommt dieses Verfahren bei den meisten Extensions zum Einsatz. Auf diese Weise lie&#223;en sich die angedeuteten Probleme leicht vermeiden, w&#228;hrend die durchaus sinnvolle Funktionalit&#228;t weiterhin uneingeschr&#228;nkt verf&#252;gbar bleibt. Leider bin ich selbst zu wenig bewandert in PHP und auch nur ein Gelegenheitsnutzer von Wordpress, dennoch hoffe ich, dass diese Idee auf irgendeinem Kanal an das Entwicklerteam herangetragen wird.

&amp;nbsp;</description>
    <dc:language>de-de</dc:language>
    <dc:creator>Dirk Jesse</dc:creator>
    <dc:rights>Copyright 2009</dc:rights>
    <dc:date>2009-08-25T;12:36:38+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.expressionengine.com/" />
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
         xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
    rdf:about="http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/"
    trackback:ping="http://www.highresolution.info/trackback/1380/paIczxQr/"
    dc:title="Wordpress: body_class() im Layoutalltag"
    dc:identifier="http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/" 
    dc:subject="CSS &amp;amp;amp; XHTML,Webdesign"
    dc:description="Leider ist die Implementation dieser interessanten und n&#252;tzlichen Funktion in Wordpress eher ungl&#252;cklich gel&#246;st. Die Jungs von &amp;lt;a href=&quot;http://wpengineer.com/&quot; title=&quot;WPEngineer&quot;&amp;gt;WPEngineer&amp;lt;/a&amp;gt; haben bereits im Februar vorbildlich dar&#252;ber informiert, &amp;lt;a href=&quot;http://wpengineer.com/wordpress&#45;28&#45;body_class&#45;automatic_feed_links/&quot; title=&quot;welche Klassennamen&quot;&amp;gt;welche Klassennamen&amp;lt;/a&amp;gt; das Tag ins Markup rendert. Darunter befinden sich zahlreiche allgemein gebr&#228;uchliche Klassenbezeichnungen&#8230;"
    dc:creator="Dirk Jesse"
    dc:date="2009-08-25 12:36:38 PM GMT" />
</rdf:RDF>
--> 


    <item>
      <title>Kommentar von christian</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Um kollisionen zu vermeiden und trotzdem den classennamen sinnvoll zu erhalten gibt es die einfache möglichkeit die classnames gross zu schreiben.

wenn also alle cms hersteller ihre standard classen gross machen würden gäbe es keine Kollision mit irgendwelchen css framworks oder einenen stylesheets.</description>
      <content:encoded><![CDATA[<p>Um kollisionen zu vermeiden und trotzdem den classennamen sinnvoll zu erhalten gibt es die einfache möglichkeit die classnames gross zu schreiben.</p>

<p>wenn also alle cms hersteller ihre standard classen gross machen würden gäbe es keine Kollision mit irgendwelchen css framworks oder einenen stylesheets.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von Sven</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Interessant ist an dieser Stelle, dass Wordpress wohl unterschiedliche Wege nutzt um Klassen mit ihren Klassennamen auszugeben.
Ein Beispiel sind bei Wordpress die Widgets der Sidebar, wenn ich mir dort die automatisch gerenderten Klassennamen anschaue sehe dort ein namespacing&#45;Verfahren.
Beispiel: &#8220;widget_tag_cloud, widget_text, widget_search, widget_pages&#8221;.

Warum denn dann nicht auch bei dem neuen Template&#45;Tag?!</description>
      <content:encoded><![CDATA[<p>Interessant ist an dieser Stelle, dass Wordpress wohl unterschiedliche Wege nutzt um Klassen mit ihren Klassennamen auszugeben.<br />
Ein Beispiel sind bei Wordpress die Widgets der Sidebar, wenn ich mir dort die automatisch gerenderten Klassennamen anschaue sehe dort ein namespacing-Verfahren.<br />
Beispiel: &#8220;widget_tag_cloud, widget_text, widget_search, widget_pages&#8221;.</p>

<p>Warum denn dann nicht auch bei dem neuen Template-Tag?!
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von Michael</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Ich finde es ja auch nicht toll, was WordPress bei body_class() und post_class() für einen Horror rausbläst. post_class() liefert auf einer Seite ebenfalls die Klasse page. Aber ich muß diese Funktionen nicht verwenden oder ich modifiziere sie.</description>
      <content:encoded><![CDATA[<p>Ich finde es ja auch nicht toll, was WordPress bei body_class() und post_class() für einen Horror rausbläst. post_class() liefert auf einer Seite ebenfalls die Klasse page. Aber ich muß diese Funktionen nicht verwenden oder ich modifiziere sie.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von Roland</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>body_class() sollte meines Achtens konfigurierbar sein. :) Aber ich nutze schon keine Wortpresse mehr, sondern bald ein eigenes System &#45; mit YAML. :)</description>
      <content:encoded><![CDATA[<p>body_class() sollte meines Achtens konfigurierbar sein. :) Aber ich nutze schon keine Wortpresse mehr, sondern bald ein eigenes System - mit YAML. :)
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von Thomas Scholz</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Wer YAML mit Wordpress benutzt, wird doch sicher schlau genug sein, einfach get_body_class() zu nehmen.
Die Funktion mit der direkten Ausgabe ist für Leute gedacht, die sich sonst nicht weiter mit PHP beschäftigen wollen; niemand muß sie verwenden.
Dann kann man wegwerfen, was man nicht braucht, und umbenennen, was stört.

Alternativ setzt man auf den Hook body_class in der functions.php einen Filter.</description>
      <content:encoded><![CDATA[<p>Wer YAML mit Wordpress benutzt, wird doch sicher schlau genug sein, einfach get_body_class() zu nehmen.<br />
Die Funktion mit der direkten Ausgabe ist für Leute gedacht, die sich sonst nicht weiter mit PHP beschäftigen wollen; niemand <b>muß</b> sie verwenden.<br />
Dann kann man wegwerfen, was man nicht braucht, und umbenennen, was stört.</p>

<p>Alternativ setzt man auf den Hook body_class in der functions.php einen Filter.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von micha149</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Das neue Template&#45;Tag ist absoluter Mumpitz! Wordpress sollte sich mal ein vernünftiges Template&#45;System anschaffen. Wenn ich PHP&#45;Methoden aufrufen muss, welche direkt ein HTML zurück&#45; oder gar ausgeben, hat irgendwer was falsch verstanden. Damit bin ich bei WP schon einige Male auf die Nase gefallen.</description>
      <content:encoded><![CDATA[<p>Das neue Template-Tag ist absoluter Mumpitz! Wordpress sollte sich mal ein vernünftiges Template-System anschaffen. Wenn ich PHP-Methoden aufrufen muss, welche direkt ein HTML zurück- oder gar ausgeben, hat irgendwer was falsch verstanden. Damit bin ich bei WP schon einige Male auf die Nase gefallen.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von Frank</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>@Eric: Auch wenn ich Dirk hier recht gebe, so holst du doch weit aus; es ist nicht nur in WordPress ein Problem; außerdem kann man die Funktion von WordPress einfach ersetzen, was aber YAML nicht hilft und zusätzlich kann man die Funktion um eigene  Klassen erweitern. Alternativ kann man via Hook auch noch auf die Funktion einfluss nehmen. Also ganz so typisch WP ist es nicht, denn andere Systeme geben diese Möglichkeiten nicht.

Trotzdem ist das sicher via Standard Namespacing besser zu lösen. Aber die Idee von WP war hier zusätzlich noch Strings zu nutzen, die immer gleich sind und man so eventuell offen benutzerdef. Stylesheets vereinfachen kann.</description>
      <content:encoded><![CDATA[<p>@Eric: Auch wenn ich Dirk hier recht gebe, so holst du doch weit aus; es ist nicht nur in WordPress ein Problem; außerdem kann man die Funktion von WordPress einfach ersetzen, was aber YAML nicht hilft und zusätzlich kann man die Funktion um eigene  Klassen erweitern. Alternativ kann man via Hook auch noch auf die Funktion einfluss nehmen. Also ganz so typisch WP ist es nicht, denn andere Systeme geben diese Möglichkeiten nicht.</p>

<p>Trotzdem ist das sicher via Standard Namespacing besser zu lösen. Aber die Idee von WP war hier zusätzlich noch Strings zu nutzen, die immer gleich sind und man so eventuell offen benutzerdef. Stylesheets vereinfachen kann.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von Dirk Jesse</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>@Eric

So isses. Und Du lieferst gleich einen weiteren Lösungsansatz, Wordpress könnte sich auf das Rendern der Klassennamen beschränken, ohne das class&#45;Attribut mit auszugeben.</description>
      <content:encoded><![CDATA[<p>@Eric</p>

<p>So isses. Und Du lieferst gleich einen weiteren Lösungsansatz, Wordpress könnte sich auf das Rendern der Klassennamen beschränken, ohne das class-Attribut mit auszugeben.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von Eric Eggert</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Das ist das typische Wordpress&#45;Problem, es scheint als dächten sie man ist ganz alleine auf der Welt und sie müssten sich um niemand kümmern. Alleine schon, dass es class=&#8221;&#8220; mitrendert zeugt schon davon, ich will eventuell ja auch noch eine andere Klasse an meinen Body anhängen. In meinem Textpattern&#45;blog benutze ich als Klasse die Sektion, so: &amp;lt;body class=&#8221;&amp;lt;txp:section /&amp;gt;&#8221;&amp;gt; würde meine Sektion jetzt page heißen uns sich daher mit YAML (das ich nicht nutze, aber wir simulieren jetzt mal) ins Gehege kommen, ist es ein einfaches daraus &amp;lt;body class=&#8220;sect&#45;&amp;lt;txp:section /&amp;gt;&#8221;&amp;gt; zu machen und dann im CSS per sect&#45;page darauf zuzugreifen.</description>
      <content:encoded><![CDATA[<p>Das ist das typische Wordpress-Problem, es scheint als dächten sie man ist ganz alleine auf der Welt und sie müssten sich um niemand kümmern. Alleine schon, dass es <code>class=&#8221;&#8220;</code> mitrendert zeugt schon davon, ich will eventuell ja auch noch eine andere Klasse an meinen Body anhängen. In meinem Textpattern-blog benutze ich als Klasse die Sektion, so: <code>&lt;body class=&#8221;&lt;txp:section /&gt;&#8221;&gt;</code> würde meine Sektion jetzt page heißen uns sich daher mit YAML (das ich nicht nutze, aber wir simulieren jetzt mal) ins Gehege kommen, ist es ein einfaches daraus <code>&lt;body class=&#8220;sect-&lt;txp:section /&gt;&#8221;&gt;</code> zu machen und dann im CSS per sect-page darauf zuzugreifen.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von xwolf</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Betrifft in der Tat ja nicht nur YAML. 
Mir sind auch gleich die Microformate eingefallen, derren Parser mit einigen der Klassennamen Probleme haben könnten&#8230;</description>
      <content:encoded><![CDATA[<p>Betrifft in der Tat ja nicht nur YAML. <br />
Mir sind auch gleich die Microformate eingefallen, derren Parser mit einigen der Klassennamen Probleme haben könnten&#8230;
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von Dirk Jesse</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Das ist zwar eine Überlegung gewesen &#45; siehe Beitrag &#45; aber das bekämpft auch nur die Symptome, aber nicht die Ursache.

Zudem würde ich eine über Jahre gewachsene Kompatibilität von YAML zerstören &#45; nur weil ein CMS bei einem optionalen Template&#45;Tag ein bisschen aus der Reihe tanzt. Nein, das ist es mir momentan nicht wert.

Für Wordpress&#45;User gibt es mehrere Wege, das &#8220;Problem&#8221; zu umgehen. Die einfachste wäre, auf den Template&#45;Tag zu verzichten. Wenn das nicht geht, dann kann man innerhalb des YAML&#45;Layouts mit dem Selektor &#8220;div.page&#8221; störungsfrei arbeiten oder man setzt man setzt die für &#8220;.page&#8221; definierten Eigenschaften für &#8220;body.page&#8221; wieder zurück.

Dennoch wäre es mittelfristig das Beste, wenn Wordpress hier nachbessern würde.</description>
      <content:encoded><![CDATA[<p>Das ist zwar eine Überlegung gewesen - siehe Beitrag - aber das bekämpft auch nur die Symptome, aber nicht die Ursache.</p>

<p>Zudem würde ich eine über Jahre gewachsene Kompatibilität von YAML zerstören - nur weil ein CMS bei einem optionalen Template-Tag ein bisschen aus der Reihe tanzt. Nein, das ist es mir momentan nicht wert.</p>

<p>Für Wordpress-User gibt es mehrere Wege, das &#8220;Problem&#8221; zu umgehen. Die einfachste wäre, auf den Template-Tag zu verzichten. Wenn das nicht geht, dann kann man innerhalb des YAML-Layouts mit dem Selektor &#8220;div.page&#8221; störungsfrei arbeiten oder man setzt man setzt die für &#8220;.page&#8221; definierten Eigenschaften für &#8220;body.page&#8221; wieder zurück.</p>

<p>Dennoch wäre es mittelfristig das Beste, wenn Wordpress hier nachbessern würde.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von David Maciejewski</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Dann solltest du vielleicht über YAML&#45;Namespaces nachdenken, wenn es WordPress schon nicht macht.</description>
      <content:encoded><![CDATA[<p>Dann solltest du vielleicht über YAML-Namespaces nachdenken, wenn es WordPress schon nicht macht.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von Dirk Jesse</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>@David,

das ist für mich keine echte Lösung, da ich keine Wordpress&#45;Baustelle aufmachen und zukünftig Patches für jede einzelne WP&#45;Version pflegen will. Bei anderen CMS ist Namespacing selbstverständlich.</description>
      <content:encoded><![CDATA[<p>@David,</p>

<p>das ist für mich keine echte Lösung, da ich keine Wordpress-Baustelle aufmachen und zukünftig Patches für jede einzelne WP-Version pflegen will. Bei anderen CMS ist Namespacing selbstverständlich.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>

    <item>
      <title>Kommentar von David Maciejewski</title>
      <link>http://www.highresolution.info/weblog/entry/wordpress_body_class_im_layoutalltag/</link>
      <description>Du kannst die Funktion body_class() auch in der Datei funktions.php (liegt bei dir im Template&#45;Verzeichnis) überschreiben. So könntest du diese dann YAML mitgeben.</description>
      <content:encoded><![CDATA[<p>Du kannst die Funktion body_class() auch in der Datei funktions.php (liegt bei dir im Template-Verzeichnis) überschreiben. So könntest du diese dann YAML mitgeben.
</p>]]></content:encoded>
    <dc:date>2012-04-13T;14:58:31+00:00</dc:date>
    </item>
 

</channel>
</rss>
