<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>bueltge.de [by:ltge.de] &#187; CSS</title>
	<atom:link href="http://bueltge.de/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://bueltge.de</link>
	<description>Frank Bültge schreibt auf bueltge.de zu den Themen Webentwicklung &#38; design, WordPress, Literatur und andere Themen bezüglich Internet und Development</description>
	<lastBuildDate>Tue, 22 May 2012 20:02:25 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ausgewählte Font Type Kombinationen</title>
		<link>http://bueltge.de/ausgewaehlte-font-type-kombinationen/1354/</link>
		<comments>http://bueltge.de/ausgewaehlte-font-type-kombinationen/1354/#comments</comments>
		<pubDate>Tue, 27 Mar 2012 21:42:28 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Font]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1354</guid>
		<description><![CDATA[Die Fülle der freien Fonts macht es nicht einfach, eine kleine Übersicht lohnender Kombinationen von Fonts soll helfen.]]></description>
			<content:encoded><![CDATA[<p>Fonts sind weiterhin große Lieblinge der Kunden geworden, mit relativ wenig Aufwand kann man viel erreichen - zumindest wenn man sich der Typographie ein wenig versteht und Lösungen nutzt, die einfach zu implementieren sind. In diesem Zusammenhang musste ich Erfahrungen mit eigenen Fonts von Designern sammeln und der Aufwand und die rechtliche Form stehen in keinen Verhältnis zur Nutzung der freien Fonts inkl. Webservice. Insbesondere <a title="Google Web Font" href="http://www.google.com/webfonts#ChoosePlace:select">Google</a> liefert hier eine Fülle an Lösungen und macht die Integration, den Nutzen einfach.</p>
<p>Die Fülle stellt aber auch das Problem dar und so ist es nicht einfach die richtigen Fonts in der Kombination zu finden. In der Vergangenheit sind mir dabei einige Lösungen unter gekommen, die ich in einer <a href="http://bueltge.de/free-web-font-combinations/" title="Beautiful Web Type Combinations">einfachen Seite</a> gesammelt habe und nun einen recht schönen Umfang haben. Die Auswahl stammt nicht von mir, sondern in der Regel von den Designern oder Vorgaben aus dem Netz.<br />
<span id="more-1354"></span></p>
<p><a style="padding: 0 !important;" title="free-web-font-combinations" href="http://bueltge.de/free-web-font-combinations/"><img class="centered aligncenter" src="http://wpengineer.com/wp-content/uploads/free-web-fonts-414x1024.png" alt="Screenshot Beautiful Web Type Combinations" /></a></p>
<p>Die Inspiration des Aussehen habe ich von <a href="http://hellohappy.org/beautiful-web-type/">Beautiful Web Type</a> entnommen und ebenso die Idee der Zitate. Ein wunderbarer One-pager, der es lohnt zu lesen, denn die Zitate stehen in irgendeiner Form zu mir als Person; die eine oder andere Begründung findet man auch im Source.</p>
<p>Das Projekt selbst liegt auf <a title="Git Repo: Beautiful web type combinations" href="https://github.com/bueltge/Free-Web-Font-Combinations">Github</a> und soll, darf und muss erweitert werden - also bitte forken. Wer dies nicht mag, trotzdem etwas beitragen will; die bekannten Wege via Mail oder ein <a href="https://github.com/bueltge/Free-Web-Font-Combinations/issues">Issue zum Projekt</a> im Repo gehen natürlich auch.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/ausgewaehlte-font-type-kombinationen/1354/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/ausgewaehlte-font-type-kombinationen/1354/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/free-web-fonts-414x1024.png" />
		<media:content url="http://wpengineer.com/wp-content/uploads/free-web-fonts-414x1024.png" medium="image">
			<media:title type="html">Screenshot Beautiful Web Type Combinations</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Scripte von WordPress debuggen</title>
		<link>http://bueltge.de/scripte-von-wordpress-debuggen/1301/</link>
		<comments>http://bueltge.de/scripte-von-wordpress-debuggen/1301/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 08:18:41 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Adventskalender]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1301</guid>
		<description><![CDATA[Die Ausgabe der verwalteten Scripte und Stylesheets kann mit der kleinen Funktion recht schnell gesichtet werden, eine kleine Lösung um Debuggen zu vereinfachen.]]></description>
			<content:encoded><![CDATA[<p>WordPress kann sich komfortabel um das verwalten von Scripten und Stylesheets kümmern, Vorraussetzung ist die Nutzung der Möglichkeiten rund um <code>wp_enqueue_script()</code> und <code>wp_enqueue_style()</code>. Will man sich um die darin übergeben Dateien kümmern, so kann eine kleine Funktion helfen und die integrierten Scripte und Styles zurück geben.<br />
<span id="more-1301"></span></p>
<h4>Einige Hintergründe</h4>
<p>Scripte und Stylesheets kann man in WordPress auf verschieden Art in die Ausgabe einbringen, das gilt für Backend und Frontend. Dabei ist das klassiche Verfahren eines meta-Elementes im head oder footer-Bereich nicht zu empfehlen, denn WordPress kann seit Version 2.1 die Verwaltung der Scripte und Stylesheets übernehmen - Vorraussetzung ist die Nutzung der Möglichkeiten rund um <code>wp_enqueue_script()</code> und <code>wp_enqueue_style()</code>. Damit werden diverse Vorteile direkt duch den WordPress-Kern übernommen; komprimieren und gemeinsames Ausliefern in jeweils einer Datei alle Scripte und Stylesheets. Ebenso kümmert sich WordPress darum, dass jedes Script nur einmal in der Auslieferung vorhanden ist; also nicht ein bekanntes Problem wie die mehrfache Verwendung von jQuery zulassen.<br />
Aktuell gibt es dazu immer wieder ähnliche Ansätze mit diversen JS-Lösungen. WordPress kann sich darum kümmern und optimiert ausliefern, jedes Script nur einmal und einfach via ID auf die Scripte zugreifen. </p>
<p>Um nun aber die includierten Scripte und Stylesheets sauber auszuwerten, bedarf es einiger Zugriffe oder die kleine folgende Lösung und schon sind alle eingebundenen Dateien in einer Liste. Die folgenden Funktion kippt die Adressen  einfach in den Footer von WordPress, Frontend - <code>wp_footer</code> und Backend - <code>admin_footer</code>, dies kann via Hook natürlich angepasst werden; dies soll nur eine Idee sein und einen Ansatz liefern.<br />
Parallel habe ich es im Plugin <a href="http://wordpress.org/extend/plugins/debug-objects/">Debug Objects</a> integriert und die neue Version sollte in den weihnachtlichen Tagen online gehen.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/wp-scripts-styles.png" alt="Beispiel für Script und Stylesheet Listings" width="450" height="598" /></p>
<pre><code>
// view on frontend footer
add_action( 'wp_footer', 'fb_urls_of_enqueued_stuff' );
// view on backend footer
add_action( 'admin_footer', 'fb_urls_of_enqueued_stuff' );
// get engueued scripts and style urls
function fb_urls_of_enqueued_stuff( $handles = array() ) {
	global $wp_scripts, $wp_styles;
	
	// scripts
	foreach ( $wp_scripts -&gt; registered as $registered )
		$script_urls[ $registered -&gt; handle ] = $registered -&gt; src;
	// styles
	foreach ( $wp_styles -&gt; registered as $registered )
		$style_urls[ $registered -&gt; handle ] = $registered -&gt; src;
	
	if ( empty( $handles ) ) {
		$handles = array_merge( $wp_scripts -&gt; queue, $wp_styles -&gt; queue );
		array_values( $handles );
	}
	$output = '';
	foreach ( $handles as $handle ) {
		if ( ! empty( $script_urls[ $handle ] ) )
			$output .= $script_urls[ $handle ] . '&lt;br&gt;';
		if ( ! empty( $style_urls[ $handle ] ) )
			$output .= $style_urls[ $handle ] . '&lt;br&gt;';
	}
	
	echo $output;
}
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/scripte-von-wordpress-debuggen/1301/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/scripte-von-wordpress-debuggen/1301/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/wp-scripts-styles.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/wp-scripts-styles.png" medium="image">
			<media:title type="html">Beispiel für Script und Stylesheet Listings</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Simple Media Queries Debugging</title>
		<link>http://bueltge.de/simple-media-queries-debugging/1286/</link>
		<comments>http://bueltge.de/simple-media-queries-debugging/1286/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 11:17:58 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Webdeveloper]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1286</guid>
		<description><![CDATA[Media Queries sind dabei sich zu etablieren, Vor- und Nachteile seien hier kein Thema. Definitiv ist das „Debuggen” nicht immer einfach und die Layouterstellung kann schnell komplex werden. Diese Lösung stellt die Umsetzung einer Idee dar, um den jeweiligen Viewport zu kennen, da im obersten Bereich der Seite dargestellt wird. Durch diese Werte kann auf die verschiedenen Weiten eingegangen werden.]]></description>
			<content:encoded><![CDATA[<p>Der Titel dieses Artikels ist für die entstandene Lösung sicher überzogen &#8211; trotzdem hatte ich mal wieder Spaß an einer kleinen <a href="http://bueltge.de/test/media-query-debugger.php">statischen Spielerei</a>, die im Grunde nur entstanden ist, da ich für ein Projekt den Viewport haben wollte um besser für entsprechende Media Queries zu stylen. Die eigentliche Lösung wurde dann etwas erweitert und durch die Hilfe der Community, insbesondere <a href="http://frederic-hemberger.de/">Frederic</a> und <a href="http://www.grochtdreis.de/">Jens</a>, wurde der Iststand erreicht und kann in jeder Form genutzt werden.<br />
<span id="more-1286"></span><br />
Zum Testen von Media Queries nutze ich meine kleine <a href="http://bueltge.de/test/media-query-tester.php" title="Zum Tester">iFrame-Anpassung</a>, die mittels DOM Storage-API verschiedene Werte zulässt; mehr dazu im <a href="http://bueltge.de/simple-media-queries-tester/1239/" title="Artikel zum Simple Media Queries Tester">zugehörigen Artikel</a>. Trotzdem wollte ich immer den aktuellen Stand haben und hatte mir daher mittels CSS an den body gehangen. Dies kann man einfach tun und ist für verschieden, die üblichen Verdächtigen, nun im Projekt integriert. Diese Aufgabe wird von einer einzelnen CSS-Datei übernommen &#8211; <a href="https://github.com/bueltge/Simple-Media-Queries-Debugging/blob/master/debug.css"><code>debug.css</code></a>; so dass sie einfach inkludiert werden kann. Alternativ könnt ihr damit alles mögliche anfangen &#8211; <a href="https://github.com/bueltge/Simple-Media-Queries-Debugging" title="Forken, Lesen auf Github.com">forken</a> und somit die Idee verbessern und mehr daraus machen. </p>
<p><a href="http://bueltge.de/wp-content/images/simple-media-queries-debug.png" title="Bild ein wenig größer?"><img class="centered aligncenter" src="http://bueltge.de/wp-content/images/simple-media-queries-debug450.png" alt="Simple Media Queries Debugge - Screenshot" /></a></p>
<p>Innerhalb der kleinen Spielerei sind diverse Anpassungen für Media Queries drin, so dass die Seite auch einen Effekt hat, wenn man die Größe des Browsers ändert bzw. mit verschiedenen Geräten auf die Seite gelangt. Dabei habe ich keinen Wert auf Schönheit gelegt, sondern eher Pragmatismus und Effekthascherei genutzt. So nutze ich Transition via CSS3 um das Verändern etwas animiert zu gestalten und so die Darstellung zu hübschen.<br />
Schaut euch den Code einfach an, entweder direkt auf <a href="http://bueltge.de/test/media-query-debugger.php">der Seite</a> oder im <a href="https://github.com/bueltge/Simple-Media-Queries-Debugging" title="Zum Projekt auf Github">Projekt auf github</a>, wo ich alles abgelegt habe.</p>
<p>Für alle, denen noch der Zusammenhang fehlt; bitte einfach <a href="http://bueltge.de/test/media-query-debugger.php">die Seite</a> besuchen und den Browser in der Größe ändern; dabei die Ausgabe am oberen Rand beachten. Alternativ dieses kleine Video.</p>
<p><iframe src="http://player.vimeo.com/video/25499813" width="640" height="480" frameborder="0"></iframe></p>
<p>Mir ist klar, dass dies nicht die beste Lösung ist, da Media Queries in jeder erdenklichen Form auftauchen können und die Ausgabe den größten Nutzwert hat, wenn man die Ausgabe der optimierten Größe anpasst. Aber es stellt eine einfache und schnell Lösung dar. Alternativen sind vermutlich via JavaScript denkbar, die das Stylesheet parsen und anhand der gefunden Anweisungen zu Media Queries den Viewport auswerfen &#8211; aber diese Form erfordert etwas mehr zeit und Kraft; also schnell überzogen und in meinem Fall ist die vorgestellte Lösung vollkommen ausreichend; durch die Erweiterungen von Frederic sind auch noch andere Viewports eingeflossen und in diesem Zusammenhang habe ich mir bekannte typische Größen und Ausrichtungen integriert &#8211; <em>Portrait</em> und <em>Landscape</em>. Alles weitere seht ihr in der angesprochenen <a href="https://github.com/bueltge/Simple-Media-Queries-Debugging/blob/master/debug.css" title="debug.css als Code lesen"><code>debug.css</code></a> und direkt auf <a href="http://bueltge.de/test/media-query-debugger.php">der Seite</a>, die den Source des Stylesheets ausgibt.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/simple-media-queries-debugging/1286/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/simple-media-queries-debugging/1286/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/simple-media-queries-debug450.png" />
		<media:content url="http://bueltge.de/wp-content/images/simple-media-queries-debug450.png" medium="image">
			<media:title type="html">Simple Media Queries Debugge - Screenshot</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Admin Bar nach unten verschieben</title>
		<link>http://bueltge.de/wordpress-admin-bar-nach-unten-verschieben/1259/</link>
		<comments>http://bueltge.de/wordpress-admin-bar-nach-unten-verschieben/1259/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 22:05:35 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Admin Bar]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1259</guid>
		<description><![CDATA[Nicht jeder mag die WordPress Admin Bar, eingeführt mit WordPress 3.1, am oberen Rand des Browsers. Mit ein wenig CSS lässt sich das ändern.]]></description>
			<content:encoded><![CDATA[<p>Nicht jeder mag die WordPress Admin Bar, eingeführt mit WordPress 3.1, am oberen Rand des Browsers. Mit ein wenig CSS lässt sich das ändern. Die folgende kleine Funktion bringt etwas CSS direkt in den Footer von Backend und Frontend ein und sorgt dafrü, dass die Admin Bar an den unteren Rand verschoben wird.<br />
<span id="more-1259"></span><br />
Der Code läßt sicher viel Raum für Erweiterungen, wie das implementieren mit Hilfe eines externen CSS-Stylesheets um es in den "Komprimierer" von WordPress zu bekommen und ebenso könnte man Optionen für die Anwender vorsehen. In meiner Anforderung half der folgende kleine Schnipsel, abgelegt in einem Plugin oder notdürftig auch in der <code>functions.php</code> des Themes.</p>
<pre><code>
function fb_move_admin_bar() {
    echo '
    &lt;style type=&quot;text/css&quot;&gt;
    body { 
    margin-top: -28px;
    padding-bottom: 28px;
    }
    body.admin-bar #wphead {
       padding-top: 0;
    }
    body.admin-bar #footer {
       padding-bottom: 28px;
    }
    #wpadminbar {
        top: auto !important;
        bottom: 0;
    }
    #wpadminbar .quicklinks .menupop ul {
        bottom: 28px;
    }
    &lt;/style&gt;';
}
// on backend area
add_action( 'admin_head', 'fb_move_admin_bar' );
// on frontend area
add_action( 'wp_head', 'fb_move_admin_bar' );
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-admin-bar-nach-unten-verschieben/1259/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-admin-bar-nach-unten-verschieben/1259/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Custom Post Types als CSS-Klasse im Frontend nutzen</title>
		<link>http://bueltge.de/wordpress-custom-post-types-als-css-klasse-im-frontend-nutzen/1247/</link>
		<comments>http://bueltge.de/wordpress-custom-post-types-als-css-klasse-im-frontend-nutzen/1247/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 02:41:26 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[custom post type]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1247</guid>
		<description><![CDATA[Um die Inhalte, welche über Custom Post Types eingebracht werden, im Frontend eventuell anders zu gestalteten, kann man sich diesen Typ als Klasse in den body-Tag holen und damit via CSS einfach darauf zugreifen.]]></description>
			<content:encoded><![CDATA[<p>Die Möglichkeit in WordPress eigene Post-Types einzubringen erfreut sich wachsender Beliebtheit und kann so manche Arbeit vereinfachen - wichtig ist, dass man im Vorfeld die Anforderungen exakt bewertet und die Möglichkeiten einschätzt. Aber darum soll es in diesem kleinen Beitrag nicht gehen - ich möchte kürz eine Lösung zeigen, die den oder die neuen Post Typen in das Frontend bringt, um die neuen Typen mittels CSS anzusprechen.<br />
<span id="more-1247"></span><br />
Im Grunde wird lediglich die Funktion <a href="http://codex.wordpress.org/Template_Tags/body_class"><code>body_class()</code></a> von WordPress erweitert um die eigenen Post Types, so dass man sie übergeordnet ansprechen kann und das Design entsprechend gestaltet.<br />
Gleiches hatte ich schon in einem <a href="http://bueltge.de/wordpress-theme-in-abhaengigkeit-des-titel/397/">anderen Beitrag</a> ausführlicher erläutert, wo der Titel eines Beitrags in diese Funktion übernommen wurde; daher dort bitte die Zusatzinformationen abholen.</p>
<pre><code class="php">
// Adds classes for custom post types to body_class() and post_class()
function fb_add_body_class( $class ) {
	$post_type = 'my_example_post_type'; // der Post Type

	if ( get_query_var('post_type') === $post_type ) { // nur wenn der Post Type aktiv ist, dann erweitern
		$class[] = $post_type;
		$class[] = 'type-' . $post_type;
	}

	return $class;
}
add_filter( 'body_class', 'fb_add_body_class' );
</code></pre>
<p>Alternativ kann man auch die <a href="http://codex.wordpress.org/Function_Reference/post_class"><code>post_class()</code></a> Funktion erweitern um die Klasse des Custom Post Type nicht direkt am body-Tag zu haben. Dazu verwende ich die gleiche Funktion und es muss lediglich der Hook für die post-Klassen angesprochen werden.</p>
<pre><code class="php">
add_filter( 'post_class', 'fb_add_body_class' );
</code></pre>
<p>Beide Template Tags werden im HTML-Tag verwendet, wie auch die verlinkten Codex-Seiten aufzeigen; bzw. ein Beispiel für die Post-Klasse:</p>
<pre><code class="php">
&lt;div &lt;?php post_class('class-name'); ?&gt;&gt;
</code></pre>
<p>Viel Freude beim austesten und nutzen. Die Kommentarfunktion steht wie immer für Verbesserungen und Diskussion offen.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-custom-post-types-als-css-klasse-im-frontend-nutzen/1247/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-custom-post-types-als-css-klasse-im-frontend-nutzen/1247/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Simple Media Queries Tester</title>
		<link>http://bueltge.de/simple-media-queries-tester/1239/</link>
		<comments>http://bueltge.de/simple-media-queries-tester/1239/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 09:18:21 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Webdesign]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1239</guid>
		<description><![CDATA[Die Möglichkeiten von CSS Media Queries in einem Blick halten empfinde ich gerade beim Entwickeln wichtig, darum ein kleines Tool, was dies ermöglicht.]]></description>
			<content:encoded><![CDATA[<p><a href="http://css-tricks.com/css-media-queries/">CSS Media Queries</a> dringen immer weiter vor und die Möglichkeiten der Anpassung bei der Größe einer Website an die den entsprechenden Client bzw. die Bildgröße des Browsers werden notwendiger. Die Media Queries sind eine Lösung, die ihre Vor- und Nachteile haben. Beim Einsetzen empfand ich es manchmal als Nachteil, dass ich mir nicht alle Größe gleichzeitig ansehen konnte. Warum also nicht einfach ein kleines Script und das iframe-Element sinnvoll gebrauchen.<br />
Wer mag und dies braucht, der findet hier nun eine simple und einfache Lösung oder kann auch gern das <a href="http://bueltge.de/test/media-query-tester.php">laufende Script</a> in meinem "Test-Labor" nutzen. Die Version hat auch einige weitere Spielereien inne, so kann man außerdem die Werte der iframes anpassen und diese Daten speichere ich mittels der <a href="http://dev.w3.org/html5/webstorage/">DOM Storage-API</a> innerhalb eines Browsers lokal. Meine Lösung im Labor hat keinen Fallback und sollte nur mit Browsers sauber laufen, die die Möglichkeit der Storage API unterstützen.<br />
<span id="more-1239"></span><br />
Die Lösung kann beliebig erweitert und verbessert werden, viel Freude damit.</p>
<p><a href="http://bueltge.de/test/media-query-tester.php"><img src="http://bueltge.de/wp-content/images/Simple-Media-Queries-Tester.png" alt="Screenshot Simple Media Queries Tester" title="Simple Media Queries Tester" class="centered" /></a></p>
<p>Der folgende Code ist lediglich in einer PHP-Datei zu speichern und kann dann genutzt werden. Ich habe nur wenig mit CSS gespielt und angepasst; ebenfalls ist die Browserunterstützung vermutlich nicht sonderlich groß, da ich rein auf HTML5 und CSS3 setze und keine Scripte dafür hinterlege. </p>
<pre><code>
&lt;!DOCTYPE html&gt; 
&lt;html&gt; 
&lt;head&gt; 
	&lt;meta charset=utf-8 /&gt; 
	
	&lt;title&gt;Simple Media Queries Tester&lt;/title&gt; 
	
	&lt;meta name=&quot;description&quot; content=&quot;Simple Media Queries Tester&quot; /&gt; 
	&lt;meta name=&quot;author&quot; content=&quot;Frank Bueltge - http://bueltge.de&quot; /&gt; 
	
	&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
	/*&lt;![CDATA[*/
		body { background:#fff;font-family:Arial,Helvetica,sans-serif;font-size:100%;margin:20px; }
		a { text-decoration:none; color:#1152c8; }
		fieldset { border:1px solid #ccc; margin:0 0 20px 0; }
		form#mediaqueriestest input { margin:auto; }
		form#mediaqueriestest button { margin:auto;text-shadow:0 1px 1px #000;text-transform:uppercase; }
		form#mediaqueriestest button:hover { background:#1152c8;color:#000;cursor:pointer; }
		form#mediaqueriestest input:active, form#mediaqueriestest input:focus { outline:none;border:1px solid #333;background:#fff;color:#000;-moz-border-radius:20px;-webkit-border-radius:20px;-khtml-border-radius:20px;border-radius:20px; }
		form#mediaqueriestest fieldset, form#mediaqueriestest legend, form#mediaqueriestest input, form#mediaqueriestest button, iframe, footer {
background:#333;color:#fff;padding:7px 25px;border:1px solid #333;-moz-border-radius:20px;-webkit-border-radius:20px;-khtml-border-radius:20px;border-radius:20px; }
		form#mediaqueriestest fieldset, form#mediaqueriestest legend { background:#ccc;color:#000;margin:10px;padding-bottom:25px; }
		form#mediaqueriestest legend { padding:7px 25px;-webkit-box-shadow: 2px 2px 2px #333; }
		iframe { margin:0 auto; border:1px solid #ccc; margin:10px; }
		footer { display:block; color:#333; margin:20px 0 0 0; border:2px solid #ba0100; background:#fff; }
	/*]]&gt;*/
	&lt;/style&gt;

&lt;/head&gt; 
&lt;body&gt;
	&lt;header&gt;
		&lt;h1&gt;&lt;a href=&quot;http://bueltge.de/&quot; title=&quot;to the weblog of the author&quot;&gt;Simple Media Queries Tester&lt;/a&gt;&lt;/h1&gt;
	&lt;/header&gt;
	
	&lt;section&gt;
		&lt;form id=&quot;mediaqueriestest&quot; action=&quot;&lt;?php echo htmlspecialchars( strip_tags($_SERVER['PHP_SELF']) ); ?&gt;&quot; method=&quot;get&quot;&gt;
		&lt;fieldset&gt;
		&lt;legend&gt;Test your URL&lt;/legend&gt;
		&lt;label for=&quot;testurl&quot;&gt;Test URL&lt;/label&gt;
			&lt;input type=&quot;text&quot; name=&quot;testurl&quot; id=&quot;testurl&quot; placeholder=&quot;Input your test url here&quot; size=&quot;70&quot;&gt;
			&lt;button type=&quot;submit&quot;&gt;Test it!&lt;/button&gt;
		&lt;/fieldset&gt;
		&lt;/form&gt;
		&lt;?php
		if ( !empty($_GET['testurl']) ) {
			$newURL = htmlspecialchars( strip_tags($_GET['testurl']), ENT_QUOTES );
			if (preg_match(&quot;/^(www.)/i&quot;, $newURL) )
				$iframeurl = 'http://'.$newURL;
			elseif (preg_match(&quot;/^(http:\/\/)/i&quot;, $newURL))
				$iframeurl = $newURL;
			else
				$iframeurl = 'http://www.' . $newURL;
			
			echo '&lt;iframe name=&quot;fullsize&quot; id=&quot;fullsize&quot; width=&quot;960&quot; height=&quot;450&quot; seamless=&quot;seamless&quot; src=&quot;' . $iframeurl . '&quot;&gt;&lt;/iframe&gt;';
			echo '&lt;iframe name=&quot;netbook&quot; id=&quot;netbook&quot; width=&quot;650&quot; height=&quot;450&quot; seamless=&quot;seamless&quot; src=&quot;' . $iframeurl . '&quot;&gt;&lt;/iframe&gt;';
			echo '&lt;iframe name=&quot;mobile&quot; id=&quot;meinframe&quot; width=&quot;450&quot; height=&quot;450&quot; seamless=&quot;seamless&quot; src=&quot;' . $iframeurl . '&quot;&gt;&lt;/iframe&gt;';
		} else {
			echo '&lt;p&gt;keine Seite geladen - Adresse Eingeben&lt;/p&gt;';
		}
		?&gt;
	&lt;/section&gt;
	
	&lt;footer&gt;
		&lt;p&gt;
		&amp;copy; 2010 &lt;a href=&quot;http://bueltge.de/&quot;&gt;bueltge.de&lt;/a&gt; &amp;middot; &lt;a href=&quot;http://bueltge.de/impressum/&quot;&gt;Impressum&lt;/a&gt;
		&lt;/p&gt;
	&lt;/footer&gt;

&lt;/body&gt;
&lt;/html&gt;

</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/simple-media-queries-tester/1239/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/simple-media-queries-tester/1239/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/Simple-Media-Queries-Tester.png" />
		<media:content url="http://bueltge.de/wp-content/images/Simple-Media-Queries-Tester.png" medium="image">
			<media:title type="html">Simple Media Queries Tester</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Einfaches Autoresize für die WordPress Hintergrundbild-Funktion</title>
		<link>http://bueltge.de/einfaches-autoresize-fur-die-wordpress-hintergrundbild-funktion/1230/</link>
		<comments>http://bueltge.de/einfaches-autoresize-fur-die-wordpress-hintergrundbild-funktion/1230/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 13:22:01 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1230</guid>
		<description><![CDATA[Die Hintergrundbild-Funktion von WordPress kann angepasst werden, wie man dies tut und was man erwarten kann zeige ich an einem Beispiel, welches das Hintergrund mittels Autoresize immer an die Größe des Browsers anpasst. ]]></description>
			<content:encoded><![CDATA[<p>Mit WordPress 3.0 wurde die Möglichkeit im Theme geschaffen, dass der User einfach ein <a href="http://wpengineer.com/1964/wordpress-3-0-custom-background-support/">Hintergrundbild</a> hochladen und nutzen können. Das Bild wird mittels CSS im Hintergrund positioniert. Damit ist es nicht ganz so einfach, dass die Möglichkeit des Autoresize schafft und der Hintergrund sich an die Größe des Browsers anpasst. Es gibt einige schöne Möglichkeiten für diese Anforderung, ich möchte kurz eine sehr einfache Möglichkeit mittels CSS aufzeigen, da so die Funktion von WordPress nicht angefasst werden muss.<br />
<span id="more-1230"></span><br />
Die folgende Syntax muss innerhalb des Stylesheet integriert werden. Dazu kann auch ein <a href="http://bueltge.de/wordpress-child-themes-verstehen/1192/">Child-Theme</a> angelegt werden, wenn das Originaltheme nicht verändert werden sollte. Die Werte müssen mit <code>!important</code> versehen werden, da ansonsten die Werte von WordPress genutzt werden, das Überschreiben dieser Werte ist nicht anders möglich. Damit wird der Hintergrund immer an die Größe des Browsers angepasst - aber Achtung: dies ist nicht immer die optimale Lösung, da die Bilder dazu in der eigentlichen Größe verändert werden, heißt also, dass ein sehr schmaler Bildausschnitt das Bild extrem verzerrt. Der Beispielscreenshot ist da wenig empfindlich, da die Wolken dies vertragen können und trotzdem ein angenehmes Hintergrundbild liefern - im Gegensatz zum Standard, in dem das Bild wie in der Vorschau gekachelt wäre; bei anderen Bildern kann dies sehr unschön aussehen.</p>
<p><img src="http://wpengineer.com/wp-content/uploads/autoresize-settings-300x190.png" alt="" title="autoresize-settings" width="300" height="190" class="aligncenter size-medium wp-image-2107" /></p>
<pre><code lang="css">
body {
	background-repeat:no-repeat !important;
	background-position:center center !important;
	background-attachment:fixed !important;
	-o-background-size: 100% 100%, auto !important;
	-moz-background-size: 100% 100%, auto !important;
	-webkit-background-size: 100% 100%, auto !important;
	background-size: 100% 100%, auto !important;
}
</code></pre>
<p>Das CSS ist nicht in allen Browsern nutzbar, <a href="http://caniuse.com/?utm_content=backtype-tweetcount&#038;utm_medium=bt.io-twitter&#038;utm_source=twitter.com#search=background-size">siehe Übersicht</a>, liefert daher nur in den aktuellen Browsern den erwarteten Effekt. Der Internet Explorer, Browser kann man ihn ja schlecht nennen, hat hiermit so seine Schwierigkeiten.</p>
<p><img src="http://wpengineer.com/wp-content/uploads/autoresize-example-300x153.png" alt="" title="autoresize-example" width="300" height="153" class="aligncenter size-medium wp-image-2106" /></p>
<p>Eine Alternative ist es den Callback für die Funktion mitzugeben und eine eigene kleine Funktion in der <code>functions.php</code> abzulegen, die sich um das Ausgeben des CSS kümmert. Die folgende Funktion tut dies statisch, fragt also nur das Bild ab und nutzt die Werte aus dem Backend nicht.</p>
<pre><code>
function fb_header_callback() {
  
  $background = get_background_image();
  if ( !$background )
    return;

  if ( $background ) {
    $image = &quot; background-image: url('$background');&quot;;
  
    $style  = 'background-repeat:no-repeat;';
    $style .= 'background-position:center center;';
    $style .= 'background-attachment:fixed;';
    $style .= '-o-background-size: 100% 100%, auto;';
    $style .= '-moz-background-size: 100% 100%, auto;';
    $style .= '-webkit-background-size: 100% 100%, auto;';
    $style .= 'background-size: 100% 100%, auto;';

    $style .= $image . $style;
  }
?&gt;
&lt;style type=&quot;text/css&quot;&gt;
body { &lt;?php echo trim( $style ); ?&gt; }
&lt;/style&gt;
&lt;?php
}
</code></pre>
<p>Diese Funktion muss in der Funktion als Callback mitgeben, sie kann natürlich beliebig angepasst werden. In der <code>functions.php</code> des Themes sollte es, wenn es die Background-Image-Funktionalität schon gibt, die Funktion <code>add_custom_background()</code> geben. Dieser muss im ersten Parameter mit der neuen Funktion erweitert werden und nun wird der Standard-Callback von WordPress nicht mehr aufgerufen. </p>
<pre><code class="php">
	// This theme allows users to set a custom background
	add_custom_background( 'fb_header_callback' );
</code></pre>
<p>Als Hinweis, der Style wird dann via Hook <code>wp_head</code> direkt im <code>head</code> ausgegeben, eher unschön - wie ich finde, und daher solltet ihr diese Formatierung wohl besser im Stylesheet ablegen, da sie eh statisch ist und nicht vom User angepasst werden kann. Ebenso ist wichtig das der Hook auch im Theme vorhanden ist, was aber auch für andere Plugins oder Funktionen wichtig ist.</p>
<h4>Werte aus dem Backend nutzen</h4>
<p>Als letzter kleiner Tipp für eure eigenen Anpassungen möchte ich noch zeigen, wie man die Werte aus dem Backend bekommt und nutzt.<br />
Die Hintergrundfarbe der Optionen zum Hintergrundbild wird mit folgender Funktion zurück gegeben:</p>
<pre><code>$color = get_background_color();</code></pre>
<p>Das Bild bekommt via:</p>
<pre><code>$background = get_background_image();</code></pre>
<p>Und einzelne Einstellungen zum Style werden via <code>get_theme_mod($name);</code> abgefragt:<br />
Der folgende kleine Schnipsel gibt die gesetzten Werte zum Theme zurück.</p>
<pre><code>
$mods = get_theme_mods();
var_dump($mods);
</code></pre>
<p>Dies könnte beispielsweise für das Standard Theme Tweny Ten wie folgt aussehen</p>
<pre><code class="php">
string 'Twenty Ten' (length=10)

array
  'background_image' => string 'http://localhost/wpbeta/wp-content/uploads/2010/12/apple-touch-icon.png' (length=71)
  'background_image_thumb' => string 'http://localhost/wpbeta/wp-content/uploads/2010/12/apple-touch-icon.png' (length=71)
  'background_repeat' => string 'no-repeat' (length=9)
  'background_position_x' => string 'center' (length=6)
  'background_attachment' => string 'scroll' (length=6)
  'background_color' => string '' (length=0)
</code></pre>
<p>Aufgrund dieser Werte im Array kann man beispielsweise den Wert <code>background_repeat</code> holen,</p>
<pre><code>$repeat = get_theme_mod( 'background_repeat' );</code></pre>
<p>der in diesem Beispiel <code>no-repeat</code> zurück gibt.</p>
<p>Mit den anderen Werten kann man genauso verfahren; eine Menge an Spielraum und Möglichkeiten.<br />
Zum den Themen CSS und Hintergrund findet man einen ausführlichen Artikel bei Chris: <a href="http://css-tricks.com/perfect-full-page-background-image/">Perfect Full Page Background Image</a><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/einfaches-autoresize-fur-die-wordpress-hintergrundbild-funktion/1230/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/einfaches-autoresize-fur-die-wordpress-hintergrundbild-funktion/1230/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:thumbnail url="http://wpengineer.com/wp-content/uploads/autoresize-settings-300x190.png" />
		<media:content url="http://wpengineer.com/wp-content/uploads/autoresize-settings-300x190.png" medium="image">
			<media:title type="html">autoresize-settings</media:title>
		</media:content>
		<media:content url="http://wpengineer.com/wp-content/uploads/autoresize-example-300x153.png" medium="image">
			<media:title type="html">autoresize-example</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Die Reduktion von HTML5</title>
		<link>http://bueltge.de/reduktion-html5/1204/</link>
		<comments>http://bueltge.de/reduktion-html5/1204/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 18:39:18 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1204</guid>
		<description><![CDATA[Neben dem <a href="http://bueltge.de/inspiriere-maximal-10k-html5/1200/">10k Contest</a> gibt es aktuell auch ein <a href="http://js1k.com/">1k Variante</a>, wobei es dabei um einen reinen JavaScript Vergleich handelt. Die Basis ist trotzdem html5 und ein canvas-Element steht zur Verfügung. Mit diesem kann man spielen und es sind einige wirklich tolle Sachen dabei - alles in allem 1k; externe Libraries sind hier nicht erlaubt. Für mich ein kleiner Ansporn um meine Idee mit HTML5 und CSS3 zu reduzieren und mal zu schauen, ob es denn auch im Rahmen von max. 1k geht.]]></description>
			<content:encoded><![CDATA[<p>Neben dem <a href="http://bueltge.de/inspiriere-maximal-10k-html5/1200/">10k Contest</a> gibt es aktuell auch ein <a href="http://js1k.com/">1k Variante</a>, wobei es sich dabei um einen reinen JavaScript Vergleich handelt. Die Basis ist trotzdem HTML5 und ein canvas-Element steht zur Verfügung. Mit diesem kann man spielen und es sind einige wirklich tolle Sachen dabei - alles in allem 1k; externe Libraries sind hier nicht erlaubt. Für mich ein kleiner Ansporn um meine Idee mit HTML5 und CSS3 zu reduzieren und mal zu schauen, ob es denn auch im Rahmen von max. 1kByte geht.<br />
<span id="more-1204"></span><br />
Dabei konnte ich erstmals die große Freiheit von HTML5 kennen lernen - HTML5 lässt im Syntax diverse Freiheiten, denn man muss nicht jedes Element nutzen und auch nicht jedes Element schließen. Für ein übersichtliches Markup sicher nicht immer vorteilhaft, für meine Vorgabe von einem Kilobyte aber schon. Dabei ist nun tatsächlich <a href="http://bueltge.de/test/10kapart/max1k.html">eine Lösung</a> entstanden, die nur 1k groß ist und in einigen Bereichen abgespeckt wurde. Die Animation wurde mit JavaScript und nicht CSS3 realisiert und auch die runden Ecken mussten weichen - zu viel Syntax.<br />
Wer also ein wenig Inspiration und Möglichkeiten braucht, schaut sich die beiden Versionen mal an und hat vielleicht auch große Lust mal wieder ein kleines Projekt zu machen, kein CMS dahinter - pur HTML, CSS und JavaScript.</p>
<p>Es gibt noch immer Potenzial zum Reduzieren der Größe, so bin ich kein Freak im Rahmen von JavaScript und hier sehe ich noch einiges an Möglichkeiten. Nun aber die beiden Lösungen zum Vergleich.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/10kvs1k.png" alt="4k vs 1k mit HTML5, CSS3 uns JavaScript" /></p>
<p>Variante 1 hat in erster Linie ihren Bedarf im CSS, viel Code für wenig Wirkung. Man braucht aktuell für diverse Browser unterschiedliche Syntax um die Rundungen zu erzeugen. Die Animation funktioniert nur in Webkit-Browsern und auch die RGB-Farben sind recht viele Zeichen. </p>
<ol>
<li><a href="http://bueltge.de/test/10kapart/">Die 4,5k Variante</a></li>
<li><a href="http://bueltge.de/test/10kapart/max1k.html">Die 1k Variante</a></li>
</ol>
<p>Um diese Sachen auf 1k zu drücken musste einiges an Code weichen; eine andere Möglichkeit habe ich nicht gesehen. Die Animation habe ich nur im Ansatz zum Test eingebaut, sie ist wesentlich simpler. Das Spiel der Farben lasse ich via Zufall ablaufen und brauche trotzdem weniger Code. Lediglich die Möglichkeit RGB-Syntax zu nutzen ist geblieben, wird aber im JS per Zufall erzeugt.</p>
<p>In beiden Fällen habe ich es getan, weil ich mal etwas Spielen und Versuchen wollte. Einfach mal so und trotzdem sollte der Code valide und mit aktuellen Mitteln möglich sein. Interessant ist wohl das HTML5-Markup der 1k Variante - auch diese Version ist valider Code und ist doch recht untypisches Markup.</p>
<pre><code lang="html">
&lt;!DOCTYPE html&gt;
&lt;meta charset=&quot;utf-8&quot;&gt; 
&lt;title&gt;one day at a time in 1k&lt;/title&gt;
&lt;style&gt;body{background:#FFF;font:16px/23px Georgia,Times,serif;margin:20px}h1{font-size:45px}h3{display:none}time{font-size:50px;border:3px solid #F9F5EB;-webkit-box-shadow:4px 4px 6px #545454;-moz-box-shadow:4px 4px 6px #545454;box-shadow:4px 4px 6px #545454;padding:30px 40px}div{margin:120px 0}&lt;/style&gt;
&lt;script&gt;function d(){var n=new Date(),t=n.getDate(),m=n.getMonth(),y=n.getFullYear(),y=t+'.'+m+'.'+y;if(t&lt;10)t=&quot;0&quot;+t;if(m&lt;10)m=&quot;0&quot;+m, datetime=y+'-'+m+'-'+t,x=document.createTextNode(y);d=document.getElementById('d');d.appendChild(x);d.setAttribute(&quot;datetime&quot;,datetime);setInterval('d.style.background=&quot;rgba(&quot;+Math.floor(Math.random()*256)+&quot;,&quot;+Math.floor(Math.random()*256)+&quot;,&quot;+Math.floor(Math.random()*256)+&quot;,0.4)&quot;',600);setInterval('d.style.margin=Math.floor(Math.random()*20)+&quot;%&quot;',500)}window.onload=d;&lt;/script&gt;
&lt;header&gt;&lt;h1&gt;Carpe diem (1k)&lt;/h1&gt;&lt;/header&gt;
&lt;div&gt;&lt;h3&gt;Today's date&lt;/h3&gt;&lt;time id=&quot;d&quot;&gt;&amp;nbsp;&lt;/time&gt;&lt;/div&gt;

</code></pre>
<p>Die style- und script-Elemente kann man im Grunde unbeachtet lassen, es geht um die anderen Tags, hier wird dem typischen Markup von HTML einiges entzogen.</p>
<p>Das <code>html</code>-, <code>head</code>- und <code>body</code> sind ganz entfallen. Gleiches kann man auch für <code>colgroup</code> und <code>tbody</code> machen. Andere Elemente dürfen nur das schließende Tag weg lassen: <code>li</code>, <code>dt</code>, <code>dl</code>, <code>p</code>, <code>option</code> und einige mehr.</p>
<p>Im Gegensatz dazu die Variante mit xHTML-Schreibweise und kompletten Tags.</p>
<pre><code>
&lt;!DOCTYPE html&gt; 
&lt;html lang=&quot;en&quot;&gt; 
	&lt;head&gt; 
		&lt;meta charset=&quot;utf-8&quot;&gt; 
		
		&lt;title&gt;one day at a time&lt;/title&gt;
		
		&lt;meta name=&quot;description&quot; content=&quot;one day at a time - Small Sample Application&quot;&gt;
		&lt;meta name=&quot;language&quot; content=&quot;en&quot; /&gt;
		&lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot; /&gt;

		&lt;script&gt;
			function addDate(){
				var now   = new Date();
				var day   = now.getDate();
				var month = now.getMonth();
				var mname = new Array(&quot;January&quot;, &quot;February&quot;, &quot;March&quot;, &quot;April&quot;, &quot;May&quot;, &quot;June&quot;, &quot;July&quot;, &quot;August&quot;, &quot;September&quot;, &quot;October&quot;, &quot;November&quot;, &quot;December&quot;);
				var year  = now.getFullYear();
				var date  = day + '.' + mname[month] + ' ' + year;
				if (day &lt; 10) day = &quot;0&quot; + day;
				if (month &lt; 10) month = &quot;0&quot; + month;
				var datetime = year + '-' + month + '-' + day;
				var dtxt   = document.createTextNode(date);
				document.getElementById('date').appendChild(dtxt);
				document.getElementById('date').setAttribute(&quot;datetime&quot;, datetime )
			}
			window.onload = addDate;
		&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		
		&lt;div id=&quot;wrap&quot;&gt;
			
			&lt;header&gt;
				&lt;hgroup&gt;
					&lt;h1&gt;one day at a time&lt;/h1&gt;
					&lt;h2&gt;Carpe diem &amp;mdash; &lt;a href=&quot;http://en.wikipedia.org/wiki/Carpe_diem&quot;&gt;Seize the day&lt;/a&gt;.&lt;/h2&gt;
				&lt;/hgroup&gt;
			&lt;/header&gt;
			
			&lt;section&gt;
				&lt;h3&gt;Today's date&lt;/h3&gt;
				&lt;div class=&quot;pulse&quot;&gt;
					&lt;time id=&quot;date&quot;&gt;&amp;nbsp;&lt;/time&gt;
				&lt;/div&gt;
			&lt;/section&gt;
			
			&lt;footer&gt;
				&lt;p&gt;View in an HTML5 browser such as: &lt;a href=&quot;http://ie.microsoft.com/testdrive/&quot;&gt;IE9 Developer Preview&lt;/a&gt;, &lt;a href=&quot;http://www.mozilla.com/en-US/firefox/firefox.html&quot;&gt;Firefox&lt;/a&gt;.&lt;/p&gt;
				&lt;p&gt;See animation only on webkit browser such as: &lt;a href=&quot;http://www.apple.com/safari/&quot;&gt;Safari&lt;/a&gt; or &lt;a href=&quot;http://www.google.com/chrome/index.html?hl=en&amp;amp;brand=CHMB&amp;amp;utm_campaign=en&amp;amp;utm_source=en-ha-na-us-sk&amp;amp;utm_medium=ha&quot;&gt;Chrome&lt;/a&gt;.&lt;/p&gt;
			&lt;/footer&gt;
			
		&lt;/div&gt;
		
	&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Natürlich sind hier auch einige Inhalte mehr und vor allem wesentlich mehr Semantik unter gebracht. Eine schöner Vergleich der vielleicht zum Nachdenken anregt und mir wieder die Unterschiede und Möglichkeiten aufgezeigt hat.</p>
<p>Vielleicht Lust bekommen, zu spielen, zu testen und die neuen Möglichkeiten mit HTML5 und CSS3 zu versuchen - wenn ja, dann hat sich der Artikel gelohnt. Solltest du Hinweise für meine Spielerei oder Fehler gefunden haben - dann bin ich sehr dankbar und der Artikel hat sich noch viel mehr gelohnt.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/reduktion-html5/1204/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/reduktion-html5/1204/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/10kvs1k.png" />
		<media:content url="http://bueltge.de/wp-content/images/10kvs1k.png" medium="image">
			<media:title type="html">4k vs 1k mit HTML5, CSS3 uns JavaScript</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Inspiriere mit maximal 10k HTML5</title>
		<link>http://bueltge.de/inspiriere-maximal-10k-html5/1200/</link>
		<comments>http://bueltge.de/inspiriere-maximal-10k-html5/1200/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 08:16:07 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[xHTML]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1200</guid>
		<description><![CDATA[Es ist an der Zeit, zurück zu den Ursprüngen zu finden und sich auf die Optimierung mit Blick auf Größe der Website Gedanken zu machen - so oder so ähnlich interpretiere ich den Wettbewerb für Menschen, die Websites machen. Vor zehn Jahren haben A List Apart einen Aufruf gestartet Much Ado About 5K. Weniger als [...]]]></description>
			<content:encoded><![CDATA[<p>Es ist an der Zeit, zurück zu den Ursprüngen zu finden und sich auf die Optimierung mit Blick auf Größe der Website Gedanken zu machen - so oder so ähnlich interpretiere ich den Wettbewerb für Menschen, die Websites machen.</p>
<p>Vor zehn Jahren haben A List Apart einen Aufruf gestartet <strong><a href="http://www.alistapart.com/articles/5k/">Much Ado About 5K</a></strong>. Weniger als 5 kByte waren zulässig um kleine Websites zu machen - diese Arbeiten sind aus meiner Sicht in erster Linie Anregung zu eigenen Gedanken und Inspiration für neue Arbeiten. Die Gemeinschaft der Webentwickler diskutiert gerne und so sind diese Formen der Themenanregung beliebt. Neben der Größe der Website von 10 k gibt es einige weitere Bedingungen - Standards: html5 und die Darstellung in Firefox, IE9, Safari und Chrome &#038; diverse <a href="http://10k.aneventapart.com/Contest/Libraries">Bibliotheken</a> - und damit ist zehn Jahre später ein neuer Wettbewerb <strong><a href="http://10k.aneventapart.com/">10k Apart</a></strong> durch fast das gleiche Team ins Leben gerufen. Zeit ein wenig Spaß zu haben und eine eigene kleine Arbeit bereit zu stellen.</p>
<p><img class="centeredob" src="http://bueltge.de/wp-content/images/10kapart_logo.png" alt="10k Apart Logo" /><br />
<span id="more-1200"></span><br />
Auch ich habe mich ein wenig von der vielen Arbeit erholt und mal eine kleine <a href="http://10k.aneventapart.com/Entry/22">Spielerei gemacht</a>, die man nun dort als App besichtigen kann - nichts besonderes, aber unterhaltsam und eine schöne Abwechslung. Ich wollte jeden Tag einen neuen Wert geben und uns die Erinnerung an jeden neuen Tag geben - 10k sollten dabei dicke reichen und so habe ich html5, CSS3 und JavaScript eingesetzt. Ebenfalls spiele ich mit den Animationsmöglichkeiten von CSS3, die allerdings aktuell nur in Webkit-Browsern wie Safari und Chrome laufen. Schaut es euch an und vielleicht nutzt es dem Lernen und dem Verständnis der neuen Mittel. Aber vielleicht motiviert es euch auch um ebenfalls an der Challange zu 10k Apart teilzunehmen.<br />
Die Gallerie hat schon jetzt tolle Sachen dabei - auch wenn nicht alle Apps die 10k einhalten - zumindest wenn man mit Libraries wie jQuery arbeitet <img src='http://bueltge.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Aber im Ende ist es eine tolle Aktion und die Teilnahme inspiriert. Es macht Spaß mit den neuen Möglichkeiten zu arbeiten und kein ToDo für alte Browser zu implementieren.</p>
<p>* Alternativ kann man sich <a href="http://bueltge.de/test/10kapart/">die Spielerei</a> auch in meinem <a href="http://bueltge.de/test/">kleinen Labor</a> ansehen.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/inspiriere-maximal-10k-html5/1200/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/inspiriere-maximal-10k-html5/1200/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/10kapart_logo.png" />
		<media:content url="http://bueltge.de/wp-content/images/10kapart_logo.png" medium="image">
			<media:title type="html">10k Apart Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Child-Themes verstehen</title>
		<link>http://bueltge.de/wordpress-child-themes-verstehen/1192/</link>
		<comments>http://bueltge.de/wordpress-child-themes-verstehen/1192/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 16:10:57 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP3.0]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1192</guid>
		<description><![CDATA[Mit der Version 3.0 von WordPress wurde die viel erwartete Funktion der <a href="http://codex.wordpress.org/Child_Themes">Child Themes</a> integriert - viel erwartet? Ja, leider nicht in Deutschland. Ich vermute, dass es einfach daran liegt, dass der Markt der kostenpflichtigen Themes hier wesentlich kleiner ist und die meisten Entwickler komplett neue Themes erstellen und nicht auf eine Basis setzen. Aber egal, nun gibt es eine Lösung dafür und ich möchte am Beispiel den neuen Standard-Theme <a href="http://wordpress.org/extend/themes/twentyten">TwentyTen</a> zeigen, wie man es nutzt.

Die Funktion der Child Themes kann im Grunde bei jedem Theme angewandt werden und die neuen Funktionen erleichtern den Zugriff und das Erstellen einen Child Themes. Im Vorfeld gab es auch Möglichkeiten ein Theme zu verändern ohne die eigentlichen Dateien des Themes stark zu verändern. Mit Hilfe der Unterstützung von Child Themes ist dies nun aber komplett unabhängig und so kann man ein Theme nutzen, kann ohne Problem updaten, und trotzdem eigene Ideen realisieren.

In einigen Beiträgen des Netzes wurde die Child Themes schon angesprochen und ich habe bisher nur Artikel gefunden, die die Aktivierung und Änderung des Stylesheets ansprechen. Daher möchte ich dazu nur kurz eingehen, dass ist im Grunde auch recht einfach und dann die verschiedenen Möglichkeiten im Bezug der Template-Dateien aufzeigen.]]></description>
			<content:encoded><![CDATA[<p>Mit der Version 3.0 von WordPress wurde die viel erwartete Funktion der <a href="http://codex.wordpress.org/Child_Themes">Child Themes</a> integriert - viel erwartet? Ja, leider nicht in Deutschland. Ich vermute, dass es einfach daran liegt, dass der Markt der kostenpflichtigen Themes hier wesentlich kleiner ist und die meisten Entwickler komplett neue Themes erstellen und nicht auf eine Basis setzen. Aber egal, nun gibt es eine Lösung dafür und ich möchte am Beispiel den neuen Standard-Theme <a href="http://wordpress.org/extend/themes/twentyten">TwentyTen</a> zeigen, wie man es nutzt. Ein weiteres Beispiel findet ihr im übrigen in meinem <a href="http://wpbasis.de">WP Basis-Theme</a> (<a href="http://code.google.com/p/wp-basis-theme/source/browse/#svn/trunk/basis-child-example%3Fstate%3Dclosed">SVN</a>); aktuell nicht die html5-Version.</p>
<p>Die Funktion der Child Themes kann im Grunde bei jedem Theme angewandt werden und die neuen Funktionen erleichtern den Zugriff und das Erstellen einen Child Themes. Im Vorfeld gab es auch Möglichkeiten ein Theme zu verändern ohne die eigentlichen Dateien des Themes stark zu verändern. Mit Hilfe der Unterstützung von Child Themes ist dies nun aber komplett unabhängig und so kann man ein Theme nutzen, kann ohne Problem updaten, und trotzdem eigene Ideen realisieren.</p>
<p>In einigen Beiträgen des Netzes wurde die Child Themes schon angesprochen und ich habe bisher nur Artikel gefunden, die die Aktivierung und Änderung des Stylesheets ansprechen. Daher möchte ich dazu nur kurz eingehen, dass ist im Grunde auch recht einfach und dann die verschiedenen Möglichkeiten im Bezug der Template-Dateien aufzeigen.<br />
<span id="more-1192"></span></p>
<h4>Vorteile der Idee Child Theme</h4>
<p>Mehr oder weniger versucht jeder Administrator einer WordPress Installation etwas Individualismus zu leben. Dabei gehen nicht alle den Weg eines eigens erstellen Themes. Nicht selten wird ein freies oder kommerzielles Theme genutzt und dann an die eigenen Bedürfnisse angepasst. Dabei haben diverse Themes unterschiedliche Optionen, die aber trotzdem nur selten für das Anpassen ausreichen. Will man die einzelnen Darstellungen anpassen, beispielsweise die Sicht einer Kategorie, führt dies schnell zu sehr starken Veränderungen des Themes. Egal wie umfangreich, ein Update eines Themes ist nicht mehr ohne Probleme realisierbar. Hier kommen die Child Themes ins Spiel.</p>
<p>Mit einem Child Theme kann ein Theme angepasst werden oder man kann ein Theme als "Framework" nutzen und dabei komplett eigene Ideen umsetzen. Egal wie umfangreich, das eigentliche Theme bleibt unangetastet und kann ein Update erfahren.</p>
<h4>Nachteile der Verwendung Child Theme</h4>
<p>Wie so oft, wo Vorteile sind, sind auch Nachteile. Nicht selten sind die "Framework" Themes sehr umfangreich und bringen sehr viele Funktionen mit, die man als Laie nicht mehr überschauen kann und das Anpassen kann viel Mühe und Zeit kosten. Hier können auch die Child Themes nicht helfen.<br />
Einen großen Nachteile sehe ich  in der Performance, muss WordPress doch einnen Schritt weiter gehen und sich in zwei Bereichen nach den Templates umsehen und entsprechend ziehen.<br />
Im weiteren werden in der Regel die Stylesheets, wenn man auf sie aufbaut, via @-Regel eingebunden, die <a href="http://www.stevesouders.com/blog/2009/04/09/dont-use-import/">Nachteile in der Performance</a> hat.</p>
<p>In allen negativen Punkten kommt es auf Können und Wissen des Entwicklers an, also wie man das Theme bzw. Child Theme erstellt. Damit kann man die Punkte entkräften. Wichtig: die neue Funktion ist kein Freibrief, sie sollte genauso überlegt eingesetzt werden. Aber sie sorgt dafür, dass man sein erstandenes Theme nicht anfassen muss und trotzdem sehr überschaubar Anpassungen vornehmen kann.</p>
<h3>Child Theme anlegen</h3>
<p>Genug der Vorrede, die man sicher erweitern und diskutieren kann. Am Beispiel Theme TwentyTen soll nun eine angepasstes Theme entstehen - ich nenne es <em>TwentyTenJump</em> <img src='http://bueltge.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Im ersten Schritt wird ein neuer Ordner angelegt, in dem wir alle Template-Dateien, Bilder, Scripte und Stylesheets ablegen - was man im Grunde für das Child Theme benötigt. In diesem Beispiel ist das der Ordner <em>twentytenjump</em>. Um ein Child Theme zu erzeugen und WordPress dieses erkennbar zu machen bedarf es lediglich der <code>style.css</code> innerhalb der neuen Ordners mit diversen Strings in einem Kommentar.</p>
<p>Innerhalb der <code>style.css</code> sieht es wie folgt aus.</p>
<pre><code class="css">
@charset "UTF-8";

/**
 * Theme Name:     TwentyTenJump
 * Theme URI:      http://bueltge.de/?p=1192
 * Description:    Child theme for the Twenty Ten theme. Realized for a small tutorial to child themes in WordPress.
 * Author:         Frank Bültge
 * Author URI:     http://bueltge.de/
 * Template:       twentyten
 * Version:        0.1.0
 */

@import url('../twentyten/style.css');

</code></pre>
<p>Entscheidend sind die Schlüssel <em>Theme Name</em> und <em>Template</em>. Der Schlüssel <code>Template</code> verweist auf den <strong>Ordner-Namen</strong> des Theme, welches als Basis gezogen wird - in diesem Beispiel das Theme Twentyten.</p>
<p>Folgenden Aufbau habe ich nun innerhalb der Installation von WordPress.</p>
<ul>
<li><code>wp-content</code>
<ul>
<li><code>themes</code>
<ul>
<li><code>twentyten</code></li>
<p> (das Basis-Theme, inkl. aller Template-Dateien)</p>
<ul>
<li><code>style.css</code></li>
<li><code>index.php</code></li>
<li>...</li>
</ul>
<li><code>twentytenjump</code>
<ul>
<li><code>style.css</code> (muss diese Namenskonvetion erfüllen: <i>style.css</i>)</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Damit sind die ersten Voraussetzungen geschaffen und man kann das neue Theme im Backend von WordPress aktivieren.<br />
<strong>Achtung:</strong> der Verweis auf das Basis-Theme ist nicht sonderlich auffällig, so dass man die Abhängigkeit übersehen könnte. Darum also immer kontrolliert ein Theme löschen. Am verwendeten Theme gibt es keinerlei Hinweis, dass ein anderes Theme als Child-Theme auf dieses Theme zugreift.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/child-theme.jpg" alt="Child Themes in WordPress" /></p>
<h4>Am Stylesheet drehen</h4>
<p>Ab nun kann man jede beliebe Änderung in dem eigenen Stylesheet ablegen. Ebenfalls kann natürlich der Aufruf des Stylesheets <code>@import url('../twentyten/style.css');</code> aus dem Basis-Theme entfallen und man kann sich komplett eigene Stylesheet-Strukturen aufbauen.</p>
<p>Man nutzt quasi die Template-Dateien, den Aufbau und das PHP-KnowHow vom Basis Theme, in dem Fall Twenty Ten. Man kümmert sich ausschließlich um das Design und das im beliebigen Umfang. Beispielsweise könnte das im einfachsten Fall eine Farbänderung des Hintergrund sein und alternativ kann ein komplett eigenes Design kreiert werden.</p>
<h4>Templates ersetzen</h4>
<p>Die Funktionalität des Child Theme lässt aber mehr zu als das Änderung des Aussehen. So kann man bestehende Template-Dateien des Basis-Themes ersetzen. WordPress sucht quasi im ersten Schritt im übergeordneten Child Theme und dann im Basis-Theme nach dem möglichen Template. Durchläuft dabei die <a href="http://codex.wordpress.org/File:Template_Hierarchy.png">Hierarchie der Template-Dateien</a>.</p>
<p>An vielen Punkten vom Theme kann man via Hook eingreifen, was aber nicht jedem Nutzer liegt und kompliziert erscheint. So wird nicht selten die Ausgabe des Titel im <code>head</code> einer Website mit eigenen Funktionen oder von Plugins ersetzt. Man kann entweder via Hook den Titel bearbeiten oder die Ausgabe über eine Funktion steuern. Für das Beispiel soll nun der Titel mit einer Funktion aus einem Plugin ausgegeben werden. In dem Fall muss die <code>header.php</code> bearbeitet werden und darum muss man wie folgt vorgehen, so dass das Basis-Theme unangetastet bleibt.</p>
<p>Es ist lediglich die <code>header.php</code>, die den <code>head</code>-Abschnitt für das Theme enthält in das eigene Child Theme zu kopieren und hier kann sie beliebig bearbeitet werden. Ab nun zieht WordPress diese <code>header.php</code> und nicht mehr die Original-Datei aus dem Basis Theme Twenty Ten.</p>
<p>Damit kann nun auch die angesprochene Funktion in den Title integriert werden, ein Beispiel:</p>
<pre><code class="php">
&lt;title&gt;&lt;?php
	/*
	 * Print the &lt;title&gt; tag based on what is being viewed.
	 * We filter the output of wp_title() a bit -- see
	 * twentyten_filter_wp_title() in functions.php.
	 */
	if ( function_exists('seo_title_tag') )
		seo_title_tag();
	else
		wp_title( '|', true, 'right' );

	?&gt;&lt;/title&gt;
</code></pre>
<p>Das Basis-Theme bleibt unangetastet, kann weiterhin via Updates auf dem neusten Stand gehalten werden und ab nun zieht WordPress die <code>header.php</code> immer aus dem Child Theme.</p>
<p>Wie in diesem kleinen Beispiel kann man jedes Template ersetzen und so an die eigenen Anforderungen angepasst werden. Trotzdem sollte man bedenken, dass man das Template komplett ersetzt - in dem Beispiel-Fall würde man also ein Update der <code>header.php</code> nicht mitbekommen. Insofern kann es nützlich sein, wenn man auf diverse Bereiche besser via Hook zugreift und diese in eigenen Funktionen abbildet, dazu gleich mehr.</p>
<p><strong>Wichtig:</strong> eine Ausnahme ist die <code>functions.php</code>, dazu im Anschluss mehr.</p>
<h4>Templates erweitern</h4>
<p>Um eigene Anforderungen zu erfüllen, kann es sein, dass man neue Templates benötigt, Template-Dateien die es im Ist-Zustand nicht im Basis-Theme nicht gibt. Im Sinne der Hirarchie kann man immer erweitern. Beispielsweise besitzt Twenty Ten keine <code>home.php</code> - sollte man die aber definieren wollen, also dann wenn die definierte Home-Seite des Backend im Frontend geladen wird, dann kann man diese Datei einfach in das Child-Theme ablegen und WordPress zieht diese Datei, wenn der Zustand <code>is_home()</code> wahr ist.</p>
<p>Mit WordPress Version 3.0 gibt es aber eine weitere Möglichkeit außerhalb der Template-Hirarchie um eigene Templates einzubringen - <a href="http://bueltge.de/template-part-im-wordpress-template-laden/1157/" title="mehr Information in einem weiteren Beitrag"><code>get_template_part()</code></a>.<br />
Diese Funktion wird konsequent innerhalb von Twenty Ten verwendet - damit muss man in diversen Fällen keine eigenen Templates für den kompletten Aufruf anlegen, sondern lediglich den Abschnitt des Loop.<br />
Beispielsweise nutzt Twenty Ten für die Darstellung der Kategorie-Archive den Aufruf <code>get_template_part( 'loop', 'category' );</code>. Damit ist es möglich, dass in unserem Child Theme ein Template abgelegt wird, was diesen Loop bedient. Es ist also lediglich eine Datei <code>loop-category.php</code> anzulegen und dort alle notwendigen Infos abzulegen.<br />
Im folgenden Beispiel passe ich den Loop an, wenn man sich einem der vier Kategorien befindet. Weitere Änderungen sind möglich, so dass man volle Kontrolle und Flexibilität erhält.</p>
<pre><code class="php">
// Anpassungen des Loop
if ( in_category( array(47, 37, 27, 45) ) ) {
	query_posts( 'cat='.$cat.'&amp;posts_per_page=-1&amp;orderby=title&amp;order=ASC' );
}	else {
	query_posts( 'cat='.$cat.'&amp;posts_per_page=20&amp;paged='.$paged );
}
while ( have_posts() ) : the_post(); ?&gt;
</code></pre>
<p>Ähnlich könnte man so den Loop für die <code>index.php</code> anpassen - Template Datei <code>loop-index.php</code> wäre dann im Spiel</p>
<h4>Funktionen einbringen</h4>
<p>Natürlich kann man auch innerhalb des Child-Theme eigene Funktionen einbringen. Wenn man eine eigene <code>functions.php</code> im Child Theme ablegt, dann ersetzt diese Datei nicht die <code>functions.php</code> des Basis-Theme!<br />
Es werden immer die Funktionen des Basis-Theme genutzt; man muss sie via Hook deaktivieren. Die Möglichkeit wird auch in einer Doku in der Datei functions.php erklärt.</p>
<pre><code class="php">
add_action( 'after_setup_theme', 'my_child_theme_setup' );
function my_child_theme_setup() {
		// We are providing our own filter for excerpt_length (or using the unfiltered value)
		remove_filter( 'excerpt_length', 'twentyten_excerpt_length' );
		...
}
</code></pre>
<p>Innerhalb der Funktion <code>my_child_theme_setup()</code> kann man nun Funktione des Basis-Theme deaktivieren und eigene Funktionen einbringen.</p>
<p>Weitere Funktionen gehören in die <code>functions.php</code> des Child Themes - das Basis-Theme bleibt immer unangetastet. Im folgenden Code dazu ein Beispiel.<br />
Dabei deaktiviere ich die Funktion des Basis Theme Twenty Ten zur Länge des Excerpt und lade dazu eine eigene Funktion <code>twentytenjump_excerpt_length()</code> und es wird ein Widget eingebracht.</p>
<pre><code class="php">
&lt;?php
function twentytenjump_setup() {
	
	remove_filter( 'excerpt_length', 'twentyten_excerpt_length' );
	add_filter( 'excerpt_length', 'twentytenjump_excerpt_length' );
	
	add_action( 'widgets_init', 'register_limited_catagories_widget' );
}
add_action( 'after_setup_theme', 'twentytenjump_setup' );

function twentytenjump_excerpt_length( $length ) {
	return 10;
}

class limited_catagories_list_widget extends WP_Widget {
	
	function limited_catagories_list_widget(){
		$widget_ops = array( 'classname' =&gt; __('Selective categories'), 'description' =&gt; __('Show a list of Categories, with the ability to exclude categories') );
		
		$control_ops = array( 'id_base' =&gt; 'some-cats-widget' );
		$this-&gt;WP_Widget( 'some-cats-widget', __('Selective Catagories'), $widget_ops, $control_ops );
	}
 
	function form ( $instance){
		$defaults = array( 'title' =&gt; __('Catagories'), 'cats' =&gt; '', 'count' =&gt; 0 );
		$instance = wp_parse_args( (array) $instance, $defaults );
		$count = isset($instance['count']) ? (bool) $instance['count'] :false;
		?&gt;
		&lt;p&gt;
			&lt;label for=&quot;&lt;?php echo $this-&gt;get_field_id( 'title' ); ?&gt;&quot;&gt;&lt;?php _e( 'Title:' ); ?&gt;&lt;/label&gt;
			&lt;input id=&quot;&lt;?php echo $this-&gt;get_field_id( 'title' ); ?&gt;&quot; name=&quot;&lt;?php echo $this-&gt;get_field_name( 'title' ); ?&gt;&quot; value=&quot;&lt;?php echo $instance['title']; ?&gt;&quot; class=&quot;widefat&quot; /&gt;
		&lt;/p&gt;
		&lt;p&gt;
			&lt;input type=&quot;checkbox&quot; class=&quot;checkbox&quot; id=&quot;&lt;?php echo $this-&gt;get_field_id('count'); ?&gt;&quot; name=&quot;&lt;?php echo $this-&gt;get_field_name('count'); ?&gt;&quot;&lt;?php checked( $count ); ?&gt; /&gt;
			&lt;label for=&quot;&lt;?php echo $this-&gt;get_field_id('count'); ?&gt;&quot;&gt;&lt;?php _e( 'Show post counts' ); ?&gt;&lt;/label&gt;&lt;br /&gt;
		&lt;/p&gt;
		&lt;p&gt;
			&lt;label for=&quot;&lt;?php echo $this-&gt;get_field_id( 'cats' ); ?&gt;&quot;&gt;&lt;?php _e( 'Categories to exclude (comma separated list of Category-IDs): ' ); ?&gt;&lt;/label&gt;
			&lt;input id=&quot;&lt;?php echo $this-&gt;get_field_id( 'cats' ); ?&gt;&quot; name=&quot;&lt;?php echo $this-&gt;get_field_name( 'cats' ); ?&gt;&quot; value=&quot;&lt;?php echo $instance['cats']; ?&gt;&quot; class=&quot;widefat&quot; /&gt;
		&lt;/p&gt;
		&lt;?php
	}
 
	function update($new_instance, $old_instance) {
			$instance = $old_instance;
			$instance['title'] = strip_tags( $new_instance['title'] );
			$instance['count'] = !empty($new_instance['count']) ? 1 : 0;
			$instance['cats']  = strip_tags( $new_instance['cats'] );
			return $instance;
	}
 
	function widget($args, $instance){
		extract( $args );
		$title = apply_filters('widget_title', $instance['title'] );
		$c     = $instance['count'] ? '1' : '0';
		$cats  = $instance['cats'];
		echo $before_widget;
		if ( $title )
			echo $before_title . $title . $after_title;
		echo '&lt;ul&gt;';
		wp_list_categories(&quot;exclude=$cats&amp;title_li=&amp;show_count=$c&quot;);
		echo '&lt;/ul&gt;';
		echo $after_widget;
	}

}

function register_limited_catagories_widget(){
	register_widget('limited_catagories_list_widget');
}
?&gt;
</code></pre>
<h3>Fazit</h3>
<p>Ich meine aktuell, dass durch die Einführung des neuen Standard-Theme Twenty Ten sicher einige neue schöne Funktionen hinzugekommen sind. Ich denke aber ebenso, dass Twenty Ten sehr ungeeignet ist um die Arbeit von WordPress im Bereich des Themes zu verstehen. Gerade Einsteiger und PHP-Neulinge werden sich schwer tun. Trotzdem entstehen so neue Möglichkeiten und will man Child Themes sauber nutzen, dann kommt man um das Verständnis der Hooks in der WordPress API nicht herum. WordPress führt die Idee der Hooks konsequent fort, schon immer in Plugins beliebt, machen sie sich nun auch in Themes breit. Alles hat Vor- und Nachteile.<br />
Nutzt man aber ein gut gepflegtes Theme oder Framework, dann wird man die neuen Möglichkeiten schätzen und kann so immer ohne Probleme Updaten. Entscheidend wird das eigene Wissen um WordPress sein - je nach Interesse, Wissensstand und Arbeitsweise kann man eigene Themes erstellen. Man sollte sich im Vorfeld Gedanken machen und nicht blind loslegen und wie so oft, am Theme schrauben.</p>
<h3>Download:</h3>
<p>Zum Abschluss noch das Theme mit den entsprechenden Template-Dateien als Downlaod, so dass man einen kleinen Start zum Spielen hat.</p>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"><br />
<input type="hidden" name="hosted_button_id" value="DT9BG8NJTXQN4"><br />
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" border="0" name="submit" alt="Jetzt einfach, schnell und sicher online bezahlen – mit PayPal."><br />
<img class="ob" alt="Spendenbutton" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1"><br />
</form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong><br />
Jede Spende wird dankbar angenommen und erm&ouml;glicht das weitere Arbeiten an freier Software.<br />
M&ouml;chtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.<br />
Download als zip-Datei: <a href="http://bueltge.de/wp-content/download/wp/themes/twentytenjump.zip">twentytenjump.zip</a> - 5 kByte<br />
Einen Stand online einsehbar und erweiterbar, eventuell gepflegt findest du auf Github: <a href="https://github.com/bueltge/TwentyTenJump" title="bueltge / TwentyTenJump">github.com/bueltge/TwentyTenJump</a><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-child-themes-verstehen/1192/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-child-themes-verstehen/1192/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/child-theme.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/wp/child-theme.jpg" medium="image">
			<media:title type="html">Child Themes in WordPress</media:title>
		</media:content>
		<media:content url="http://bueltge.de//www.paypal.com/de_DE/i/scr/pixel.gif" medium="image">
			<media:title type="html">Spendenbutton</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress-Theme in Abhängigkeit des Titel</title>
		<link>http://bueltge.de/wordpress-theme-in-abhaengigkeit-des-titel/397/</link>
		<comments>http://bueltge.de/wordpress-theme-in-abhaengigkeit-des-titel/397/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 23:42:05 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=397</guid>
		<description><![CDATA[Individuelle Styles für jede Seite sind aktuell ein Trend. WordPress bietet verschiedene Ansätze dafür, eine Möglichkeit will ich aufzeigen.]]></description>
			<content:encoded><![CDATA[<p>Das Blog hat ein Theme und bekommt für jede Seite ein extra Stylesheet. Dieser aktuelle Trend der Individualität für jeden Inhalt wird auf diversen Sites diskutiert. Auch mit WordPress kann man dies tun; verschiedene Möglichkeiten gibt es. Eine Möglichkeit ist es auf Basis des Titels ein individuelles Stylesheet zu erstellen.<br />
Im Standard gibt die Klassenvergabe der Funktion <a href="http://codex.wordpress.org/Template_Tags/body_class" title="mehr dazu im Codex von WordPress"><code>body_class()</code></a> schon eine Menge an Möglichkeiten. Noch mehr Individualität kann man über den Titel oder die ID erreichen.<br />
Lohnt sicher nicht im klassischen Blogumfeld aber für eine Seite mit überschaubaren Content und dem wunschgemäßen Unterschied funktioniert meine Idee recht gut. Wie habe ich es in dem Fall umgesetzt?<br />
<span id="more-397"></span><br />
Wenn eine Seite geladen wird, dann kann man ja den Title übergeben. Wenn man diesen in den Body-Tag als ID oder class übernimmt, und dann jeweils für die <code>ID</code> oder <code>class</code> eine Style erstellt, wird das passende Design geladen.</p>
<p>Alternativ kann man mit der ID der Seite oder des Beitrags arbeiten, Funktion the_ID() übergibt diese. Aufpassen, IDs und Klassen dürfen nicht mit einem Zahlenweert beginnen und daher muss ein String ergänzt werden, beispielsweise </p>
<pre><code class="php">
&lt;div id="page-&lt;?php the_ID(); ?&gt;"&gt;
</code></pre>
<p>Als letzte Alternative möchte ich erwähnen, dass man die Funktion <code>body_class()</code> via Hook mit eigenen Klassen erweitern kann. So kann man auch den Titel einer Seite/Beitrags via Hook in diese Funktion bringen und ausgeben lassen.</p>
<pre><code class="php">
function fb_title_body_class($classes) {
	global $post;
	
	$classes[] = sanitize_title_with_dashes( get_the_title( $post->ID ) );
	
	return $classes;
}
add_filter( 'body_class', 'fb_title_body_class' );
</code></pre>
<p>Im folgenden der einfachste Fall via Titel, so dass man lediglich diese Klasse ausgibt und <code>body_class()</code> wird nicht genutzt.</p>
<h4>Mit Hilfe des Titel</h4>
<p>in den header des Themes kommt das Stylesheet:</p>
<pre><code>
&lt;link rel="stylesheet" href="&lt;?php bloginfo('template_url'); ?&gt;/custom.css" type="text/css" media="screen" /&gt;
</code></pre>
<p>Alternativ wird dieses via Hook <code>wp_head</code> eingebunden, wenn die entsprechende Seite geladen wird, so lädt man das explizite Stylesheet nur, wenn es benötigt wird und der header ist lesbar. Alles spielt sich in der <code>functions.php</code> des Themes ab.</p>
<p>in den body-Tag der <code>page.php</code> kommt der Titel der Seite:</p>
<pre><code>&lt;body class="&lt;?php echo sanitize_title_with_dashes( get_the_title() ); ?&gt;"&gt;</code></pre>
<p>Damit hat die Seite "My Home" den body-Tag:</p>
<pre><code>
&lt;body class="my-home"&gt;
und so weiter...
</code></pre>
<p>in der <code>custom.css</code> definierst du nun alle Styles für class home: bsp.</p>
<pre><code>
.my-home a { color: #090; text-decoration: none; }
.my-home a:visited { color: #999; text-decoration: none; }
.my-home a:hover { color: #f60; text-decoration: none; }
</code></pre>
<p>in dem original-Theme sieht das so aus:</p>
<pre><code>
a { color: #009; text-decoration: underline; }
a:visited { color: #999; text-decoration: underline; }
a:hover { color: #c00; text-decoration: underline; }
</code></pre>
<p>Wie ich finde, ein Ansatz mit viel Potential und dies überlasse ich gern eurer Kreativität. Wer also mit WordPress für jede Seite ein anders Stylesheet laden möchte, hat so einen Ansatz für eine Lösung.</p>
<h4>Plugin-Lösung</h4>
<p>Auf Wunsch einiger Leser habe ich ein kleines Plugin erstellt, welches den Titel des Beitrags in die Funktion body_class() schreibt. Man muss also lediglich das Plugin aktivieren und die WordPress Standard-Funktion body_class() im body-Tag verwenden - wenn sie nicht schon im Theme integriert ist. In der Regel findet das im Template <code>header.php</code> statt.</p>
<pre><code class="php">
&lt;body &lt;?php body_class(); ?&gt;&gt;
</code></pre>
<p>Die Version 0.1 sieht wie folgt aus:</p>
<pre><code>
&lt;?php
/**
 * Plugin Name: Title 2 body_class
 * Plugin URI: http://bueltge.de/wordpress-theme-in-abhaengigkeit-des-titel/397/
 * Text Domain: title2bodyclass
 * Domain Path: /languages
 * Description: Add the title of the post to the boy_class-function
 * Author: Frank B&amp;uuml;ltge
 * Version: 0.1
 * Author URI: http://bueltge.de/
 * Donate URI: http://bueltge.de/wunschliste/
 * License: GPL
 * Last change: 26.07.2010 10:37:23
 */ 

/**
License:
==============================================================================
Copyright 2010 Frank Bueltge  (email : frank@bueltge.de)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

Requirements:
==============================================================================
This plugin requires WordPress &gt;= 2.8 and tested with PHP Interpreter &gt;= 5.2.9
*/

if ( !class_exists('title2body_class') ) {
	
	global $wp_version;
	if ( !function_exists ('add_action') || version_compare($wp_version, &quot;2.8alpha&quot;, &quot;&lt;&quot;) ) {
		if (function_exists ('add_action'))
			$exit_msg = 'The plugin requires WordPress 2.8 or newer. &lt;a href=&quot;http://codex.wordpress.org/Upgrading_WordPress&quot;&gt;Please update WordPress&lt;/a&gt; or delete the plugin.';
		else
			$exit_msg = '';
		header('Status: 403 Forbidden');
		header('HTTP/1.1 403 Forbidden');
		exit($exit_msg);
	}
	
	class title2body_class{
	
		function __construct() {
			
			add_action( 'body_class', array( &amp;$this, 'title_body_class' ) );
		}
		
		function title_body_class($classes) {
			global $post;
			
			$classes[] = sanitize_title_with_dashes( get_the_title( $post-&gt;ID ) );
			
			return $classes;
		}
	}
	
	function title2body_class_start(){
		new title2body_class();
	}

	add_action('plugins_loaded', 'title2body_class_start');
}
?&gt;
</code></pre>
<p>Download des Plugins <strong>Title 2 body_class</strong>: <a href="http://bueltge.de/wp-content/download/wp/plugins/title2body-class.zip">title2body-class.zip</a> (1 kByte)<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-theme-in-abhaengigkeit-des-titel/397/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-theme-in-abhaengigkeit-des-titel/397/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress IDs, Classes &amp; Tag Referenz</title>
		<link>http://bueltge.de/wordpress-ids-classes-tag-referenz/1102/</link>
		<comments>http://bueltge.de/wordpress-ids-classes-tag-referenz/1102/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 09:45:50 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Linktipp]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1102</guid>
		<description><![CDATA[Wer mit Stylesheets im Bezug auf WordPress Themes arbeitet, der braucht immer diverse Klassen und IDs, um das Design an die jeweiligen Anforderungen anzupassen. Aktuell gibt es eine Referenz als PDF-Dokument  zum freien Download im Blog von Banhawi. Wer also ebenso etwas schnelles zum Nachschlagen benötigt und nicht erst Firebug und co. benutzen will, der sollte mal dort  vorbei schauen.]]></description>
			<content:encoded><![CDATA[<p>Wer mit Stylesheets im Bezug auf WordPress Themes arbeitet, der braucht immer diverse Klassen und IDs, um das Design an die jeweiligen Anforderungen anzupassen.<br />
Aktuell gibt es eine Referenz als <a href="http://banhawi.com/2010/02/banhawis-wordpress-ids-classes-tags-referenece/">PDF-Dokument</a> zum freien Download im <a href="http://banhawi.com/2010/02/banhawis-wordpress-ids-classes-tags-referenece/">Blog von Banhawi</a>. Wer also ebenso etwas schnelles zum Nachschlagen benötigt und nicht erst Firebug und co. benutzen will, der sollte mal <a href="http://banhawi.com/2010/02/banhawis-wordpress-ids-classes-tags-referenece/">dort</a> vorbei schauen.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-ids-classes-tag-referenz/1102/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-ids-classes-tag-referenz/1102/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Stylesheet laden, wenn die WordPress Galerie im Beitrag ist</title>
		<link>http://bueltge.de/stylesheet-laden-wenn-wordpress-galerie-beitrag/1090/</link>
		<comments>http://bueltge.de/stylesheet-laden-wenn-wordpress-galerie-beitrag/1090/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 00:06:37 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linktipp]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=1090</guid>
		<description><![CDATA[Im Bezug auf die bessere Gallery ist es eigentlich nicht nötig das Stylesheet zu laden, wenn es keine Gallery gibt, insofern ist es also lohnend, wenn man im Vorfeld prüft, ob die Gallery im Beitrag genutzt wird und nur dann das Stylesheet laden. Dazu muss man die Beitrag parsen und das kann man auf zwei Arten tun.]]></description>
			<content:encoded><![CDATA[<p>Im Bezug auf die <a href="http://dynamicinternet.eu/blog/2009-11-06/eine-loesung-fuer-die-wordpress-galerie/">bessere Gallery</a> ist es eigentlich nicht nötig das Stylesheet zu laden, wenn es keine Galerie gibt, insofern ist es also lohnend, wenn man im Vorfeld prüft, ob die Gallery im Beitrag genutzt wird und nur dann das Stylesheet laden. Dazu muss man die Beitrag parsen und das kann man auf zwei Arten tun.<br />
<span id="more-1090"></span><br />
Die klassische Lösung ist den Content in der Ausgabe zu parsen und den Shortcode zu suchen, klassisches PHP <a href="http://de2.php.net/manual/de/function.strstr.php"><code>strstr</code></a>. Je nach Ergebnis wird das Stylesheet geladen.<br />
<code>if ( strstr($post-&gt;post_content, '[gallery') )</code>.<br />
Dies kostet natürlich Zeit und Performance, was man eigentlich meiden möchte. Insofern ist es besser, wenn man den Beitrag im Vorfeld parsen kann. In diesem Zusammenhang gibt es einen <a href="http://wordpress.org/support/topic/350167#post-1344676">Tread im Forum von WordPress</a>, welches genau dazu eine erstklassige Lösung von <a href="http://w-shadow.com/">WhiteShadow</a> hat und diesen Ansatz kann man natürlich auch für das Laden des Stylesheet nutzen, wenn es um die Gallery geht.</p>
<pre><code class="php">
// onyl css, when post has a gallery
function gallery_stylesheet($posts) {
	if ( empty($posts) )
		return $posts;

	$found = false;

	foreach ($posts as $post) {
		if ( stripos($post-&gt;post_content, '[gallery') )
			$found = true;
			break;
		}

	if ($found)
		wp_enqueue_style( 'gallery-stylesheet', get_bloginfo('stylesheet_directory') . '/gallery.css', false, false, 'screen' );

	return $posts;
}
add_action('the_posts', 'gallery_stylesheet');
</code></pre>
<p>Diesen Ansatz kann man natürlich auch nutzen für das Laden von Scripten,</p>
<pre><code class="php">
// onyl js, when post has a gallery
function my_script($posts) {
	if ( empty($posts) )
		return $posts;

	$found = false;

	foreach ($posts as $post) {
		if ( stripos($post-&gt;post_content, '[gallery') )
			$found = true;
			break;
		}

	if ($found)
		wp_enqueue_script( 'my-script', get_bloginfo('stylesheet_directory') . '/script.js', false, false, true );

	return $posts;
}
add_action('the_posts', 'my_script');
</code></pre>
<p>Weitere Hinweise zum Einbinden von JavaScript- und CSS-Dateien gibt es <a href="http://bueltge.de/javascript-bibliotheken-in-und-aus-wordpress-nutzen/808/">in einem anderen Beitrag</a> zum Thema.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/stylesheet-laden-wenn-wordpress-galerie-beitrag/1090/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/stylesheet-laden-wenn-wordpress-galerie-beitrag/1090/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WP Basis Theme in (x)HTML5</title>
		<link>http://bueltge.de/wp-basis-theme-in-xhtml5/984/</link>
		<comments>http://bueltge.de/wp-basis-theme-in-xhtml5/984/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 13:18:48 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP2.7]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=984</guid>
		<description><![CDATA[Ich möchte die Kosten, die dieses Blog und die kleinen Nebenprodukte verursachen gern deckeln, so dass ich keinen Aufwand in die finanziellen Kosten des Webspace stecke, sondern in die Inhalte. Daher wird es also ab jetzt die Möglichkeit geben, eine Fläche zu mieten.]]></description>
			<content:encoded><![CDATA[<p><img class="alignrightob" src="http://wpbasis.de/images/wpbasis_logo.png" alt="Logo WP Basis Theme" /><br />
Das <a href="http://wpbasis.de/">WP Basis Theme</a> erfreut sich großer Beliebtheit und die Arbeit daran wird von diversen Leuten unterstützt, sei es mit Übersetzungsarbeit, Fehlerkorrekturen, Verbesserungsvorschlägen oder Tests. Daher auch hier nochmal Danke an alle Helfer!</p>
<p>Da sich HTML5 aber schon geraume Zeit auf meiner ToDo-Liste befindet und ich ein Thema benötige um zu starten, habe ich begonnen das Basis Theme in HTML5 zu bauen, so dass WordPress direkt damit arbeiten kann. Dabei habe ich auch gleich ein Beispiel-Stylesheet beigelegt, so dass es ein Design gibt.<br />
<span id="more-984"></span><br />
Zusätzlich gibt es eine kleines Stylesheet, welches die neuen Bereiche und ihre Tags darstellt, so dass man bei einem Einstieg in HTML5 ein wenig visueller arbeiten kann. Das Stylesheet ist nicht im Code verdrahtet und kann zum Beispiel einfach und unkompliziert mit Hilfe des WebDeveloper-Toolbar hinzugefügt werden. Zu finden ist das Stylesheet in der Struktur unter <code>layout/html5areas/html5areas.css</code>. Ein Beitrag ist damit wie folgt ersichtlich.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wpbasis-html5/html5areas.png" alt="HTML5 visuell dargestellt" /></p>
<p>Diverse Punkte sind aktuell nur im Opera > 9.5 sichtbar. Dazu zählen alle Inhalte des Kommentar-Formulars. Dort wurde unter anderem Pflichtfelder übergeben, wenn sie durch WordPress gesetzt werden und die <code>type</code>-Attribute haben der Aufgabe bezogen ihren Wert erhalten, daher die Image-Zuordnung im Opera.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wpbasis-html5/form-opera.png" alt="Kommentarformular in Opera 9.6" /></p>
<h3>Arbeit mit...</h3>
<p>Als Nachschlagewerk dient mit die Übersicht des w3c und das Blog zum Thema HTML5. Leider ist die Arbeit beim Validieren aktuell nicht so einfach, da mir kein Validator bekannt ist, der lokal validieren kann. Über Tipps würde ich mich daher freuen. Für den IE liefere ich ein Script mit, welches ihm den Umgang mit diversen Elementen beibringt.</p>
<ul>
<li><a href="http://dev.w3.org/html5/spec/Overview.html">HTML 5</a></li>
<li><a href="http://html5doctor.com/">html5doctor</a></li>
<li><a href="http://html5.validator.nu/">HTML5 Validator</a></li>
<li><a href="http://remysharp.com/2009/01/07/html5-enabling-script/">HTML5 enabling script</a></li>
</ul>
<h3>Warum das alles?</h3>
<p>Ich würde mir wünschen, dass der eine oder andere mal drüber schaut, vielleicht Leute, die schon mehr mit HTML5 gearbeitet haben und tief in der Materie stecken. Rückmeldungen wären toll und vielleicht erweitert der eine oder andere das Theme um bestimmte Tags oder Elemente.</p>
<h3>Wie komme ich daran?</h3>
<p>Es gibt hier keinen Download und die Arbeit daran wird in der freien Zeit weiter gehen und daher wird es immer wieder Veränderungen geben. Aktuell stehen nur wenige Grundzüge und es soll den gleichen Stand wie das WP Basis Theme bekommen. Um sich in das Theme einzuarbeiten oder einfach mal drüber zu schauen steht ein <a href="http://code.google.com/p/wp-basis-theme/source/browse/#svn/tags/html5">Repository</a> bereit. Dort kann auch Kommentiert und diskutiert werden.</p>
<p>Der Ordner mit allen Inhalten findet sich im Bereich <a href="http://code.google.com/p/wp-basis-theme/source/browse/#svn/trunk/basis-html5">trunk/basis-html5</a> des <a href="http://code.google.com/p/wp-basis-theme/source/browse/#svn">SVN</a>.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wp-basis-theme-in-xhtml5/984/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wp-basis-theme-in-xhtml5/984/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:thumbnail url="http://wpbasis.de/images/wpbasis_logo.png" />
		<media:content url="http://wpbasis.de/images/wpbasis_logo.png" medium="image">
			<media:title type="html">Logo WP Basis Theme</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wpbasis-html5/html5areas.png" medium="image">
			<media:title type="html">HTML5 visuell dargestellt</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wpbasis-html5/form-opera.png" medium="image">
			<media:title type="html">Kommentarformular in Opera 9.6</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Design Tweaks</title>
		<link>http://bueltge.de/wordpress-design-tweaks/939/</link>
		<comments>http://bueltge.de/wordpress-design-tweaks/939/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 07:27:08 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Webdeveloper]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP2.8]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=939</guid>
		<description><![CDATA[Mit WordPress 2.7 wurde uns ein neues Design im Backend beschert, diesmal mit viel Aufwand und Analyse um ein angenehmes Arbeiten zu ermöglichen und möglichst viel Inhalt strukturiert darzustellen. Aus meiner Sicht ist das gelungen und die Arbeit mit WordPress war für mich persönlich noch nie so angenehm. Da ich aber WordPress vorrangig im Unternehmensumfeld einsetze, die Corporate Identity auch im Backend realisiere und Anwender von Laie bis Profi habe, sind die Anforderungen doch extrem unterschiedlich. Dabei habe ich bisher auf mein Plugin Adminimize gesetzt, das Backend auf die Anforderungen reduziert und das Design dem Corporate Design angepasst.]]></description>
			<content:encoded><![CDATA[<p>Mit WordPress 2.7 wurde uns ein neues Design im Backend beschert, diesmal mit viel Aufwand und Analyse um ein angenehmes Arbeiten zu ermöglichen und möglichst viel Inhalt strukturiert darzustellen. Aus meiner Sicht ist das gelungen und die Arbeit mit WordPress war für mich persönlich noch nie so angenehm. Da ich aber WordPress vorrangig im Unternehmensumfeld einsetze, die Corporate Identity auch im Backend realisiere und Anwender von Laie bis Profi habe, sind die Anforderungen doch extrem unterschiedlich. Dabei habe ich bisher auf mein Plugin <a href="http://bueltge.de/wordpress-admin-theme-adminimize/674/">Adminimize</a> gesetzt, das Backend auf die Anforderungen reduziert und das Design dem Corporate Design angepasst.</p>
<p>Aktuell macht Jane Wells im WordPress Team sich einige <a href="http://wordpress.org/development/2009/04/design-tweaks-whos-in-an-idea-in-three-acts/">Gedanken zum Backend Design und ruft zu Ideen auf</a>, die das Backend nicht neu gestalten, nur optimieren, so dass Nutzer nicht verschreckt werden. Aus meiner Sicht ist es gerade da sinnvoll, dass man die Hooks in WordPress nutzt und optionale Design einbringt, die der jeweilige Nutzer wählen kann. SO hole ich auch diverse Designs in Backend und überlasse die Wahl dem Nutzer. Lediglich die übergeordneten Themen, wie Farben und Logo, gebe ich im Rahmen des Corporate Designs vor. Da ich <a href="http://bueltge.de/wordpress-admin-theme-adminimize/674/">Adminimize</a> in den letzten Nächten erweitert haben, besonders gepuscht durch den Spendenmarathon der lieben Leserin <a href="http://tevarra.net">Samantha Phoumarath</a>.<br />
<span id="more-939"></span><br />
<a href="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_open_menu.png" title="klick für Zoom"><img class="centered" src="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_open_menu450.png" alt="Screenshot Fixed Design" /></a></p>
<p>Der obige Screenshot mag auf den ersten Blick nicht sonderlich das Design von WordPress verändern, aber es ist anders, anders in der Arbeitsweise - Header und Menu sind fix, so dass man aus jeder Scrollposition darauf zugreifen kann. Eine ganze Reihe von Nutzern empfinden das Arbeiten so besser und angenehmer. Als Hinweis sei aber vermerkt, dass meine jetzige Lösung nur in Browsern funktioniert, die <code>fixed</code> via CSS akzeptieren.</p>
<p>Im weiteren habe ich diverse Bereiche verkleinert, so sind Meta Boxen wesentlich schmaler; es ist mehr Platz ohne den Whitespace zu reduzieren.</p>
<p>Im weiteren habe ich ein alternatives Design im Plugin untergebracht, welches den Header verändert und die Navi damit um 50 Pixel nach oben holt. Auch dies wird gern genutzt, wobei hier schon der Wunsch des fixed Menu aufkam, aber bisher nicht umgesetzt wurde.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_tweak.png" alt="Screenshot Fixed Design" /></p>
<p>Vielleicht hat der eine oder andere Ideen, Wünsche und Hinweise zum Plugin, zum Design, die Kommentarfunktion steht offen.</p>
<p>Das <a href="http://bueltge.de/wordpress-admin-theme-adminimize/674/">Plugin</a> selbst ist vorrangig für andere Zwecke erstellt und verfügt aktuell über sehr viele Optionen, so kann man den Bereich Schreiben Beitrage und Seiten einschränken, die Oberfläche der Links beeinflussen, globale Bereiche verändern, HEader-Bereiche einschränken, verändern, Dashboard und Footer deaktivieren, umleiten mit eigenen Inhalten befüllen oder auch eigene Optionen hinzubringen, in dem man Klassen und IDs hinterlegt, einen Namen vergibt und diese dann wieder abhängig von der Benutzerrolle, wobei auch eigene Rollen unterstützt werden, deaktivierbar sind.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-design-tweaks/939/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-design-tweaks/939/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_open_menu450.png" />
		<media:content url="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_open_menu450.png" medium="image">
			<media:title type="html">Screenshot Fixed Design</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/adminimize/fb_fixed_head_navi_tweak.png" medium="image">
			<media:title type="html">Screenshot Fixed Design</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Link vs. @import</title>
		<link>http://bueltge.de/link-vs-import/934/</link>
		<comments>http://bueltge.de/link-vs-import/934/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 18:51:06 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Linktipp]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Webdeveloper]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=934</guid>
		<description><![CDATA[Die Implementierung von Stylesheets kann man mit unterschiedlichen Anweisungen machen und ich bekomme immer wieder die Frage, warum ich mich für <code>&#60;link</code> entschieden habe und nicht via <code>@import</code> die Stylesheets einbinde.]]></description>
			<content:encoded><![CDATA[<p>Die Implementierung von Stylesheets kann man mit unterschiedlichen Anweisungen machen und ich bekomme immer wieder die Frage, warum ich mich für <code>&lt;link</code> entschieden habe und nicht via <code>@import</code> die Stylesheets einbinde.<br />
Gerade in meinem <a href="http://code.google.com/p/wp-basis-theme/">Basis-Theme für WordPress</a> scheint das aufzufallen und diverse Nutzer zu stören.</p>
<p>Der klare Umschwung ist bei mir nach dem Lesen des Buches &#8222;<a href="https://www.amazon.de/dp/389721850X?tag=buedebyltgde-21&#038;camp=1410&#038;creative=6378&#038;linkCode=as1&#038;creativeASIN=389721850X&#038;adid=1MMXCF2MX45MDJAGA3YM&#038;">High Performance Websites</a>&#8220; von Steve Souders, Chief Performance Yahoo! bei Yahoo!, gefallen und ich löse nun alles per <code>&lt;link</code>.<br />
Nun ist mir aber die öffentlich zugängliche Seite des Buchautors wieder unter gekommen und dort publiziert Steve einen Beitrag zum Thema. Diesen Link möchte ich damit einfach mal als Begründung, Rechtfertigung oder <a href="http://www.stevesouders.com/blog/2009/04/09/dont-use-import/">Lesetipp</a> hier präsentieren.</p>
<p><strong>Die klare Aussage:</strong> Kein <code>@import</code> nutzen.</p>
<p>Spannender Artikel, der sicher bei dem einen oder anderen Veränderungen hervorruft. Daher der Tipp, den Beitrag <a href="http://www.stevesouders.com/blog/2009/04/09/dont-use-import/">don’t use @import</a> zum Buch zu lesen.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/link-vs-import/934/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/link-vs-import/934/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>CSS Naked Day 2009</title>
		<link>http://bueltge.de/css-naked-day-2009/929/</link>
		<comments>http://bueltge.de/css-naked-day-2009/929/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 06:44:24 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Webstandard]]></category>
		<category><![CDATA[xHTML]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=929</guid>
		<description><![CDATA[Ich habe vor einigen Wochen schon mal darauf <a href="http://bueltge.de/es-wird-wieder-nackt/899/">hingewiesen</a>: auch in diesem Jahr gibt es in alter Tradition den <a href="http://bueltge.de/3-css-naked-day-9april-2008/628/">Naked Day</a>, nun zum vierten mal. Websites sind aufgerufen sich nackt dem Leser zu präsentieren, ohne Gewand des Stylesheets mit reinem Markup stellen sich diverse Websites der Öffentlichkeit.]]></description>
			<content:encoded><![CDATA[<p><img class="alignrightob" src="http://bueltge.de/wp-content/images/naked-day-09.png" alt="Naked Day 2009" /><br />
Ich habe vor einigen Wochen schon mal darauf <a href="http://bueltge.de/es-wird-wieder-nackt/899/">hingewiesen</a>: auch in diesem Jahr gibt es in alter Tradition den <a href="http://bueltge.de/3-css-naked-day-9april-2008/628/">Naked Day</a>, nun zum vierten mal. Websites sind aufgerufen sich nackt dem Leser zu präsentieren, ohne Gewand des Stylesheets mit reinem Markup stellen sich diverse Websites der Öffentlichkeit - Datum ist der <em>9.April 2009</em>.</p>
<p>Hintergründe, wieso, weshalb und warum sind im Artikel und in den Kommentaren zum <a href="http://bueltge.de/3-css-naked-day-9april-2008/628/">Naked Day ´08</a> und im folgenden Artikel zu finden.</p>
<p>Auch in diesem Jahr kann man sich wieder <a href="http://naked.dustindiaz.com/#signup">registrieren</a> und <a href="http://bueltge.de/3-css-naked-day-9april-2008/628/">Code-Unterstützung</a> integrieren, um sich nicht händisch um das de- und aktivieren des Stylesheets zu kümmern.</p>
<p>Der Naked Day ist eine kontroverse Aktion, der eine mag diese Idee und der andere hasst sie. Entscheidet selbst, <a href="http://bueltge.de/3-css-naked-day-9april-2008/628/">lest die Hintergründe</a>, denkt darüber nach oder diskutiert in geeigneter Runde. Aus meiner Sicht kann ein Naked Day nicht nur schamlos sein, er kann die Makel und Verbesserungen hervorrufen, die in der Basis statt finden und nicht via Schönheits-OP mit CSS.</p>
<p><em>View this site in alternate languages:</em> <a href="http://naked.dustindiaz.com/">English</a>, <a href="http://blog.mynameisearl.cz/css-naked-day/">Czech</a>, <a href="http://blog.taoxian.info/laoshi/2009-css-naked-day.html">Chinese</a>, <a href="http://www.ascolteo.fr/cssnakedday.html">French</a>, <a href="http://hangunsworld.com/naked/">Korean</a></p>
<h3>Die Idee</h3>
<p>Hinter dieser Aktion steht die Idee die Webstandards zu fördern. Dazu gehören der korrekte Gebrauch von (x)HTML, semantisches Markup, hierarchische Struktur und zu letzt das Spiel der Wörter - der Inhalt. Es ist an der Zeit, deinen &lt;body&gt; der Öffentlichkeit zu zeigen. Damit zeigt man, dass gute Webseiten auch ohne Design leserlich sind.<br />
<span id="more-929"></span></p>
<h3>Wie macht man mit?</h3>
<p>Fülle das <a href="http://naked.dustindiaz.com/#signup">kleine Formular</a> aus und deine Webseite wird in die offizielle Liste aufgenommen.</p>
<p>Am 9.April 2009 werden <strong>alle Formatierungen der Webseite entfernt</strong>, völlige Befreiung vom Design.</p>
<p>(optional): Setze den folgenden Hinweis am obersten Punkt deiner Seite.</p>
<pre><code>
&lt;h3&gt;What happened to the design?&lt;/h3&gt;
&lt;p&gt;To know more about why styles are disabled on this website visit the
&lt;a href=&quot;http://naked.dustindiaz.com&quot; title=&quot;Web Standards Naked Day Host Website&quot;&gt;
Annual CSS Naked Day&lt;/a&gt; website for more information.&lt;/p&gt;
</code></pre>
<p>Dieser Hinweis dient unter anderem als Hinweis für deine Besucher und sie wissen schnell warum und wieso dein &lt;body&gt; nackt ist.</p>
<h3>Warum wieder?</h3>
<p>Einige Leser sind interessiert und wollen wissen, warum es am 9.April zu dieser Aktion kommt.</p>
<ul>
<li>Die Aktion soll auf einen Dienstag, Mittwoch oder Donnerstag fallen (Viel-Traffic-Tage)</li>
<li>Möglichst in der ersten Woche des April</li>
<li>Es soll nie am 1.April sein (internationaler Scherz- und Streichtag)</li>
<li>Es soll ausreichend Zeit zur Ankündigung sein</li>
</ul>
<h3>Einbinden via PHP</h3>
<p>Um die nackten Tatsachen zu zeigen, kann man mittels PHP-Funktion den Naked Day automatisch einleiten. Folgende Funktion dient dieser Aufgabe.<br />
WordPress User hinterlegen diese Funktion beispielsweis ein der Datei <code>functions.php</code> oder direkt im Template, die <code>header.php</code>. Alternativ kann auch das Plugin &#8222;<a href="http://www.ajalapus.com/downloads/css-naked-day/">WordPress Naked Day</a>&#8220; genutzt werden.</p>
<pre><code>
&lt;?php
function is_naked_day($d) {
  $start = date('U', mktime(-12, 0, 0, 04, $d, date('Y')));
  $end = date('U', mktime(36, 0, 0, 04, $d, date('Y')));
  $z = date('Z') * -1;
  $now = time() + $z; 
  if ( $now &gt;= $start &#038;& $now &lt;= $end ) {
    return TRUE;
  }
  return FALSE;
}
?&gt;
</code></pre>
<p>Die Funktion gibt <code>TRUE</code> aus, wenn es sich um den 9.April 2008 handelt. Daher gilt es nun die Funktion auszuwerten und jeweils zu reagieren. Dazu muss der Link zum Stylesheet in die <code>if</code>-Abfrage.</p>
<pre><code>
&lt;head&gt;
...
&lt;?php
if ( is_naked_day(9) ) {
  echo '&lt;!-- Naked Day hat kein Style --&gt;';
} else {
  echo '&lt;link rel="stylesheet" type="text/css" href="styles.css" /%gt;';
}
?&gt;
...
&lt;/head&gt;
</code></pre>
<p>In WordPress sollte das dann in der <code>header.php</code> eingepflegt werden. Das könnte dann beispielsweise so aussehen:</p>
<pre><code>
&lt;?php
if ( is_naked_day(9) ) {
  echo '&lt;!-- Naked Day hat kein Style --&gt;';
} else { ?&gt;
	&lt;style type="text/css" media="screen"&gt;
		@import url(&lt;?php bloginfo('stylesheet_url'); ?&gt;);
	&lt;/style&gt;
&lt;?php }
?&gt;
</code></pre>
<h3>Warte… sind das 48 Stunden?</h3>
<p>Das ist richtig. CSS Naked Day dauert für den Zeitraum eines internationalen Tages. Vom technischen Standpunkt aus ist der &#8222;9. April&#8220; überall in der Welt 48 Stunden lang. Um zu garantieren, dass die Website für jeden auf der ganzen Welt  Nackt ist, sind die 48 Stunden pure Nacktheit zu präsentieren.</p>
<h3>Tools und Plugins</h3>
<p>Die Aktion ist unter einer ganzer Reihe von Entwicklern bekannt und so gibt es auch eine große Anzahl von Tools und Plugins um die Aktion zu unterstützen. Schau die auf der <a href="http://naked.dustindiaz.com/">Aktions-Seite</a> um, dort findet man eine aktuelle Liste der Tools und Plugins; um nur Einige zu nennen: <a href="http://www.ajalapus.com/downloads/css-naked-day/">WordPress Plugin</a>, <a href="http://code.google.com/p/php-naked-day-api/">PHP class</a>, <a href="http://tore.darell.no/posts/ready_to_take_my_clothes_off">Rails Helper</a>, <a href="http://the-gay-bar.com/index.php?/archives/1253-CSS-naked-day.html">Serendipity Plugin</a>, <a href="http://downloads.sourceforge.net/lifetype/1.2_cssnaked.zip?download">LifeType Plugin</a>, ...<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/css-naked-day-2009/929/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/css-naked-day-2009/929/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/naked-day-09.png" />
		<media:content url="http://bueltge.de/wp-content/images/naked-day-09.png" medium="image">
			<media:title type="html">Naked Day 2009</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Ausgabe des WordPress Admin für Seiten, Beiträge und Kommentare anpassen</title>
		<link>http://bueltge.de/ausgabe-des-wordpress-admin-fuer-seiten-beitraege-und-kommentare-anpassen/926/</link>
		<comments>http://bueltge.de/ausgabe-des-wordpress-admin-fuer-seiten-beitraege-und-kommentare-anpassen/926/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 08:10:42 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Admin]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP2.8]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=926</guid>
		<description><![CDATA[Je nach Arbeitsweise empfindet es der eine oder andere Nutzer im Backend von WordPress recht störend, dass man maximal 20 Beiträge, Seiten und Kommentare pro Seite gelistet bekommt. Gerade wenn man mit vielen Übersichten arbeiten muss und eine schnelle Verbindung hat, dann kann eine erhöhte Anzahl nützlich sein. Wie man das anpasst und ein wenig mit CSS in der Darstellung optimiert, dazu hier einige Tipps.]]></description>
			<content:encoded><![CDATA[<p>Je nach Arbeitsweise empfindet es der eine oder andere Nutzer im Backend von WordPress recht störend, dass man maximal 20 Beiträge, Seiten und Kommentare pro Seite gelistet bekommt. Gerade wenn man mit vielen Übersichten arbeiten muss und eine schnelle Verbindung hat, dann kann eine erhöhte Anzahl nützlich sein. Wie man das anpasst und ein wenig mit CSS in der Darstellung optimiert, dazu hier einige Tipps.<br />
<span id="more-926"></span></p>
<h3>Ab WordPress Version 2.8</h3>
<p>Mit WordPress 2.8 kommt ein neuer Wert in die nutzereigenen Optionen pro Seite im Backend. Damit kann jeder Nutzer seine Vorlieben in dem Umfang der Beiträge, Seiten und Kommentare einstellen. Will man das ganze übergreifend lösen und auch schon im Vorfeld von WordPress 2.8, dann kann die folgende Syntax helfen.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/posts_per_page.png" alt="Post per Page 2.8" title="mit WordPress 2.8 kommt eine Option in den Seiten des Backend hinzu" /></p>
<h3>Alternative Plugin</h3>
<p>Einbetten sollte man die Syntax in ein Plugin, um die Lösung zu kapseln.<br />
Ich stelle hier bewusst kein Plugin zur Verfügung, da mich Support der bestehenden Lösungen eh schon überfordert. Es ist also eher als Basis für Leute gedacht, die hier ansetzen wollen und als Speicher für mich, wenn ich es wieder mal benötige.</p>
<p>Einige Bemerkungen habe ich direkt am Quellcode hinterlegt, so dass es verständlicher wird. Ebenso lade ich eine CSS-Datei, der Inhalt ist im Anschluss zu finden, die bei der großen Anzahl an Einträgen, dass Design etwas ändert und so ein wenig mehr Übersicht schaft.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/posts_per_page2.png" alt="Post per Page optimiert" title="via CSS die Darstellung reduziert" /></p>
<pre><code>
// Wert für Beiträge
define( 'FB_CAP_PER_POST', 100 );
// Wert für Seiten
define( 'FB_CAP_PER_PAGE', 100 );
// Wert für Kommentare
define( 'FB_CAP_PER_COMMENT', 100 );

// nur im Adminbereich
if ( is_admin() ) {
	global $pagenow;
	
	if ( $pagenow == 'edit-pages.php' ) {
		add_filter( 'manage_pages_query', 'page_ChangeAdminPagination' );
		add_action( 'admin_print_styles', 'AddMyStylesheet' );
	}
	if ( $pagenow == 'edit.php' ) {
		add_action( 'admin_head', 'post_ChangeAdminPagination' );
		add_action( 'admin_print_styles', 'AddMyStylesheet' );
	}
	if ( $pagenow == 'edit-comments.php' )
		add_filter( 'comments_per_page', 'comment_ChangeAdminPagination' );
}
	
function post_ChangeAdminPagination() {
	global $wp_query;
	
	if ( $wp_query->query_vars[s] == '' ) {
		$per_post = (int) FB_CAP_PER_POST;
		$wp_query->query( 'showposts=' . $per_post );
	}
}

function page_ChangeAdminPagination($query) {
	global $per_page;
	
	$per_page = (int) FB_CAP_PER_PAGE;
	//$query['posts_per_page'] = $per_page;
	$query['posts_per_archive_page'] = $per_page;
	
	return $query;
}

function comment_ChangeAdminPagination($count) {

	$per_comment = (int) FB_CAP_PER_COMMENT;
	
	return $per_comment;
}

function AddMyStylesheet() {
	
		$myStyleFile = WP_PLUGIN_URL . '/change_admin_pagination/css/style.css';
		wp_register_style( 'change_admin_pagination', $myStyleFile );
		wp_enqueue_style( 'change_admin_pagination');
}
</code></pre>
<p>Der folgende Inhalt dient nur dazu, dass der Bereich zum Bearbeiten der jeweiligen Seite oder Beitrags neben dem Eintrag dargestellt wird. Damit wird die Zeile kleiner und man hat mehr Einträge im Blickfeld.</p>
<pre><code>
/**
 * style for smaller tables in admin of WordPress
 * @author Frank Bültge
 * @date 01.04.2009 20:51:59
 */
.post-title strong {
	float: left;
}

.row-actions {
	float: left;
	margin-left: 1% !important;
}

.check-column, tr td {
	padding-bottom: 0 !important;
}


.column-date {
	width: 15% !important;
}

td.date {
	font-size: .6em;
}

td.date abbr {
	float: right;
}
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/ausgabe-des-wordpress-admin-fuer-seiten-beitraege-und-kommentare-anpassen/926/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/ausgabe-des-wordpress-admin-fuer-seiten-beitraege-und-kommentare-anpassen/926/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/posts_per_page.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/posts_per_page.png" medium="image">
			<media:title type="html">mit WordPress 2.8 kommt eine Option in den Seiten des Backend hinzu</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp/posts_per_page2.png" medium="image">
			<media:title type="html">via CSS die Darstellung reduziert</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Seiten &amp; Unterseiten abfragen</title>
		<link>http://bueltge.de/wordpress-seiten-unterseiten-abfragen/908/</link>
		<comments>http://bueltge.de/wordpress-seiten-unterseiten-abfragen/908/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 12:41:28 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Seite]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=908</guid>
		<description><![CDATA[WordPress lässt es zu, dass man zu einer Seite (Page) im Backend entsprechende Unterseiten anlegt. Dies ist unter anderem ein Umstand, warum WordPress nicht selten als CMS in der Verwendung ist. Nun will aber mit Hilfe der Conditional Tags diverse Abfragen starten und darauf reagieren - dann sieht man nicht selten im Template statische Abfragen auf jede ID einer Seite.
Das geht natürlich anders und einfacher wenn es sich um Seiten oder Unterseite dieser Seite handelt.

Mit dieser Lösung kann man dann beispielsweise in Abhängigkeit einer Seite ein spezielles Layout laden und das Frontend so an diverse Anforderungen anpassen. Diese kleine Anforderung nehme ich mal als Beispiel und zeige eine Funktion, die mir die Abfragen zu Seite/Unterseiten gibt und zeige im Anschluss ein Beispiel im Einsatz.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/images/wp/wp_subpage.png" alt="Subpage in WordPress" /><br />
WordPress lässt es zu, dass man zu einer Seite (Page) im Backend entsprechende Unterseiten anlegt. Dies ist unter anderem ein Umstand, warum WordPress nicht selten als CMS in der Verwendung ist. Nun will man aber mit Hilfe der Conditional Tags diverse Abfragen starten und darauf reagieren &#8211; dann sieht man nicht selten im Template statische Abfragen auf jede ID einer Seite.<br />
Das geht natürlich anders und einfacher wenn es sich um Seiten oder Unterseite dieser Seite handelt.</p>
<p>Mit dieser Lösung kann man dann beispielsweise in Abhängigkeit einer Seite ein spezielles Layout laden und das Frontend so an diverse Anforderungen anpassen. Diese kleine Anforderung nehme ich mal als Beispiel und zeige eine Funktion, die mir die Abfragen zu Seite/Unterseiten gibt und zeige im Anschluss ein Beispiel im Einsatz.<br />
<span id="more-908"></span></p>
<h3>Hintergrund</h3>
<p>Erstellt man in WordPress eine neue Seite, keinen Beitrag, dann kann man diesen in den Attributen als Unterseite einer bestehenden Seite definieren. Damit lassen sich nicht nur Baumansichten erstellen, sondern auch Strukturen abbilden, die nicht selten in einem CMS benötigt werden.</p>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/wp_subpage_new.png" alt="Subpage in WordPress erstellen" /></p>
<p>Will man in Abhängigkeit der Seite eine Ausgabe steuern, dann nutzt man den Conditional Tag <code><a href="http://codex.wordpress.org/Function_Reference/is_page">is_page()</a></code>,mit welchem man dann die Anforderung umsetzt. Um nun aber nicht für jede Seite diesen Tag zu nutzen und das Template damit ständig anfassen zu müssen, kann man eine einfache Funktion nutzen, die nach Abfragen der Hauptseite auch ein wahr (<code>true</code>) zurück gibt, wenn es sich um eine Unterseite der Hauptseite handelt.</p>
<h3>Lösung</h3>
<p>Diese Funktion, folgende Syntax, kommt in die <code>functions.php</code> des Themes.</p>
<pre><code>
// check ID post and child-post
function has_parent( $post, $post_id ) {
	if ($post->ID == $post_id)
		return true;
	elseif ($post->post_parent == 0)
		return false;
	else
		return has_parent( get_post($post->post_parent), $post_id );
}
</code></pre>
<p>Diese kleine Funktion prüft, ob die ausgegeben Seite ein Seite oder Unterseite einer Seite mit der übergebenen ID ist; klingt kompliziert, liegt aber nur am Satzbau. Irgendwie ist es schon zu spät; ja, ich weiß &#8211; ihr lest es später, denn ich nutze das zeitversetzte Veröffentlichen. Aber zurück zur Technik. Diese Funktion kann nach dem Ablegen im Theme nun in allen Templates genutzt werden. Das folgende Beispiel prüft, ob es sich um eine Seite oder Unterseite der ID 1 handelt und wenn ja, dann wird das Stylesheet Alternative 1 (<code>alternative_1.css</code>) ausgegeben.</p>
<p>Anderweitig wird auf ID 2 geprüft oder passt keines der Abfragen, dann kommt das Standard-Stylesheet zum Einsatz.</p>
<p>Um die Möglichkeiten noch ein wenig zu erweitern, setze ich in der Abfrage die Variable <code>$bodyclass</code>, die ich im body-Tag zur Ausgabe bringe. Damit habe ich dann eine weitere Anlaufstelle und eine entsprechendes Design je nach Seite zu realisieren.</p>
<pre><code class="php">
    &lt;?php
    $bodyclass = '';
    if ( function_exists('has_parent') ) {
	    if ( has_parent($wp_query-&gt;post, 1) ) {
	        echo '&lt;link rel=&quot;stylesheet&quot; href=&quot;' . get_bloginfo('stylesheet_directory') . '/alternative_1.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;' . &quot;\n&quot;;
	        $bodyclass = 'class=&quot;alternative_1&quot;';
	    } elseif ( has_parent($wp_query-&gt;post, 2) ) { 
	        echo '&lt;link rel=&quot;stylesheet&quot; href=&quot;' . get_bloginfo('stylesheet_directory') . '/alternative_2.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;' . &quot;\n&quot;;
	        $bodyclass = 'class=&quot;alternative_2&quot;';
	    } else {
	    	echo '&lt;link rel=&quot;stylesheet&quot; href=&quot;' . get_bloginfo('stylesheet_directory') . '/default.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;' . &quot;\n&quot;;
	    }
  	} ?&gt;

&lt;/head&gt;
&lt;body&lt;?php echo ' ' . $bodyclass; ?&gt;&gt;
</code></pre>
<h3>Fazit</h3>
<p>Ich denke, dass diese kleine Möglichkeit eine große Wirkung in der Ausgabe haben kann und vielfältige Möglichkeiten zeigt. Ebenfalls kann man diese Lösung mit dem Wechsel des kompletten Theme realisieren, wie ich es schon im Beitrag &#8222;<a href="http://bueltge.de/wordpress-theme-abhaengigkeit-wechseln/886/">WordPress Theme in Abhängigkeit wechseln</a>&#8220; gezeigt habe.<br />
Vielen Dank für das Lesen und noch mehr Danke ich für Verbesserungen zum Beitrag in den Kommentaren.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-seiten-unterseiten-abfragen/908/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-seiten-unterseiten-abfragen/908/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/wp_subpage.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/wp_subpage.png" medium="image">
			<media:title type="html">Subpage in WordPress</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp/wp_subpage_new.png" medium="image">
			<media:title type="html">Subpage in WordPress erstellen</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Filter für caption-Shortcode in WordPress</title>
		<link>http://bueltge.de/filter-caption-shortcode-wordpress/907/</link>
		<comments>http://bueltge.de/filter-caption-shortcode-wordpress/907/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 14:58:54 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Bild]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[xHTML]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=907</guid>
		<description><![CDATA[Nutz man den &#8222;Mediauploader" in WordPress nicht nur um das Bild hoch zuladen, sondern auch zur Integration in den Beitrag oder die Seite, dann wird, sobald man einen Bildtitel zum Bild hinterlegt, der Shortcode <code>[caption]</code> angelegt und in den Content eingefügt. Der Titel sollte aber gepflegt werden, da er als <code>alt</code>-Attribut zum <code>img</code>-Tag genutzt wird.

Nicht jeder Nutzer ist mit dieser Ausgabe zufrieden und ich zeige mal, wie man darauf zugreifen kann und die Ausgabe ändert.]]></description>
			<content:encoded><![CDATA[<p>Die Überschrift mag nicht sonderlich für sich sprechen und daher erkläre ich ein wenig mehr zum Thema und lege nicht nur einfach meine Code-Schnipsel ab.</p>
<p>Nutzt man den &#8222;Mediauploader" in WordPress nicht nur um das Bild hoch zuladen, sondern auch zur Integration in den Beitrag oder die Seite, dann wird, sobald man einen Bildtitel zum Bild hinterlegt, der Shortcode <code></code> angelegt und in den Content eingefügt. Der Titel sollte aber gepflegt werden, da er als <code>alt</code>-Attribut zum <code>img</code>-Tag genutzt wird.</p>
<p>Nicht jeder Nutzer ist mit dieser Ausgabe zufrieden und ich zeige mal, wie man darauf zugreifen kann und die Ausgabe ändert.</p>
<p><span id="more-907"></span><br />
<img class="centered" src="http://bueltge.de/wp-content/images/wp/wp_mediabox.png" alt="WP Mediabox" /></p>
<p>Ist zum Bild ein Titel vorhanden, dann wird der Shortcode immer eingefügt, der dann einen <code>div</code> zur Ausgabe bringt, der beispielsweise wie folgt aussieht.</p>
<pre><code>
&lt;div id=&quot;attachment_34&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 160px&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-34&quot; title=&quot;1&quot; src=&quot;pfad_zum_bild&quot; alt=&quot;Caption, Bildtitel&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;
&lt;p class=&quot;wp-caption-text&quot;&gt;Caption, Bildtitel&lt;/p&gt;
&lt;/div&gt;
</code></pre>
<p>Nun möchten aber nicht alle Nutzer diesen Shortcode nutzen und die Ausgabe daran anpassen. Man kann im Grunde mit drei Möglichkeiten die Ausgabe beeinflussen.</p>
<ol>
<li>Nach dem Einfügen händisch löschen oder eigenes HTML einbauen</li>
<li>CSS erweitern und den entstehenden <code>div</code> ausblenden</li>
<li>Per Hook eingreifen und den <code>div</code> vor der Ausgabe filtern oder an die eigenen Bedürfnisse anpassen</li>
</ol>
<p>Aus meiner Sicht scheidet Punkt 2 sofort aus, da er nur im Zusammenhang mit CSS funktioniert und damit das Markup noch immer so unzureichend bleibt.<br />
Den ersten Punkt kann man ebenso nicht sauber vertreten, da Risiko beim Vergessen und der Mehraufwand beim Erstellen von Artikeln nicht wirklich angenehm ist.</p>
<p>Widmen wir uns daher Punkt 3 der ausgewählten Möglichkeiten und greifen mit ein wenig PHP ein. Auch dabei gibt es diverse Ansätze und so möchte ich drei recht unterschiedliche Wege zeigen und die Entscheidung zur Nutzung überlasse ich dann euch. Je nach Anforderung wird das sicher auch sehr verschieden ist.</p>
<h3>Schön beim Einfügen löschen</h3>
<p>WordPress fragt den Filter <code>disable_captions</code> ab und lässt damit den Shortcode erstellen: <code>if ( ! apply_filters( 'disable_captions', '' ) ) {</code>.  Hier setze ich an und gebe eine Funktion ein, die ein <code>true</code> zurück gibt. Damit geht kein Shortcode mehr in der Editor beim Bilder einfügen.</p>
<pre><code>
add_filter( 'disable_captions', create_function('$a', 'return true;') );
</code></pre>
<p><img class="centered" src="http://bueltge.de/wp-content/images/wp/wp_caption_shortcode.png" alt="Shortcode entfernen" /></p>
<p>Die Funktion legt man entweder in einem Plugin ab oder in der <code>functions.php</code> des Themes.</p>
<h3>Filtern in der Ausgabe</h3>
<p>Nun will man aber eventuell nicht immer den Shortcode entfernt haben, und in einigen Sichten des Frontend die Möglichkeit schon nutzen. Das heißt, der Shortcode darf nur in einigen Fällen genutzt werden.<br />
Auch dafür hat WordPress eine Funktion hinterlegt, die ich im folgenden Anspreche und direkt im Frontend keinen div erzeugen lasse.</p>
<blockquote><p>
<code>img_caption_shortcode($attr, $content = null)</code><br />
<strong>The Caption shortcode.</strong></p>
<p>Allows a plugin to replace the content that would otherwise be returned. The<br />
filter is 'img_caption_shortcode' and passes an empty string, the attr<br />
parameter and the content parameter values.</p>
<p>The supported attributes for the shortcode are 'id', 'align', 'width', and<br />
'caption'.</p></blockquote>
<p>Das Zitat entstammt der Beschreibung der Funktion und lässt schon die erwünschen Möglichkeiten hoffen.</p>
<pre><code>
add_filter( 'img_caption_shortcode', create_function('$a, $b, $c', 'return $c;'), 10, 3 );
</code></pre>
<p>Auch diese Funktion legt man in der <code>functions.php</code> des Themes oder in einem Plugin ab. Ab nun wird im Frontend keine Markup mehr aus dem Shortcode erzeugt.</p>
<p>Diesen Filter kann man natürlich auch mit diversen Conditional Tags kombinieren und so den Filter nur anwenden, wenn es sich um eine bestimmte Ausgabe handelt. Das folgenden Beispiel filtert daher nur, wenn man auf der Homepage des Blog ist.</p>
<pre><code>
if ( is_home() )
add_filter( 'img_caption_shortcode', create_function('$a, $b, $c', 'return $c;'), 10, 3 );
</code></pre>
<h3>Eigenes HTML liefern</h3>
<p>Hat man einen gewissen Anspruch im Markup, dann helfen aber auch diese Funktionen nicht und man muss das eigene Markup generieren. Als Beispiel gebe ich mal den Titel zum Bild in einer Definitionsliste aus. Diese Möglichkeit gefällt mir am besten und wurde schon in den <a href="http://bueltge.de/wordpress-26-quicktipp-fuer-theme-autoren/705/#comment-276657">Kommentaren eines älteren Artikel</a> diskutiert.</p>
<p>Ich zeige mal eine einfache Lösung, die man gern an seine Bedürfnisse anpassen kann. Das entstehende Markup ist damit frei nutzbar und die möglichen Variablen habe ich drin, so dass das Anpassen nicht so schwer sein sollte. Daraus resultiert aber auch, dass das entstanden Markup recht umfangreich ist, was aber nur der Demo nutzt und so alle Möglichkeiten zeigt. Ansonsten sollte man aus meiner Sciht zum Beispiel kein Inline-Style in der Definitionsliste haben.</p>
<p>Im Ergebnis der folgenden Funktion, die wieder in ein Plugin oder die <code>functions.php</code> ausgelagert werden muss, erzeugt dann beispielhaft das folgende Markup.</p>
<pre><code>
&lt;dl id=&quot;attachment_34&quot; class=&quot;wp-caption alignnone&quot; style=&quot;width: 160px&quot;&gt;
&lt;dt&gt;&lt;a href=&quot;pfad_zum_bild&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-34&quot; title=&quot;1&quot; src=&quot;pfad_zum_bild&quot; alt=&quot;Caption, Bildtitel&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/dt&gt;
&lt;dd class=&quot;wp-caption-text&quot;&gt;Caption, Bildtitel&lt;/dd&gt;
&lt;/dl&gt;
</code></pre>
<pre><code>
function fb_img_caption_shortcode($attr, $content = null) {

// Allow plugins/themes to override the default caption template.
$output = apply_filters('img_caption_shortcode', '', $attr, $content);
if ( $output != '' )
return $output;

extract(shortcode_atts(array(
'id'	=&gt; '',
'align'	=&gt; 'alignnone',
'width'	=&gt; '',
'caption' =&gt; ''
), $attr));

if ( 1 &gt; (int) $width || empty($caption) )
return $content;

if ( $id ) $id = 'id=&quot;' . $id . '&quot; ';

return '&lt;dl ' . $id . 'class=&quot;wp-caption ' . $align . '&quot; style=&quot;width: ' . (10 + (int) $width) . 'px&quot;&gt;&lt;dt&gt;'
. do_shortcode( $content ) . '&lt;/dt&gt;&lt;dd class=&quot;wp-caption-text&quot;&gt;' . $caption . '&lt;/dd&gt;&lt;/dl&gt;';
}

add_shortcode('wp_caption', 'fb_img_caption_shortcode');
add_shortcode('caption', 'fb_img_caption_shortcode');
</code></pre>
<p>Ich hoffe, dass damit dem einen oder anderen Webdesigner der Eingriff leichter fällt und das tägliche Fluchen über dieses Thema ein wenig abnimmt.<br />
Anregungen, Kritik und Fehlerhinweise sind wie immer erwünscht und der Artikel stellt sich wieder eurem kritischen Auge.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/filter-caption-shortcode-wordpress/907/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/filter-caption-shortcode-wordpress/907/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/wp_mediabox.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/wp_mediabox.png" medium="image">
			<media:title type="html">WP Mediabox</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/images/wp/wp_caption_shortcode.png" medium="image">
			<media:title type="html">Shortcode entfernen</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>10 Punkte, die das Blog besser machen</title>
		<link>http://bueltge.de/10-punkte-die-das-blog-besser-machen/902/</link>
		<comments>http://bueltge.de/10-punkte-die-das-blog-besser-machen/902/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 12:26:42 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Suche]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Webdeveloper]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=902</guid>
		<description><![CDATA[Es gibt hinreichend Artikel und Diskussionen zu dem Thema, was das Blog besser macht. Ebenso gibt es viele Artikel, über die man sicher streiten kann und die vor allem nicht auf jedes Blog passen. In erster Linie ist das Blog ein Spiegel des Inhalts und des/der Autor(s)en. Trotzdem, meine ich, gibt es einige Punkte die sich etabliert haben und die man bei der Entwicklung und Verbesserung eines Blog beachten sollte. 

Das Thema spricht mich gerade wieder an, denn diverse Kundenanfragen zeigen, wie wenig man sich mit diesen Themen beschäftigt und man sich eher um die Farbe des Logos streitet. Der Leser des Blog wird viel zu oft nicht oder erst am Ende beachtet. Da in der Regel das Blog aber für Leser gemacht ist, sollte es auch auf ihn zugeschnitten sein. Beachtet daher die Wünsche der Nutzer lasst sie mitreden und hört nie auf, das Blog in Frage zu stellen.
Ein weiterer Punkt, der mich zu diesem Artikel bewegte, ist der Beitrag &#8222;<a href="http://sixrevisions.com/web_design/10-features-that-will-make-twitter-better/" title="Zum Artikel. 10 Features That Will Make Twitter Better">10 Features That Will Make Twitter Better</a>&#8220; von  Jacob Gube, der einschlägige Punkte zeigt, die Twitter besser machen würden. Auch wenn man Twitter nicht direkt mit einem Blog vergleichen kann, so gibt es doch hinreichende Parallelen und die Punkte sprechen für sich und gehören in den Wissensstand eines jedes Nutzers, der sich mit Themen rund um Blogs und Usability beschäftigt.
Aus diesem Zusammenhang hier mal meine Liste von Punkten, die ich für relevant halte, ohne Wertung in der Priorität und sicher nicht vollständig. Aber dazu steht die Kommentarfunktion weit offen und ich danke schon jetzt für jede sinnvolle Erweiterung und konstruktive Kritik.]]></description>
			<content:encoded><![CDATA[<p>Es gibt hinreichend Artikel und Diskussionen zu dem Thema, was das Blog besser macht. Ebenso gibt es viele Artikel, über die man sicher streiten kann und die vor allem nicht auf jedes Blog passen. In erster Linie ist das Blog ein Spiegel des Inhalts und des/der Autor(s)en. Trotzdem, meine ich, gibt es einige Punkte die sich etabliert haben und die man bei der Entwicklung und Verbesserung eines Blog beachten sollte. </p>
<p>Das Thema spricht mich gerade wieder an, denn diverse Kundenanfragen zeigen, wie wenig man sich mit diesen Themen beschäftigt und man sich eher um die Farbe des Logos streitet. Der Leser des Blog wird viel zu oft nicht oder erst am Ende beachtet. Da in der Regel das Blog aber für Leser gemacht ist, sollte es auch auf ihn zugeschnitten sein. Beachtet daher die Wünsche der Nutzer, lasst sie mitreden und hört nie auf, das Blog in Frage zu stellen.<br />
Ein weiterer Punkt, der mich zu diesem Artikel bewegte, ist der Beitrag &#8222;<a href="http://sixrevisions.com/web_design/10-features-that-will-make-twitter-better/" title="Zum Artikel. 10 Features That Will Make Twitter Better">10 Features That Will Make Twitter Better</a>&#8220; von  Jacob Gube, der einschlägige Punkte zeigt, die Twitter besser machen würden. Auch wenn man Twitter nicht direkt mit einem Blog vergleichen kann, so gibt es doch hinreichende Parallelen und die Punkte sprechen für sich und gehören in den Wissensstand eines jedes Nutzers, der sich mit Themen rund um Blogs und Usability beschäftigt.<br />
Aus diesem Zusammenhang hier mal meine Liste von Punkten, die ich für relevant halte, ohne Wertung in der Priorität und sicher nicht vollständig. Aber dazu steht die Kommentarfunktion weit offen und ich danke schon jetzt für jede sinnvolle Erweiterung und konstruktive Kritik.<br />
<span id="more-902"></span></p>
<ul>
<li>
<h4>Besucher stehen im Mittelpunkt</h4>
<p>Verliere niemals den Leser des Blog aus den Augen. Die Website wird nur besser, wenn man Veränderung zulässt, Ziele definiert und kontrolliert. Das Thema ist vielschichtig und sollte daher nicht unterschätzt werden.</li>
<li>
<h4>Text Links im Artikel</h4>
<p>Links sollten ein Aussage treffen und nicht nur unter versteckten Silben zu finden sein. Ebenso gehören Links sichtbar gekennzeichnet. Das Suchen mit der Mouse nach Veränderung ist nicht der Sinn von Links. Das title-Attribut kann einen erhöhten Mehrwert darstellen und sollte nicht vergessen werden.</li>
<li>
<h4>Kommentar Threading</h4>
<p>Die Baumansicht der Kommentare kann die Zusammenhänge der Diskussion besser darstellen, sie kann aber auch den Lesefluss nehmen und die Lust am Kommentieren vernichten. Hier gilt es den Spagat zu finden und dem Leser eine nützliche und überschaubare Lösung zu präsentieren. Das Thema ist für mich auch unter dem Gesichtspunkt der Zielgruppe zu beachten.
</li>
<li>
<h4>Kommentare nutzerfreundlich gestalten</h4>
<p>Kommentieren im Blog ist in der Regel erwünscht &#8211; daher ist es wichtig, dass die Barriere so klein wie möglich ist. Unnütze Registrierung ohne Mehrwert und Captchas sind dafür nicht geeignet. Je einfaches es ist, seine Meinung in den Kommentaren abzugeben, um so mehr wird es geben. Auch das Weglassen von Pflichtfeldern kann dazu beitragen, so wie es schon <a href="http://www.basicthinking.de/blog/2008/11/24/kleine-aenderung-am-kommentarsystem/" title="Link zum Beitrag 'kleine Änderung am Kommentarsystem' auf Basic Thinking">Robert getan</a> hat, nach dem wir es besprochen hatten. Die Pflichtfelder sind kein Spam-Schutz, sie haben andere Vorzüge. So nutze ich sie beispielsweise, um mit den Lesern über Mail ab und dann zu kommunizieren. So komme ich an sie und nutze sie. Aber auch hier ist der Block auf die Zielgruppe wichtig, techn. aversierte Nutzer sind da offen, kenne das Spiel mit den Pflichtfeldern.
</li>
<li>
<h4>Wiedererkennung des Kommentierenden</h4>
<p>Sind Kommentare eindeutig der Person zuzuordnen, dann fühlen sich viele Kommentierende wohler. Nutze diesen Aspekt und gib einen gewissen Wiedererkennungswert zurück, sei es in Form der Avatare als auch spezifischen Content für den bekannten User zurück zu geben. Je nach Leserkreis kann das unterschiedlich ausfallen und sehr verschieden im Mehrwert sein.
</li>
<li>
<h4>Sidebar für mehr Information nutzen</h4>
<p>Der Sidebar ist ein Element des Blog, welches sich durchgesetzt hat und übergreifend anerkannt ist. Darum nutzt den Sidebar um Mehrwert für den Leser zu generieren, sei es statisch oder dynamisch. Je besser der Inhalt auf den Besucher zugeschnitten ist, desto länger wird er bleiben und sich wohl fühlen. Beispiele dafür gibt es viel im Netz, die bekannteste Plattform und die, bei der man es am deutlichsten sieht ist sicher <a href="http://www.amazon.de/" title="Amazon besuchen">Amazon</a>. Allerdings kommt hier wieder der Spagat zum Tragen - Registrierung, Speicherung von Nutzerdaten. Aber auch ohne diese Hürde kann man etwas tun - ich denke nur an die Übergabe der Suchbegriffe und die damit verbunden <a href="http://bueltge.de/wp-landingsites-de-plugin/181/" title="zum Artikel und Plugin für WordPress">Landing Page</a> (<a href="http://bueltge.de/wp-landingsites-de-plugin/181/" title="zum Artikel und Plugin für WordPress">mehr zum Thema in Verbindung mit WordPress</a>) für Besucher, die von Suchmaschinen kommen.
</li>
<li>
<h4>Hervorheben des Autors</h4>
<p>Autoren eines Artikels sollten auch in der Diskussion zum Artikel hervorgehoben sein &#8211; dies kann den Lesefluss bestärken und eindeutig signalisieren, wer hier für Freischaltung und Beitrag verantwortlich ist. Eine kleine Spielerei im Stylesheet, die einen hohen Mehrwert haben kann. Gerade bei Bezug auf den Artikel und damit den Autor kann diese Möglichkeit viel Übersicht schaffen
</li>
<li>
<h4>Suche nicht vergessen</h4>
<p>Für mich sind Sitemaps noch immer nicht aus dem Alltag weg zu denken, trotzdem ist die Suche immer mehr das elementare Werkzeug um explizit auf das Blog etwas zu finden. Daher gehört sie zum Umfang eines jedes Blog. Je nach Anforderung und Können kann diese Suche verschieden mächtig ausfallen. Unterstütze die Leser beim Suchen, helfe mit Ergebnissen, die sinnvoll sind und halte trotzdem das Suchen recht einfach. Hier ist Google Vorzeigeobjekt und man kann viele Bereiche auf das eigene Blog beziehen.
</li>
<li>
<h4>Text/Raum</h4>
<p>Blogs sind für Leser &#8211; daher unterstützt das Lesen auch. Lesen heißt Arbeit für die Augen, Arbeit für den Geist und den Willen. Alle Punkte sollten optimiert für den Leser sein und schon liest der eine oder andere mehr und bis zum Ende. Inhalt ist immer noch der König einer Website für mich, egal ob es sich um techn. Tutorials, spannende Alltagsgeschichten, Videos oder Photos handelt. Daher sollte die Site für die jeweilige Zielgruppe optimiert sein. Viel Text braucht Raum &#8211; Whitespaces ist hier das Schlagwort in der Scene. Gib dem Leser die Möglichkeit das Lesen zu genießen.
</li>
<li>
<h4>Druckoptimierung</h4>
<p>Leider noch immer kein Standard &#8211; was mir unverständlich ist. Nicht immer will man am Rechner lesen und der Druck ist ein Prozess den man nur dem Besucher überlassen sollte. Die Unterstützung eines sauberen Druck ist für mich daher elementar und gehört zu jedem guten Design eines Webprojektes. Auch wenn es nicht tagtäglich im Vordergrund ersichtlich ist, gehört es zum Erarbeiten eines Design. In den Artikeln &#8222;<a href="http://bueltge.de/design-fuer-den-druck-mit-css/681/">Design für den Druck mit CSS</a>&#8220; und &#8222;<a href="http://bueltge.de/wp-druckversion/40/">WordPress Druckversion</a>&#8220; habe ich mich dazu umfassend geäußert und stelle Lösungen zur Vergütung, die das Erstellen eines Print-Stylesheets vereinfache. Durchdachte CSS-Frameworks stellen ebenso eine Vorlage dazu bereit, in <a href="http://www.yaml.de/de/dokumentation/css-bausteine/das-drucklayout.html" title="zur Doku des Druck-Stylesheets in YAML">YAML</a> beispielsweise ist es elementar und ist dabei um genutzt zu werden.
</li>
</ul>
<p>Wie sicher erkennbar ist, habe ich zu jedem Punkt nur eine kurze Ausführung gegeben. Dies ist Absicht und zu jedem einzelnen Punkt könnte man Artikel schreiben und Diskussionen anzetteln. Ich möchte, dass man als Betreiber des Blog über seinen Blog nachdenkt, ihn vergleicht und die Nutzer im Bezug auf das Blog beachtet. Ebenso sind hier nur 10 Punkte zum Tragen gekommen, aber eventuell nimmt der eine oder andere Leser das Thema auf und vervollständigt es. Die Vernetzung von Blogs kann dann ihr übriges tun und weitere Artikel zum Thema können nur Bewusstsein schaffen. In einem anderen <a href="http://bueltge.de/short-feeds-es-stinkt-mir/896/" title="zum Artikel. Short Feeds: Es stinkt mir">Artikel, in dem ich die Betreiber von Websites zu FullFeed bitte</a>, war nicht so angelegt, zeigt aber schön, wie ein Thema die Runde machen kann, was für ein Benefit die Kommentarfunktion hat und wie ein Thema aus der Vielzahl von Themen heraus stechen kann.</p>
<p>Zu fast allen Themen und oft im Bezug mit WordPress gibt es hier im Blog Artikel, nutzt die Suche und nutzt das Wissen, was ich in den Artikeln zur Verfügung stelle. Viele Artikel aus diesem Themenspektrum sind schon älter, was aber nicht heißt, dass sie nicht mehr nutzbar sind. Schaut euch um, nutzt das Suchfeld im oberen Drittel des Blog oder nutzt die <a href="http://bueltge.de/erweiterte-suche/">erweiterte Suche</a>. Alternativ könnt ihr euch die Suche in den Browser holen, was ich mit <a href="http://bueltge.de/opensearch-suchfeld-fuer-mozilla-und-internet-explorer-mit-wordpress-anbieten/410/" title="Open Search in WordPress einbinden">Open Search</a> realisiert habe.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/10-punkte-die-das-blog-besser-machen/902/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/10-punkte-die-das-blog-besser-machen/902/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Es wird wieder nackt</title>
		<link>http://bueltge.de/es-wird-wieder-nackt/899/</link>
		<comments>http://bueltge.de/es-wird-wieder-nackt/899/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 12:53:21 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Webküche]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Webstandard]]></category>
		<category><![CDATA[xHTML]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=899</guid>
		<description><![CDATA[Auch in diesem Jahr wird es hier wieder nackt und das Stylesheet wird für 24h deaktiviert. Auch in diesem Jar ist es wieder so weit und ich bin gespannt, ob es wieder so viele <a href="http://naked.dustindiaz.com/">Teilnehmer</a> gibt.

Hintergründe, Wieso, weshalb, warum - dazu verweise ich auf den <a href="http://bueltge.de/3-css-naked-day-9april-2008/628/">Artikel</a> des vergangen Jahres, der die Aktion bestens erklärt. Ebenso findet man dort die entsprechenden Code-Schnippsel oder Plugin-Lösungen für verschiedene Appliaktionen um den Prozess automatisch zu starten bzw. zu beenden.

Im letzten Jahr war die Aktion mehr als ein Spaß und nicht weniger hatten diverse Erkenntnisse, die sie in ihrem Markup umsetzen konnten. Sicher wird es auch in diesem Jahr wieder Erkenntnisse und Diskussion geben. So eine Aktion ruft immer die verschiedenen Parteien zum Diskutieren auf, was ich wunderbar finde. Nur so werden eingeschliffene Themen angesprochen und in Frage gestellt.

Also, macht mit - ich freue mich auf eure Nacktheit.]]></description>
			<content:encoded><![CDATA[<p><img class="alignrightob" src="http://bueltge.de/wp-content/images/naked-day-09.png" alt="Naked Day" /><br />
Auch in diesem Jahr am 9.April wird es hier wieder nackt, das Stylesheet wird für 24h deaktiviert und ich bin gespannt, ob es wieder so viele <a href="http://naked.dustindiaz.com/">Teilnehmer</a> gibt.</p>
<p><strong>Hintergründe, Wieso, weshalb, warum</strong> - dazu verweise ich auf den <a href="http://bueltge.de/3-css-naked-day-9april-2008/628/">Artikel &#8222;CSS Naked Day&#8220;</a> des vergangen Jahres, der die Aktion bestens erklärt. Ebenso findet man dort die entsprechenden Code-Schnippsel oder Plugin-Lösungen für verschiedene Applikationen um den Prozess automatisch zu starten bzw. zu beenden.<br />
<span id="more-899"></span><br />
Im letzten Jahr war die Aktion mehr als ein Spaß und nicht weniger hatten diverse Erkenntnisse, die sie in ihrem Markup umsetzen konnten. Sicher wird es auch in diesem Jahr wieder Erkenntnisse und Diskussion geben. So eine Aktion ruft immer die verschiedenen Parteien zum Diskutieren auf, was ich wunderbar finde. Nur so werden eingeschliffene Themen angesprochen und in Frage gestellt.</p>
<p>Im letzten Jahr habe ich ebenso auf Wunsch eine <a href="http://bueltge.de/beobachtungen-naked-day-2008/633/">kleine Auswertung geschrieben</a>, in der man ein wenig erfährt, wie es nach dem darstellen meiner nackten Tatsachen aussah &#8211; &#8222;<a href="http://bueltge.de/beobachtungen-naked-day-2008/633/">Beobachtungen zum Naked Day 2008</a>&#8220;.</p>
<p>Also, macht mit &#8211; ich freue mich auf eure Nacktheit. <strong>Nackt ist &#8222;in&#8220;</strong><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/es-wird-wieder-nackt/899/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/es-wird-wieder-nackt/899/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/naked-day-09.png" />
		<media:content url="http://bueltge.de/wp-content/images/naked-day-09.png" medium="image">
			<media:title type="html">Naked Day</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Login Style deaktivieren</title>
		<link>http://bueltge.de/wordpress-login-style-deaktivieren/872/</link>
		<comments>http://bueltge.de/wordpress-login-style-deaktivieren/872/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 00:44:57 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=872</guid>
		<description><![CDATA[In der Vergangenheit habe ich einige Möglichkeiten gezeigt, wie man WordPress im Hinblick auf eine Corporate Identity nutzt. Dazu gehört auch das Anpassen des Login-Bereiches. Dies sollte mit Hilfe der entsprechenden Artikel nicht schwer fallen. WordPress 2.7 Login Design anpassen WordPress 2.5 und Theme-definiertes Login In beiden Artikeln bin ich aber nicht darauf eingegangen, wie [...]]]></description>
			<content:encoded><![CDATA[<p>In der Vergangenheit habe ich einige Möglichkeiten gezeigt, wie man WordPress im Hinblick auf eine Corporate Identity nutzt. Dazu gehört auch das Anpassen des Login-Bereiches. Dies sollte mit Hilfe der <a href="http://bueltge.de/wordpress-27-login-design-anpassen/846/">entsprechenden</a> <a href="http://bueltge.de/wordpress-25-und-theme-definiertes-login/617/">Artikel</a> nicht schwer fallen.</p>
<ul>
<li><a href="http://bueltge.de/wordpress-27-login-design-anpassen/846/">WordPress 2.7 Login Design anpassen</a></li>
<li><a href="http://bueltge.de/wordpress-25-und-theme-definiertes-login/617/">WordPress 2.5 und Theme-definiertes Login</a></li>
</ul>
<p>In beiden Artikeln bin ich aber nicht darauf eingegangen, wie man das Standard-layout von WordPress deaktiviert, da ich das Beispiel-CSS immer auf Basis des Stylesheet von WordPress aufgebaut habe. Das Stylesheet von WordPress ist aber nicht gerade sehr schlank und warum soll man unnötig Daten laden, die man nicht benötigt?</p>
<p>Mit einem kleinen Hook und einer entsprechenden Funktion entferne ich daher das Laden des Stylesheet von WordPress und lade dann nur das eigene CSS - wie das geht, steht in den beiden Artikeln zum Theme Login Bereich anpassen.<br />
<span id="more-872"></span></p>
<pre><code>
if ( basename($_SERVER['PHP_SELF']) == 'wp-login.php' )
	add_action( 'style_loader_tag', create_function( '$a', "return null;" ) );
</code></pre>
<p>Packt man die obige Syntax in die <code>functions.php</code>, ist das ausreichend und auch an richtiger Stelle - der Eingriff ist im Bezug auf das Theme und abhängig vom Theme aus meiner Sicht. Damit stellt man sicher, dass beim Wechsel oder deaktivieren des Themes auch diese Funktion deaktiviert wurde. Aus dem Theme raus kann daher ohne Probleme das Frontend, das Backend und der Login-Bereich angepasst werden. Dies ist aus meiner Sicht und Erfahrung mit entsprechenden Business-Bereichen auch notwendig, wenn auch oft nur in kleinen Bereichen des Backend und des Login. In dem Zusammenhang gilt es auch für mich im Bezug für ein <a href="http://bueltge.de/10-punkte-perfekte-wordpress-theme/784/">&#8222;perfektes&#8220; Theme</a>.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-login-style-deaktivieren/872/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-login-style-deaktivieren/872/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Kommentare ab WordPress 2.7 formatieren</title>
		<link>http://bueltge.de/kommentare-ab-wordpress-27-formatieren/863/</link>
		<comments>http://bueltge.de/kommentare-ab-wordpress-27-formatieren/863/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 00:45:41 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Themes]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[komme]]></category>
		<category><![CDATA[Kommentar]]></category>
		<category><![CDATA[Style]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[WP]]></category>
		<category><![CDATA[WP2.7]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=863</guid>
		<description><![CDATA[WordPress erlaubt seit Version 2.7 &#8222;Threaded Comments&#8220; zu nutzen, ohne Plugin- oder Themeerweiterung. Dazu muss das bestehende Theme die API der Kommentare unterstützen. Im Netz finden sich einige schöne Artikel dazu und das Basis-Theme von mir wird gerade vorbereitet. Noch gibt es keine Dokumentation und ohne diese will ich es nicht frei geben - bitte ein wenig Geduld.
Um nun aber die Funktion der &#8222;Threaded Comments&#8220; entsprechend darzustellen und für den Besucher ansprechend zu formatieren stehen eine ganze Reihe von Klassen zur Verfügung. Alle möglichen Zugriffe via CSS sind im folgenden gelistet und helfen dem einen oder anderen aber beim Erarbeiten des CSS.]]></description>
			<content:encoded><![CDATA[<p>WordPress erlaubt seit Version 2.7 &#8222;Threaded Comments&#8220; zu nutzen, ohne Plugin- oder Themeerweiterung. Dazu muss das bestehende Theme die API der Kommentare unterstützen. Im Netz <a href="http://www.google.de/search?q=wp_list_comments&#038;ie=utf-8&#038;oe=utf-8&#038;aq=t&#038;rls=org.mozilla:de:official&#038;client=firefox-a">finden sich einige schöne Artikel</a> dazu und das <a href="http://bueltge.de/basis-theme-fuer-wordpress/411/">Basis-Theme</a> von mir wird gerade vorbereitet. Noch gibt es keine Dokumentation und ohne diese will ich es nicht frei geben - bitte ein wenig Geduld. Dank <a href="http://andreas-isaak.de/">Andreas</a> geht es vielleicht ein wenig schneller und ich habe einen verlässlichen und fähigen Unterstützer.</p>
<p>Um nun aber die Funktion der &#8222;Threaded Comments&#8220; entsprechend darzustellen und für den Besucher ansprechend zu formatieren stehen eine ganze Reihe von Klassen zur Verfügung. Nicht alle muss man nutzen und viele entstehen auch nur durch die Unterstützung der Semantik mit Mikroformaten in WordPress.</p>
<p>Alle möglichen Zugriffe via CSS sind im folgenden gelistet und helfen dem einen oder anderen aber beim Erarbeiten des CSS und ersparen ein wenig Arbeit mit Hilfe von Firebug und co.<br />
<span id="more-863"></span></p>
<pre><code>
ol.commentlist {}
ol.commentlist li {}
ol.commentlist li.alt {}
ol.commentlist li.bypostauthor {}
ol.commentlist li.byuser {}
ol.commentlist li.comment-author-admin {}
ol.commentlist li.comment {}
ol.commentlist li.comment div.comment-author {}
ol.commentlist li.comment div.vcard {}
ol.commentlist li.comment div.vcard cite.fn {}
ol.commentlist li.comment div.vcard cite.fn a.url {}
ol.commentlist li.comment div.vcard img.avatar {}
ol.commentlist li.comment div.vcard img.avatar-32 {}
ol.commentlist li.comment div.vcard img.photo {}
ol.commentlist li.comment div.vcard span.says {}
ol.commentlist li.comment div.commentmetadata {}
ol.commentlist li.comment div.comment-meta {}
ol.commentlist li.comment div.comment-meta a {}
ol.commentlist li.comment * {} - (p, em, strong, blockquote, ul, ol, etc.)
ol.commentlist li.comment div.reply {}
ol.commentlist li.comment div.reply a {}
ol.commentlist li.comment ul.children {}
ol.commentlist li.comment ul.children li {}
ol.commentlist li.comment ul.children li.alt {}
ol.commentlist li.comment ul.children li.bypostauthor {}
ol.commentlist li.comment ul.children li.byuser {}
ol.commentlist li.comment ul.children li.comment {}
ol.commentlist li.comment ul.children li.comment-author-admin {}
ol.commentlist li.comment ul.children li.depth-2 {}
ol.commentlist li.comment ul.children li.depth-3 {}
ol.commentlist li.comment ul.children li.depth-* {}
/* * steht für die Einstellungen der Antwort-Tiefe im Backend */
ol.commentlist li.comment ul.children li.depth-10 {}
ol.commentlist li.comment ul.children li.odd {}
ol.commentlist li.even {}
ol.commentlist li.odd {}
ol.commentlist li.parent {}
ol.commentlist li.pingback {}
ol.commentlist li.pingback div.comment-author {}
ol.commentlist li.pingback div.vcard {}
ol.commentlist li.pingback div.vcard cite.fn {}
ol.commentlist li.pingback div.vcard cite.fn a.url {}
ol.commentlist li.pingback div.vcard span.says {}
ol.commentlist li.pingback div.commentmetadata {}
ol.commentlist li.pingback div.comment-meta {}
ol.commentlist li.pingback div.comment-meta a {}
ol.commentlist li.pingback * {} 
/* * steht für Tags; z.B.: p, em, strong, blockquote, ul, ol, etc. */
ol.commentlist li.pingback div.reply {}
ol.commentlist li.pingback div.reply a {}
ol.commentlist li.pingback ul.children {}
ol.commentlist li.pingback ul.children li {}
ol.commentlist li.pingback ul.children li.alt {}
ol.commentlist li.pingback ul.children li.bypostauthor {}
ol.commentlist li.pingback ul.children li.byuser {}
ol.commentlist li.pingback ul.children li.comment {}
ol.commentlist li.pingback ul.children li.comment-author-admin {}
ol.commentlist li.pingback ul.children li.depth-2 {}
ol.commentlist li.pingback ul.children li.depth-3 {}
ol.commentlist li.pingback ul.children li.depth-4 {}
ol.commentlist li.pingback ul.children li.depth-* {}
/* * steht für die Einstellungen der Antwort-Tiefe im Backend */
ol.commentlist li.pingback ul.children li.depth-10 {}
ol.commentlist li.pingback ul.children li.odd {}
ol.commentlist li.thread-alt {}
ol.commentlist li.thread-even {}
ol.commentlist li.thread-odd {}
</code></pre>
<p><cite>via <a href="http://cdharrison.com/2008/12/threaded-comments/">Chris Harrison</a></cite><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/kommentare-ab-wordpress-27-formatieren/863/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/kommentare-ab-wordpress-27-formatieren/863/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Conditional Comments effizient nutzen</title>
		<link>http://bueltge.de/conditional-comments-effizient-nutzen/632/</link>
		<comments>http://bueltge.de/conditional-comments-effizient-nutzen/632/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 22:21:11 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS, xHTML, JS]]></category>
		<category><![CDATA[Webküche]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[xHTML]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=632</guid>
		<description><![CDATA[Conditional Comments sind aus meiner Sicht <a href="http://de.wikipedia.org/wiki/Hack">Hacks</a> und ich will keine Diskussion anstoßen, ob Hacks sinnvoll sind oder man den IE nicht unterstützt. Ab und dann kommt man aus meiner Sicht nicht am Internet Explorer vorbei und dabei sind Conditional Comments eine einfache aber effektive Hilfe.

Sie basieren auf einem absichtlich eingebauten &#8222;HTML-Kommentar&#8220; und daher kann man sie bedenkenlos nutzen. Dies soll nicht heißen, dass man immer diese Möglichkeit nutzen sollte. Aber aus meiner Sicht stellt diese Möglichkeit ein effektives bedenkenloses Werkzeug dar.

In diesem Artikel möchte ich aber eine Überlegung darstellen, die aus meiner Sicht nicht abwegig ist, wenn auch aufwendig. Nicht selten sieht man Websites diverser Entwickler, die bewusst ein unterschiedliches Design in Nicht-IE- und IE-Browsern entwickeln. Der Anwender wird das in der Regel nicht mitbekommen, denn wer surft schon mit zwei Browsern gleichzeitig auf einer Website? Aber der Hintergrund dieser Lösung ist aus meiner Sicht ein anderer. Diese Form der Lösung zeigt, dass man eventuell explizit ein Stylesheet für den IE und Nicht-IE-Browsern machen sollte und nicht ein Stylesheet für Nicht-IE-Browser plus diverse Korrekturen, Hacks und Differenzen.]]></description>
			<content:encoded><![CDATA[<p>Conditional Comments sind aus meiner Sicht <a href="http://de.wikipedia.org/wiki/Hack">Hacks</a> und ich will keine Diskussion anstoßen, ob Hacks sinnvoll sind oder man den IE nicht unterstützt. Ab und dann kommt man aus meiner Sicht nicht am Internet Explorer vorbei und dabei sind Conditional Comments eine einfache aber effektive Hilfe.</p>
<p>Sie basieren auf einem absichtlich eingebauten &#8222;HTML-Kommentar&#8220; und daher kann man sie bedenkenlos nutzen. Dies soll nicht heißen, dass man immer diese Möglichkeit nutzen sollte. Aber aus meiner Sicht stellt diese Möglichkeit ein effektives bedenkenloses Werkzeug dar.</p>
<p>In diesem Artikel möchte ich aber eine Überlegung darstellen, die aus meiner Sicht nicht abwegig ist, wenn auch aufwendig. Nicht selten sieht man Websites diverser Entwickler, die bewusst ein unterschiedliches Design in Nicht-IE- und IE-Browsern entwickeln. Der Anwender wird das in der Regel nicht mitbekommen, denn wer surft schon mit zwei Browsern gleichzeitig auf einer Website? Aber der Hintergrund dieser Lösung ist aus meiner Sicht ein anderer. Diese Form der Lösung zeigt, dass man eventuell explizit ein Stylesheet für den IE und Nicht-IE-Browsern machen sollte und nicht ein Stylesheet für Nicht-IE-Browser plus diverse Korrekturen, Hacks und Differenzen.<br />
<span id="more-632"></span></p>
<div class="contentnavi">
<h4>Inhalt</h4>
<ul>
<li><a href="#ieeo">IE: Entweder oder</a></li>
<li><a href="#iev">via IE Version</a></li>
<li><a href="#php">via PHP</a></li>
<li><a href="#js">via JavaScript</a></li>
</ul>
</div>
<p>Im Grunde entwickelt eine Vielzahl der Webentwickler sicher so <small>(ausgenommen ist Version 8 des IE, in dem Fall könnte es anders werden, aber bis dahin ist sicher noch ein weiter Weg)</small>:</p>
<ol>
<li>Style via CSS erstellen, welches in Nicht-IE-Browsern (< Version 8) läuft</li>
<li>Anpassen an des Stylesheet für den IE kleiner 8</li>
<li>Diverse Hacks im Stylesheet, mitunter viel Code, den Browser mit Standard-Interpretation nicht benötigen</li>
</ol>
<p>Schon jetzt arbeiten aber auch eine ganze Reihe von Entwicklern einen anderen Weg ab. Dieser ist nur in kleinen Punkten abwegig, aus meiner Sicht hat er aber eine große Wirkung.</p>
<ol>
<li>Style via CSS erstellen, welches in Nicht-IE-Browsern (< Version 8) läuft</li>
<li>Stylesheet für den IE kleiner Version 8 erstellen</li>
<li>Einbinden des Stylesheet für den IE mit Hilfe von Conditional Comments</li>
</ol>
<p>Die zweite Lösung sorgt dafür, dass Nicht-IE-Browser keinen unnötigen Code verarbeiten und das Stylesheet schlank bleibt. Conditional Comments haben den Vorteil, sie arbeiten nur im Internet Explorer. Damit sind sie wunderbar geeignet um Anweisungen nur für den IE abzulegen. Dabei kann man zwischen den unterschiedlichen Versionen des IE wählen. Im folgenden sind dazu Beispiele hinterlegt, die das Nutzen an kleinen Beispielen zeigen und die unterschiedlichen Möglichkeiten zeigen.</p>
<h3 id="ieeo">IE: Entweder oder</h3>
<p><img class="alignrightob" src="http://bueltge.de/wp-content/images/internet_explorer.jpg" alt="IE Logo" /><br />
Parallel dazu möchte ich aber noch eine andere Methode zeigen, die dabei sehr direkt unterscheidet. Die beiden folgenden Abfragen gehen davon aus, dass man also ein Stylesheet hat, welches für Nicht-IE-Browser ist und eines, welches explizit für den IE ist. Das heißt, dass das Stylesheet für den IE alle notwendigen Angaben enthält und der IE <em>keine</em> Mischung aus Stylesheet für alle Browser und dem speziellen Stylesheet bekommt.</p>
<h4>Für IE</h4>
<pre><code>
&lt;!--[if IE]&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;ie.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Nicht (<code>!</code>) für IE</h4>
<pre><code>
&lt;!--[if !IE]&gt;--&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;standard.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;!--&lt;![endif]--&gt;
</code></pre>
<h3 id="iev">IE: Diffizile Abfragen</h3>
<p>Im Gegensatz zur obigen Methode kann man alternativ auch nur diverse Stylesheets erarbeiten, die die Probleme im IE mit dem Standard-Stylesheet bearbeiten und je nach Version des IE einbinden. Dazu stehen diverse Conditional Comments-Abfragen bereit.</p>
<p>Alternativ kann man aber auch, wenn es denn sein muss/soll, diverse eigenständige Stylesheets für die jeweilige betroffene Version des IE erstellen und wie oben angesprochen einbinden.</p>
<h4>Für IE 5 und größer</h4>
<pre><code>
&lt;!--[if gte IE 5]&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;ie.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Für IE, kleiner als Version 6</h4>
<pre><code>
&lt;!--[if lt IE 6]&gt;
	&lt;link rel="stylesheet" href="ie.css" type="text/css" media="screen" /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Für IE, kleiner oder gleich als Version 5.5</h4>
<pre><code>
&lt;!--[if lte IE 5.5]&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;ie.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Für IE, größer als Version 6</h4>
<pre><code>
&lt;!--[if gt IE 6]&gt;
	&lt;link rel=&quot;stylesheet&quot; href=&quot;ie.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;![endif]--&gt;
</code></pre>
<h4>Hinweis zum Syntax</h4>
<ul>
<li>gt: greater than (größer als)</li>
<li>gte: greater than or equal to (größer als oder gleich)</li>
<li>lt: less than (kleiner als)</li>
<li>lte: less than or equal to (kleiner als oder gleich)</li>
</ul>
<h3 id="php">Via PHP</h3>
<p>Aber auch PHP gibt uns die Möglichkeit den Browser abzufragen und ab und dann kann die Lösung sinnvoll sei. Aus meiner Sicht ist sie es aber nicht für die Implementierung des Stylesheet für den IE. Dort sind die Conditional Comments sehr gut geeignet.<br />
Der Vollständigkeit aber und da man ab und dann die Lösung gebrauchen kann, lege ich meine Codeschnippsel hier ab.</p>
<pre><code>
&lt;?php
	if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Gecko') ){
		if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Netscape') ){
			$browser = 'Netscape (Gecko/Netscape)';
		}
		else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox') ){
			$browser = 'Mozilla Firefox (Gecko/Firefox)';
		}
		else{
			$browser = 'Mozilla (Gecko/Mozilla)';
		}
	}
	else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ){
		$browser = 'Internet Explorer (MSIE/Compatible)';
	}
	else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Safari') ){
		$browser = 'Safari';
	}
	else if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Opera') === true){
		$browser = 'Opera';
	}
	else{
		$browser = 'andere Browser';
	}
	echo '&lt;h2&gt;Dein Browser ' . $browser . '&lt;/h2&gt;';
?&gt;
</code></pre>
<pre><code>
&lt;?php
	if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Safari') ) {
?&gt;
		&lt;link rel="stylesheet" type="text/css" href="safari.css" media="screen" /&gt;
&lt;?php
	}
?&gt;
</code></pre>
<h3 id="js">Via JavaScript</h3>
<p>Auch im Bereich JavaScript kann man diverse Abfragen starten um den Browser zu erkennen, allerdings geht das nur, wenn JS beim Anwender auch aktiv ist. Für diese Möglichkeit gibt es die unterschiedlichsten Möglichkeiten und eine sehr kleine Funktion stammt dabei aus meinem Archiv.<br />
Auch dieses soll hier nicht groß erläutert werden, ich denke, dazu gibt es ausreichend und bessere Seiten.</p>
<pre><code>
function getBrowserType() {
	var detect = navigator.userAgent.toLowerCase();
	var browser;
	var doCheckIt = function (bString) {
		place = detect.indexOf(bString) + 1;
		return place;
	};
	if (doCheckIt('konqueror')) { browser = "konqueror"; }
	else if (doCheckIt('safari')) { browser = "safari"; }
	else if (doCheckIt('omniweb')) { browser = "omniweb"; }
	else if (doCheckIt('opera')) { browser = "opera"; }
	else if (doCheckIt('webtv')) { browser = "webtv"; }
	else if (doCheckIt('icab')) { browser = "icab"; }
	else if (doCheckIt('msie')) { browser = "msie"; }
	else if (doCheckIt('firefox')) { browser = "firefox"; }
	else if (!doCheckIt('compatible')) { browser = "nn"; }
	return browser;
}
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/conditional-comments-effizient-nutzen/632/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/conditional-comments-effizient-nutzen/632/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/internet_explorer.jpg" />
		<media:content url="http://bueltge.de/wp-content/images/internet_explorer.jpg" medium="image">
			<media:title type="html">IE Logo</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
	</channel>
</rss>

