<?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/"
	>

<channel>
	<title>Brusdeylins &#187; Wordpress</title>
	<atom:link href="http://brusdeylins.info/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://brusdeylins.info</link>
	<description></description>
	<lastBuildDate>Thu, 26 Jan 2012 19:35:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Probleme mit ShortCodes</title>
		<link>http://brusdeylins.info/wordpress/probleme-mit-shortcodes/</link>
		<comments>http://brusdeylins.info/wordpress/probleme-mit-shortcodes/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 17:08:22 +0000</pubDate>
		<dc:creator>Matthias Brusdeylins</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Problem]]></category>
		<category><![CDATA[RegEx]]></category>
		<category><![CDATA[Regular Expression]]></category>

		<guid isPermaLink="false">http://neu.brusdeylins.info/?p=99</guid>
		<description><![CDATA[
Dies sieht sehr verd&#228;chtig nach einem Speicher-Problem aus. Doch wo genau tritt der Fehler auf und was kann man dagegen unternehmen? Ein kleiner Suchtrip durch den Quellcode von WordPress (zum Zeitpunkt dieses Artikels in der Version  2.7 ) zeigte bald, dass der Inhalt einer meiner langen Artikel in der Funktion wpautop() in der Datei [...]]]></description>
			<content:encoded><![CDATA[<p><!--:de-->
<a href="http://brusdeylins.info/media/post-images/wordpress.jpg" title="WordPress-Logo" rel="lightbox[singlepic37]" >
	<img class="ngg-singlepic ngg-right" src="http://brusdeylins.info/media/cache/37__150x400_wordpress.jpg" alt="WordPress-Logo" title="WordPress-Logo" />
</a>
Seid WordPress 2.5 bietet das Blogging-System seinen Erweiterungen (Plugins) die neue M&#246;glichkeit an,  mit so genannten <a title="ShortCode API" href="http://codex.wordpress.org/Shortcode_API" target="_blank">ShortCodes</a> Inhalte einfach und dynamisch zu modifizieren. Dazu muss eine Modifikations-Funktion auf einen entsprechenden ShortCode registriert werden, welcher dann automatisch aufgerufen wird. Ein ShortCode kann dabei noch zus&#228;tzliche Parameter definieren, die dann dieser Funktion zur Auswertung durchgereicht werden (Beispiel mit zwei Parameter: <code>[ShortCode Param1=Wert1 Param2=Wert2]</code>). Eines der ber&#252;hmtesten WordPress-Erweiterungen, welche in der neusten Version diese Technologie einsetzt, ist die Gallery-Verwaltung <a title="NextGEN Gallery at alex.rabe" href="http://alexrabe.boelinger.com/wordpress-plugins/nextgen-gallery/" target="_blank">NextGEN Gallery</a>. Und mit ihrem Einsatz f&#228;llt ein kleiner Fehler in WordPress auf: ShortCodes kombiniert mit sehr langen Beitr&#228;gen f&#252;hren bei der Anzeige gerne zu einem leeren Ergebnis.<!--:--><span id="more-99"></span><!--:de--></p>
<p>Dies sieht sehr verd&#228;chtig nach einem Speicher-Problem aus. Doch wo genau tritt der Fehler auf und was kann man dagegen unternehmen? Ein kleiner Suchtrip durch den Quellcode von WordPress (zum Zeitpunkt dieses Artikels in der Version  2.7 ) zeigte bald, dass der Inhalt einer meiner langen Artikel in der Funktion <code>wpautop()</code> in der Datei <em>./wp-includes/formatting.php</em> verloren ging. Und zwar genau in der vorletzte Zeile der Funktion:</p>
<pre>$pee = preg_replace('/&lt;p&gt;\s*?(' . get_shortcode_regex() . ')\s*&lt;\/p&gt;/s', '$1', $pee); // don't auto-p wrap shortcodes that stand alone</pre>
<p>(WordPress 2.7, Datei <em>formatting.php</em>, Funktion <code>wpautop()</code>, Zeile 153)</p>
<p>Diese Funktion sorgt daf&#252;r, dass vor der Ausgabe der Beitr&#228;ge Zeilenumbr&#252;che in HTML-Zeilenumbr&#252;che (<code>&lt;br /&gt;</code>) und HTML-Paragraphen (<code>&lt;p /&gt;</code>) umgewandelt werden. Sie wird vor der Ersetzung der ShortCodes aufgerufen. Die letzte Ersetzung sucht nun allein stehende ShortCodes und entfernt m&#246;gliche (automatisch hinzugef&#252;gte) Paragraphen um diese. Die hier aufgerufene Methode <code>get_shortcode_regex()</code> liefert dabei das Suchmuster f&#252;r die definierten ShortCodes zur&#252;ck. Diese befindet sich in der Datei <em>./wp-includes/shortcodes.php</em> ab der Zeile 165. Der hier zur&#252;ck gelieferte regul&#228;re Ausdruck sucht nach einem Muster in der folgenden Form:<br />

<a href="http://brusdeylins.info/media/post-images/shortcodes.jpg" title="Problem in Wordpress 2.7 RegEx - Bildquelle: Brusdeylins.Info" rel="lightbox[singlepic41]" >
	<img class="ngg-singlepic ngg-center" src="http://brusdeylins.info/media/cache/41__530x400_shortcodes.jpg" alt="WP 2.7 RegEx" title="WP 2.7 RegEx" />
</a>
In diesem Ausdruck werden zwei nicht-gierige (non-greedy, lazy) Quantoren eingesetzt. Dies bedeutet, es wird sehr viel Backtracking betrieben: die RegEx-Engine &#252;berspringt im ersten Schritt die Zeichen, welche auf solche nicht-gierigen Quantoren passen, da ja an dieser Stelle versucht wird, so wenig wie m&#246;glich einzufangen. Trotzdem merkt sich die Engine, wo sie notfalls nachschauen muss, falls der ganze restliche Text so erstmal nicht in das Suchmuster passt. Der &#8220;ganze Rest&#8221; bei gro&#223;en Beitr&#228;gen mit mehreren nicht-gierigen Quantoren kann ganz sch&#246;n viel sein, was die Historie gerne anwachsen l&#228;sst. Wir d&#252;rfen nicht vergessen: die RegEx-Engine geht am Ende nach und nach wieder ein Schritt zur&#252;ck und pr&#252;ft erneut nach, ob sie ein Ergebnis findet (Backtracking). Um den Aufwand zu minimieren, bietet es sich an, den zu &#252;berpr&#252;fenden &#8220;Rest&#8221; lokal einzuschr&#228;nken. In unserem Fall wird der Zeichenbereich der Parameterpaare mit dem Endzeichen &#8220;<code>]</code>&#8221; eines Tags begrenzt. &#196;ndern wir nun den roten Abschnitt <span style="color: #ff0000;"><code>(.*?)</code></span> zu <span style="color: #ff0000;"><code>([^\]]*?)</code></span>, trennen wir somit die Non-Greedy-Bereiche (Parameterpaare und m&#246;gliche Zwischeninhalte) und minimieren den Aufwand und somit den Speicherverbrauch. Unser &#252;berlanger Artikel m&#252;sste wieder erscheinen.</p>
<p>Mit einer kleine Sch&#246;nheitsoperation k&#246;nnen wir noch die (in meinen Augen) unn&#252;tze gr&#252;ne, nicht-einfangende Klammerung um den eingefangenen optionale Schr&#228;gstrich entfernen: <span style="color: #009000;"><code>(?:(\/))?</code></span> zu <span style="color: #009000;"><code>(\/)?</code></span>. Die modifizierte Methode <code>get_shortcode_regex()</code> sieht nun wie folgt aus:</p>
<pre>function get_shortcode_regex() {
    global $shortcode_tags;
    $tagnames = array_keys($shortcode_tags);
    $tagregexp = join( '|', array_map('preg_quote', $tagnames) );

    return '\[('.$tagregexp.')\b([^\]]*?)(\/)?\](?:(.+?)\[\/\1\])?';
}</pre>
<p>(WordPress 2.7, Datei <em>shortcodes.php</em>, Funktion <code>get_shortcode_regex()</code>, Zeile 165)</p>
<p>(Problems in Wordpress with long posts and plugins like NextGEN Gallery)<!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://brusdeylins.info/wordpress/probleme-mit-shortcodes/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Problem in bb-settings</title>
		<link>http://brusdeylins.info/bbpress/problem-in-bb-settings/</link>
		<comments>http://brusdeylins.info/bbpress/problem-in-bb-settings/#comments</comments>
		<pubDate>Thu, 15 Nov 2007 02:03:30 +0000</pubDate>
		<dc:creator>Matthias Brusdeylins</dc:creator>
				<category><![CDATA[bbPress]]></category>
		<category><![CDATA[Problem]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.brusdeylins.info/bbpress/problem-in-bb-settings/</guid>
		<description><![CDATA[
Die Funktion glob() liefert alle Verzeichnisnamen in einem Array zur&#252;ck, die zu dem &#252;bergebenen Such-Pattern passen. Hierbei wird die glob() Funktion aus libc eingesetzt. Werden keine Dateien bzw. Verzeichnisse gefunden, die auf das Suchkriterium passen, liefert die Funktion ein leeres Array zur&#252;ck. Tritt ein Fehler bei der Ausf&#252;hrung auf, ist das Ergebnis FALSE. Und genau [...]]]></description>
			<content:encoded><![CDATA[<p><!--:de-->
<a href="http://brusdeylins.info/media/post-images/bbpress.jpg" title="bbPress-Logo" rel="lightbox[singlepic5]" >
	<img class="ngg-singlepic ngg-right" src="http://brusdeylins.info/media/cache/5__150x400_bbpress.jpg" alt="bbPress-Logo" title="bbPress-Logo" />
</a>
Nach dem Update auf PHP 5.2.5 bekam ich auf einer meiner verwalteten Webpr&#228;senzen mit einem bbPress-Forum in der Version  0.8.3  nun folgende Fehlermeldung:<br />
<code>Warning: Invalid argument supplied for foreach() in /.../bb-settings.php on line 173 / 169</code></p>
<p>Hier bekommt die ForEach-Schleife ein ung&#252;ltiges Array von der Funktion <code>glob()</code> geliefert, wenn diese auf einen Fehler trifft. Damit in solch einem Fehlerfall die nervige Fehlermeldung nicht mehr auftaucht, muss der Code in <em>bb-settings.php</em> angepasst werden.<!--:--><span id="more-49"></span><!--:de--></p>
<p>Die Funktion <code>glob()</code> liefert alle Verzeichnisnamen in einem Array zur&#252;ck, die zu dem &#252;bergebenen Such-Pattern passen. Hierbei wird die <code>glob()</code> Funktion aus <code>libc</code> eingesetzt. Werden keine Dateien bzw. Verzeichnisse gefunden, die auf das Suchkriterium passen, liefert die Funktion ein leeres Array zur&#252;ck. Tritt ein Fehler bei der Ausf&#252;hrung auf, ist das Ergebnis <code>FALSE</code>. Und genau dieser Fehlerfall f&#252;hrt zu der oben beschriebenen Fehlermeldung.</p>
<p><code>FALSE</code> ist ein Wahrheitswert (boolean) und kein Array und darf somit nicht dem ForEach-Kommando in <em>bb-settings.php</em> in der Zeile 173 (bzw. in der Version 0.8.3.1 in Zeile 169) &#252;bergeben werden. Um dies zu verhindern, muss dieser Fehlerfall vorher &#252;berpr&#252;ft werden. Dies kann mit der folgenden Code-Anpassung erreicht werden:</p>
<p>Originaler Code in <em>bb-settings.php</em> der Version 0.8.3 ab Zeile 172 / 168:</p>
<pre>if ( is_callable( 'glob' ) )
    foreach ( glob(BBPLUGINDIR . '_*.php') as $_plugin )
        require($_plugin);</pre>
<p>Anpassung:</p>
<pre>if ( is_callable( 'glob' ) ) {
    $pluginarray = glob(BBPLUGINDIR . '_*.php');
    if ($pluginarray)
        foreach ( $pluginarray as $_plugin )
            require($_plugin);
}</pre>
<p>Es sei hier noch erw&#228;hnt, dass mit dieser &#196;nderung nicht gleich auff&#228;llt, ob PlugIns, welche mit einem Unterstrich anfangen, auch wirklich geladen werden oder ob hier ein Fehler auftritt. Man merkt dies aber dann, wenn eben die gew&#252;nschte Erweiterung nicht vorhanden ist.<!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://brusdeylins.info/bbpress/problem-in-bb-settings/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Go Gravatar Go !</title>
		<link>http://brusdeylins.info/introduction/go-gravatar-go/</link>
		<comments>http://brusdeylins.info/introduction/go-gravatar-go/#comments</comments>
		<pubDate>Fri, 14 Sep 2007 16:41:04 +0000</pubDate>
		<dc:creator>Matthias Brusdeylins</dc:creator>
				<category><![CDATA[Vorstellungen]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Plug In]]></category>

		<guid isPermaLink="false">http://www.brusdeylins.info/introduction/go-gravatar-go/</guid>
		<description><![CDATA[
Mit mehr als 90.000 Accounts und 4,5 Milliarden ausgelieferten Bildchen zum letzten Jahr wird deutlich, dass die kleinen Hingucker sich gro&#223;er Beliebtheit erfreuen. Im Februar 2007 gab es das Rollout der neuen Version &#8220;Gravatar 2&#8243;. Man erhoffte sich hier in erster Linie ein Geschwindigkeitsanstieg, doch zeigte sich bald, dass der Service teilweise immer noch sehr [...]]]></description>
			<content:encoded><![CDATA[<p><!--:de-->
<a href="http://brusdeylins.info/media/post-images/gravatar.jpg" title="Gravatar-Logo" rel="lightbox[singlepic18]" >
	<img class="ngg-singlepic ngg-right" src="http://brusdeylins.info/media/cache/18__150x400_gravatar.jpg" alt="Gravatar-Logo" title="Gravatar-Logo" />
</a>
Sie werden immer mehr, die pers&#246;nlichen Bildchen in den Kommentaren der Web-Blogs. Dies liegt unter anderem auch an dem kostenlosen Service von <a href="http://site.gravatar.com/" target="_blank">Gravatar.com</a>. Hier kann man kleine Bildchen hochladen und diese dann seiner eMail-Adresse zuordnen. Blogs die diesen Service unterst&#252;tzen, k&#246;nnen somit anhand der angegebenen eMail-Adresse eines Kommentators das passende Bildchen anzeigen. Doch die Server von Gravatar sind mit ihrer Situation gerne &#252;berfordert.<!--:--><span id="more-38"></span><!--:de--></p>
<p>Mit mehr als 90.000 Accounts und 4,5 Milliarden ausgelieferten Bildchen zum letzten Jahr wird deutlich, dass die kleinen Hingucker sich gro&#223;er Beliebtheit erfreuen. Im Februar 2007 gab es das Rollout der neuen Version &#8220;Gravatar 2&#8243;. Man erhoffte sich hier in erster Linie ein Geschwindigkeitsanstieg, doch zeigte sich bald, dass der Service teilweise immer noch sehr langsam ist. Also was tun?</p>
<p>Die L&#246;sung liegt auf der Hand: die Bildchen m&#252;ssen auf dem eigenen Server zwischengespeichert werden. Diese Aufgabe &#252;bernimmt das <a href="http://zenpax.com/gravatars2/" target="_blank">WordPress-Plugin Gravatars2</a> von ZenPax. Die Admin-Oberfl&#228;che erlaubt es einem unterschiedliche Timeout-Werte zu definieren, sowie den lokalen Cache zu verwalten. Zus&#228;tzlich k&#246;nnen lokale Avatare als Quelle definiert werden. Ein Cache hat nat&#252;rlich den Nachteil, dass &#196;nderungen an Inhalten verz&#246;gert sichtbar werden, daf&#252;r werden die Bildchen aber schnell dargestellt.</p>
<p><strong>Update Jan 2009:</strong><br />
Inzwischen wird Gravatar von den neueren WordPress Versionen native unterst&#252;tzt.<!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://brusdeylins.info/introduction/go-gravatar-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Theme-Design und CSS</title>
		<link>http://brusdeylins.info/webdesign/theme-design-und-css/</link>
		<comments>http://brusdeylins.info/webdesign/theme-design-und-css/#comments</comments>
		<pubDate>Sun, 02 Sep 2007 15:16:09 +0000</pubDate>
		<dc:creator>Matthias Brusdeylins</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.brusdeylins.info/blog/2007/09/02/theme-design-und-css/</guid>
		<description><![CDATA[Das Internet bietet viele Wordpress-Themes zum Herunterladen, mit denen man seinen eigenen Blog optisch gestalten kann. Ist jedoch mehr Individualit&#228;t erw&#252;nscht, muss man sich die M&#252;he machen und ein eigenes Theme gestalten. Neben Kenntnisse in einem modernen Grafiktool, wie zum Beispiel in Adobe Photoshop und dem n&#246;tigen grafischen Feingef&#252;hl, sowie Grundkenntnisse in PHP, ist auch [...]]]></description>
			<content:encoded><![CDATA[<p><!--:de-->Das Internet bietet viele Wordpress-Themes zum Herunterladen, mit denen man seinen eigenen Blog optisch gestalten kann. Ist jedoch mehr Individualit&#228;t erw&#252;nscht, muss man sich die M&#252;he machen und ein eigenes Theme gestalten. Neben Kenntnisse in einem modernen Grafiktool, wie zum Beispiel in Adobe Photoshop und dem n&#246;tigen grafischen Feingef&#252;hl, sowie Grundkenntnisse in PHP, ist auch das Studium der Dokumente auf der WordPress-Webseite zum Thema <a href="http://codex.wordpress.org/Blog_Design_and_Layout" target="_blank">Design und Layout</a> erforderlich. Fr&#252;her oder sp&#228;ter st&#246;&#223;t man unter Umst&#228;nden auf das Problem, dass seine Seite von den einzelnen Webbrowsern mit leichten Abweichungen dargestellt wird. Abst&#228;nde und Breitenangaben scheinen unterschiedlich interpretiert zu werden.<!--:--><span id="more-31"></span><!--:de--></p>
<h3>CSS-Default-Werte</h3>
<p>Die einzelnen Browser zeigen einen Inhalt mit unterschiedlichen Vorgabewerten an. Abst&#228;nde zwischen Abs&#228;tze und &#220;berschriften, sowie Schriftgr&#246;&#223;en weichen leicht voneinander ab, zumindest wenn diese nicht explizit in einem Style-Sheet definiert werden. Um zu vermeiden, dass eine CSS-Definition zur H&#228;lfte mit Normierungswerten best&#252;ckt ist, empfiehlt es sich, eine extra Definitionsdatei f&#252;r das Zur&#252;cksetzen aller Werte anzulegen und einzubinden. Hier bieten sich die YUI-CSS-Definitionen von  Yahoo (BSD License) zum Zur&#252;cksetzen der Abst&#228;nde (<a title="yui reset style sheet" href="http://developer.yahoo.com/yui/reset/" target="_blank">Reset</a>) und Normieren der Schriftgr&#246;&#223;en (<a title="yui font style sheet" href="http://developer.yahoo.com/yui/fonts/" target="_blank">Font</a>) an. Leider werden hier sogenannte CSS-Browserweichen eingesetzt, was dazu f&#252;hrt, dass das CSS nicht valide ist.</p>
<p>Wem kleine Abweichungen in der Font-Normierung nichts ausmachen, kann von mir das Reset-Style-Sheet &#8220;<a title="style_reset.css" href="http://www.brusdeylins.info/content/webdesign/style_reset.css" target="_blank">style_reset.css</a>&#8221; herunterladen und in seine Projekte einsetzten (BSD License). Der Vorteil dieser Definition besteht darin, dass sie die <a href="http://jigsaw.w3.org/css-validator/check/referer" target="_blank">W3C-CSS-Pr&#252;fung</a> besteht (siehe Icon im Fu&#223;bereich)! Dieses CSS kann dann mittels <code>@import url('style_reset.css');</code> am Anfang des jeweiligen Haupt-Style-Sheets eingebunden werden. Danach sollte allerdings darauf geachtet werden, dass alle Schriftgr&#246;&#223;en nur noch prozentual angegeben werden. Welche Prozentwerte f&#252;r welche Gr&#246;&#223;enpixel stehen wird in der CSS-Datei als Kommentar aufgelistet.</p>
<h3>CSS-Box-Modell</h3>
<p>Leider interpretiert der Microsoft Internet-Explorer 5 / 6 das CSS-Box-Modell eines 
<a href="http://brusdeylins.info/media/post-images/cssboxmodel.jpg" title="Css-Box-Model
Bildquelle: Brusdeylins.Info" rel="lightbox[singlepic9]" >
	<img class="ngg-singlepic ngg-left" src="http://brusdeylins.info/media/cache/9_web20_150x400_cssboxmodel.jpg" alt="Css-Box-Model" title="Css-Box-Model" />
</a>
HTML-Elements mit fester Breitenangabe etwas anders, als es urspr&#252;nglich <a href="http://www.w3.org/TR/CSS21/box.html" target="_blank">gedacht</a> war. Innerhalb seiner Breite liegen der sichtbare Rahmen (Border), sowie der innere Abstand (Padding) eines Elementes.  Dies bedeutet (und dies auch nur sicher, wenn die Breite angegeben wurde), je gr&#246;&#223;er diese beide Parameter sind, um so weniger Platz bleibt f&#252;r den Inhalt eines Elementes. Der CSS-Standard definiert die Interpretation der Breitenangabe hier anders. Die Breitenangabe gilt dem Inhalt. Rahmen, sowie innerer und &#228;u&#223;erer Abstand (Margin) liegen au&#223;erhalb dieser Breitenangabe. Man mu&#223; sie also zu dieser Angabe addieren, um die komplette Breite zu ermitteln. Welches der beiden Vorgehen intuitiver ist, vor allem auch mit dem Wissen, das die Hintergrundfarbe bzw. das Hintergrundbild auch noch im Padding-Bereich sichtbar ist, sei mal dahingestellt. Die unterschiedlichen Interpretationen des CSS-Box-Modells erschweren das Gestalten einer Webseite bzw. das Erstellen von Wordpress-Themes, welche in der Regel aus einer Kombination mehrerer DIV-Elemente besteht.</p>
<p>Es gibt unterschiedliche Herangehensweisen, um dieses Problem in den Griff zu bekommen. Eine besteht in der Definition unterschiedlicher Breitenangaben, eine f&#252;r den Internet Explorer und eine f&#252;r die restlichen Browser. Dies kann mit so genannten CSS-Browserweichen (CSS-Hacks) in einer globalen Style-Sheet-Definition erreicht werden. Da solche CSS-Dateien aber nicht Standardkonform sind und auf Interpretations-Schw&#228;chen der einzelnen Browser basieren, ist davon abzuraten. Eine weitere M&#246;glichkeit besteht im Einsatz von Kommentar- bzw. PHP-Browserweichen. Beispiele hierf&#252;r findet man in dem Artikel “<a href="http://www.brusdeylins.info/webdesign/png-im-internet-explorer/" target="_blank">PNG im Internet Explorer</a>“.</p>
<p>Will man allerdings nicht zwei CSS-Dateien pflegen, gibt es noch eine weitere Herangehensweise. 
<a href="http://brusdeylins.info/media/post-images/divandmargin.jpg" title="Padding Simulation mit verschachtelten DIVs - Bildquelle: Brusdeylins.Info" rel="lightbox[singlepic12]" >
	<img class="ngg-singlepic ngg-right" src="http://brusdeylins.info/media/cache/12_web20_150x400_divandmargin.jpg" alt="Padding Simulation mit verschachtelten DIVs" title="Padding Simulation mit verschachtelten DIVs" />
</a>
Beide Interpretationen des CSS-Box-Modells haben eins gemeinsam: der &#228;u&#223;ere Abstand (Margin) liegt wirklich au&#223;erhalb der Breitendefinition. Verzichtet man nun auf den Rand (Border) und den inneren Abstand (Padding) komplett (Wert = 0px, oder Einsatz von style_reset.css, s.o.) werden die Angaben von allen Browsern gleich interpretiert. Um nun auch einen inneren Abstand in einem DIV-Element zu realisieren, muss ein weiteres DIV-Element, welches den eigentlichen Inhalt tr&#228;gt, in dieses gelegt werden. Der Margin-Wert des inneren DIVs entspricht dann dem urspr&#252;nglichen Padding-Wert. Jetzt muss noch eine Eigenart der vertikalen Margin-Werte behandelt werden. Wie im CSS 2.1 Standard beschrieben schl&#228;gt hier das so genannte <a href="http://www.w3.org/TR/CSS21/box.html#collapsing-margins" target="_blank">Collapsing-Margins</a> zu, was dazu f&#252;hrt, dass der &#8220;margin-top&#8221; Wert des inneren DIVs gerne komplett ignoriert wird. (<em>Der Internet-Explorer 5/6 h&#228;lt sich hier nicht an den Standard und ordnet die Elemente wie erwartet an. Er addiert vertikale Margin-Werte grunds&#228;tzlich auf, was meist zu unerw&#252;nscht gr&#246;&#223;eren Abst&#228;nden zwischen Elementen f&#252;hrt.</em>) Hier hilft ein Trick, welcher auch aus dem Standard herausgelesen werden kann: Die einzelnen DIVs bekommen eine Overflow-Definition mit einem Wert ungleich &#8220;visible&#8221;. Da in der Regel kein Text &#252;ber die DIV-Content-Grenzen hinweg angezeigt werden soll, kann hier die Definition <code>overflow: hidden;</code> eingebunden werden. Auf diese Art und Weise k&#246;nnen einheitliche WordPress-Themes mit validen CSS-Definitionen erstellt werden.</p>
<h3>BluePrintCSS</h3>
<p>Eine sch&#246;ne Sammlung  nutzbarer CSS-Definitionen liefert auch Google mit ihrem <a href="http://www.blueprintcss.org/" target="_blank">BluePrintCSS</a>. Der Schwerpunkt dieses CSS-Frameworks liegt in der Typographie. So wird auch ein Stylesheet f&#252;r den Druck geliefert. Auch zieht die Idee eines Grid-Layouts aus dem Print-Design-Umfeld in die Stylesheets ein. Dadurch stellt ein Mehrspalten-Layout kein Problem mehr dar. Die Eigenarten des Internet-Explorers wurden hier in einem eigenen Stylesheet sauber getrennt abgelegt.<!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://brusdeylins.info/webdesign/theme-design-und-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easy-HTML-Metadata</title>
		<link>http://brusdeylins.info/projects/easy-html-metadata/</link>
		<comments>http://brusdeylins.info/projects/easy-html-metadata/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 13:10:25 +0000</pubDate>
		<dc:creator>Matthias Brusdeylins</dc:creator>
				<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Projekt]]></category>

		<guid isPermaLink="false">http://www.brusdeylins.info/blog/2007/09/08/easy-html-metadata/</guid>
		<description><![CDATA[
Damit solche Metadaten f&#252;r einzelne WordPress-Beitr&#228;ge individuell angegeben werden k&#246;nnen, wird ein sogenanntes WordPress-Plugin ben&#246;tigt. Ich will hier meine kleine Erweiterung "Easy-HTML-Metadata" vorstellen. Sie reagiert auf zuvor definierte "Benutzerdefinierte Felder" eines Beitrags bzw. einer Seite und gibt dessen Inhalte als Metadaten aus.
Installation
Nach dem Herunterladen der aktuellsten Version dieses Plugins (siehe unten) muss die PHP-Datei aus [...]]]></description>
			<content:encoded><![CDATA[<p><!--:de-->
<a href="http://brusdeylins.info/media/post-images/easy-html-metadata.jpg" title="Easy-HTML-Metadata - Bildquelle: Brusdeylins.Info" rel="lightbox[singlepic14]" >
	<img class="ngg-singlepic ngg-right" src="http://brusdeylins.info/media/cache/14_web20_150x400_easy-html-metadata.jpg" alt="Easy-HTML-Metadata" title="Easy-HTML-Metadata" />
</a>
HTML-Meta-Angaben in der Form <code>&lt;meta name="key" content="value"&gt;</code> enthalten verschiedene, meist dem Leser verborgene Anweisungen f&#252;r Web-Browser und -Server sowie Suchdienste. Leider wurden Metadaten immer wieder missbraucht, um die Suchmaschinen auszutricksen, indem hier Stichw&#246;rter aufgelistet wurden, die mit dem Inhalt nichts  zu tun hatten. Man erhoffte sich so eine bessere Positionierung in der Treffermenge der Suchmaschinen. Aus diesem Grund werden diese Metadaten von namenhaften Suchdiensten nur noch schwach bewertet. Statt dessen wird nun der Inhalt analysiert als auch die Anzahl der Referenzen <em>von </em>externen Internetseiten. Trotzdem geh&#246;rt zu einer gut gestalteten Webseite auch der sinnvolle Einsatz von Meta-Angaben zum Inhalt der aktuell angezeigten Seite, sowie die Angabe des Autors.<!--:--><span id="more-35"></span><!--:de--></p>
<p>Damit solche Metadaten f&#252;r einzelne WordPress-Beitr&#228;ge individuell angegeben werden k&#246;nnen, wird ein sogenanntes WordPress-Plugin ben&#246;tigt. Ich will hier meine kleine Erweiterung &#8220;Easy-HTML-Metadata&#8221; vorstellen. Sie reagiert auf zuvor definierte &#8220;Benutzerdefinierte Felder&#8221; eines Beitrags bzw. einer Seite und gibt dessen Inhalte als Metadaten aus.</p>
<h3>Installation</h3>
<p>Nach dem Herunterladen der aktuellsten Version dieses Plugins (siehe unten) muss die PHP-Datei aus dem Zip-File in das WordPress-Plugin-Verzeichnis (dies ist meist /wp-content/plugins/) kopiert werden. Hier kann man ggf. auch ein Unterverzeichnis anlegen, um so mehr &#220;berblick &#252;ber alle Plugins in seiner WordPress-Installation zu erlangen. Danach muss dieses Plugin in der Adminkonsole aktiviert werden.</p>
<h3>Einsatz</h3>
<p>Jetzt steht dem User unter den Einstellungen ein neuer Men&#252;punkt &#8220;HTML-Metadata&#8221; zur Verf&#252;gung, 
<a href="http://brusdeylins.info/media/post-images/easy-html-metadata-in-action.jpg" title="Easy-HTML-Metadata in Action - Bildquelle: Brusdeylins.Info" rel="lightbox[singlepic13]" >
	<img class="ngg-singlepic ngg-left" src="http://brusdeylins.info/media/cache/13_web20_150x400_easy-html-metadata-in-action.jpg" alt="Easy-HTML-Metadata in Action" title="Easy-HTML-Metadata in Action" />
</a>
 in dem die Standard-Sprache sowie die Namen der benutzerdefinierten Felder definiert werden k&#246;nnen (siehe Bild oben rechts). In der Regel bleiben die Feldnamen unver&#228;ndert. Nun kann man zu jedem Beitrag solche benutzerdefinierten Felder mit angeben. Als Schl&#252;ssel werden die zuvor definierten Namen eingesetzt, der Wert ist dann der Inhalt des zugeordneten Meta-Data-Elementes. Im Beispiel links sind die Meta-Angaben dieses Artikels (zum Zeitpunkt der Erstellung) sichtbar. Das Ergebnis der Version 1.2 im HTML-Kopf dieser hier sichtbaren Seite sieht dazu folgenderma&#223;en aus:</p>
<pre>&lt;meta name="MBEasyHTMLMetadata" content="1.0" /&gt;
&lt;meta name="language" content="de" /&gt;
&lt;meta name="content-language" content="de" /&gt;
&lt;meta name="description" content="Wordpress-Plugin f&#252;r inhaltliche HTML-Metaangaben." /&gt;
&lt;meta name="keywords" content="Wordpress, Plugin, Metadata, Metadaten, Description, Beschreibung, Keywords, Schl&#252;sselw&#246;rter" /&gt;
&lt;meta name="author" content="Matthias Brusdeylins" /&gt;
&lt;meta name="copyright" content="Copyright by Matthias Brusdeylins. Creative Commons 3.0 license - Some rights reserved." /&gt;</pre>
<p>Hier ist auch erkennbar, dass automatisch der volle Name des registrierten Autors mit ausgegeben wird. Das Plugin ben&#246;tigt keine &#196;nderungen an dem installierten WordPress-Theme.</p>
<h3>Download</h3>
<p><a href="http://www.brusdeylins.info/content/projects/ehmd/Easy_HTML_Metadata_1_2.zip" target="_blank">Easy-HTML-Metadata, Version 1.2</a></p>
<h3>Change-Log</h3>
<table class="changelog" border="0">
<tbody>
<tr>
<td class="left">1.2</td>
<td>08.09.2007 &#8211; Copyright information (if full name is defined) and Creative Commons 3.0 license added to the metadata</td>
</tr>
<tr>
<td class="left">1.1</td>
<td>02.09.2007 &#8211; Copyright information added to the admin dialog</td>
</tr>
<tr>
<td class="left">1.0</td>
<td>24.08.2007 &#8211; First release</td>
</tr>
<tr>
<td class="left"></td>
<td></td>
</tr>
</tbody>
</table>
<p><a href="http://creativecommons.org/licenses/GPL/2.0/deed.de" target="_blank"><br />
<img src="http://creativecommons.org/images/public/cc-GPL-a.png" border="0" alt="CC-GNU GPL" /></a><br />
Diese Software f&#228;llt unter den Lizenzvertrag <a href="http://www.brusdeylins.info/license/GPL-License.txt" target="_blank">CC-GNU GPL</a>.<!--:--></p>
]]></content:encoded>
			<wfw:commentRss>http://brusdeylins.info/projects/easy-html-metadata/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Neues Template</title>
		<link>http://brusdeylins.info/news/neues-template/</link>
		<comments>http://brusdeylins.info/news/neues-template/#comments</comments>
		<pubDate>Wed, 20 Jun 2007 13:19:59 +0000</pubDate>
		<dc:creator>Matthias Brusdeylins</dc:creator>
				<category><![CDATA[Neues]]></category>
		<category><![CDATA[Brusdeylins]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.blog.brusdeylins.info/blog/2007/06/20/neues-template/</guid>
		<description><![CDATA[Brusdeylins.Info basiert auf WordPress, ein Blogging- (und eigentlich fast schon CM-) System, welches die Darstellung seiner Webseite mittels Templates steuert, um somit eine Trennung zwischen Inhalt und Optik zu erreichen. Nat&#252;rlich gibt es im Internet massig solcher Vorlagen, nur sind mir diese nicht individuell genug. Somit habe ich mich auf den Weg gemacht, die Welten [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.brusdeylins.info">Brusdeylins.Info</a> basiert auf <a href="http://www.wordpress.org/" target="_blank">WordPress</a>, ein Blogging- (und eigentlich fast schon CM-) System, welches die Darstellung seiner Webseite mittels Templates steuert, um somit eine Trennung zwischen Inhalt und Optik zu erreichen. Nat&#252;rlich gibt es im Internet massig solcher Vorlagen, nur sind mir diese nicht individuell genug. Somit habe ich mich auf den Weg gemacht, die Welten des WordPress zu erkunden, um dann dieses, hier sichtbare Template, ins Leben zu rufen. Logischerweise wurde auch Photoshop kr&#228;ftig eingesetzt, was &#252;brigens eines meiner Lieblingsprogramme ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://brusdeylins.info/news/neues-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

