<?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>Kau-Boys blog &#187; Snippet</title>
	<atom:link href="http://kau-boys.de/tag/snippet/feed" rel="self" type="application/rss+xml" />
	<link>http://kau-boys.de</link>
	<description>Webdevelopment and more</description>
	<lastBuildDate>Fri, 16 Mar 2012 19:15:48 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>WordPress Core Strings ohne Verlust beim nächsten Update überschreiben</title>
		<link>http://kau-boys.de/1498/wordpress/wordpress-core-strings-ohne-verlust-beim-naechsten-update-ueberschreiben?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wordpress-core-strings-ohne-verlust-beim-naechsten-update-ueberschreiben</link>
		<comments>http://kau-boys.de/1498/wordpress/wordpress-core-strings-ohne-verlust-beim-naechsten-update-ueberschreiben#comments</comments>
		<pubDate>Fri, 16 Mar 2012 19:15:48 +0000</pubDate>
		<dc:creator>Bernhard</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Snippet]]></category>
		<category><![CDATA[Theme]]></category>

		<guid isPermaLink="false">http://kau-boys.de/?p=1498</guid>
		<description><![CDATA[Auf dem letzten WP Meetup Potsdam hat Caspar eine kleine Einführung in das Thema Multisite gegeben. Dabei päsentierte er auch kurz das Einrichten eines neuen Blogs im Netzwerk. Als er sich im Dashboard angemeldet hatte wies er uns auch darauf hin, dass er die Bezeichnung &#8220;Dashboard&#8221; in &#8220;Übersicht&#8221; umbenannt hat, da dies wohl für einige [...]]]></description>
			<content:encoded><![CDATA[<p>Auf dem letzten <a href="http://wpmeetup-potsdam.de/160/review-wpmeetup-slides-multisite-13-3-2012">WP Meetup Potsdam</a> hat <a href="http://glueckpress.com">Caspar</a> eine kleine <a href="http://glueckpress.com/blog/1014/wordpress-multisite-wp-meetup-potsdam">Einführung in das Thema Multisite</a> gegeben. Dabei päsentierte er auch kurz das Einrichten eines neuen Blogs im Netzwerk. Als er sich im Dashboard angemeldet hatte wies er uns auch darauf hin, dass er die Bezeichnung &#8220;Dashboard&#8221; in &#8220;Übersicht&#8221; umbenannt hat, da dies wohl für einige Kunden besser verstädnlich ist.</p>
<h2>Der falsche Weg</h2>
<p>Auf die Nachfrage, wie er es denn umbenannt hätte, musste er dann zugeben, dass er die originale Datei überschrieben hat. Oder er hatte sie komplett kopiert und dann den einen String geändert, das weiß ich nicht mehr so genau. Aber auf jeden Fall waren wir uns alle einige, dass dies eine sehr schlechte Lösung des Problems ist. Spätestens beim nächsten großen Update, wie z.B. bald auf Version 3.4, wird auch die Übersetzungsdatei wohl wieder überschrieben werden müssen. Alle geänderten Übersetzungen sind somit verloren und müssen erneut überschrieben werden. Ich war mit aber sehr sicher, dass es dafür eine bessere Lösung gibt.</p>
<h2>Der richtige Weg</h2>
<p>Vor einiger Zeit habe ich dem Artikel <a href="http://kau-boys.de/1341/wordpress/lokalisierung-fuer-child-themes-am-beispiel-von-thematic">Lokalisierung für Child Themes am Beispiel von Thematic</a> beschrieben, wie man in einem Child-Theme die Übersetzungen für Strings im Parent Theme überschreiben kann. Ich war mir sehr sicher, dass dies auch für die WordPress Core Strings funktionieren muss. Bei Core-Übersetzungen wird ja in den Übersetzungsfunktionen keine Domain angegeben. Daher war die erste Vermutung, dass man einfach einen leeren String für das Einbinden der Übersetzungsdatei verwenden muss. Aber das war nicht ganz korrekt. Man muss den String &#8220;default&#8221; als Parameter verwenden. Damit ist es dann möglich, eine eigene Übersetzungsdatei zu laden. In dieser Datei müssen aber nicht alle Strings enthalten sein. Es reicht aus, wenn man nur die zu überschreibenden aufführt. Die Einbindung dieser mo-Datei geschieht dann wie folgt:</p>
<pre class="brush: php; gutter: false; title: ; notranslate">
load_textdomain( 'default', dirname( __FILE__ ).'/'.get_locale().'.mo' );
</pre>
<p>In diesem Beispiel befindet sich dann z.B: die Datei de_DE.mo im selben Verzeichnis wie die Datei, in die diese Zeile eingefügt wurde. Dies kann in eurem Theme aber auch in einem Plugin geschehen. Im Falle von Capsar ist es sogar am sinnvollsten, das ganze als &#8220;must-use&#8221; Plugin im Ordner <code>/wp-contents/mu-plugins/</code> abzulegen. Ich habe das ganze natürlich auch mal für euch fertig vorbereitet und ihr könnt es hier herunterladen und einfach als Plugin installieren:</p>
<p class="aligncenter">
<a href="http://kau-boys.de/wp-content/uploads/2012/03/translation-override.zip" class="awesome large breakerbay" style="margin-left:20px;">Download</a>
</p>
<h2>Fazit</h2>
<p>Auch hier hat sich wieder gezeigt, wie flexibel WordPress ist. Auch mein Grundsatz &#8220;Don&#8217;t hack the core, never!&#8221; (auf Deutsch würde man wohl sagen &#8220;Nur gucken, nicht anfassen!&#8221;) wurde dadurch mal wieder bestätigt. Ich habe bisher wirklich noch kein Problem gefunden, dass ich nicht durch ein paar Zeilen Code in der functions.php Datei oder durch ein kleines Plugin lösen konnte, ohne den Core anfassen zu müssen. Das einizige, was einem hier noch passieren könnte ist eine Änderung des zu übersetzenden Strings in einer neuen Version. Dann müsste natürlich auch die Übersetzungsdatei angepasst werden. Aber eben auch nur die wenigen Strings darin und auch nur die, die sich geändert haben.</p>
<p>Was haltet ihr von meiner Lösung? Hättet ihr gedacht, dass so etwas mit nur einer Zeile Code möglich ist? Habt ihr vielleicht auch ähnlich tolle Fixes parat? Über Kommentare würde ich mich wie immer sehr freuen.</p>
]]></content:encoded>
			<wfw:commentRss>http://kau-boys.de/1498/wordpress/wordpress-core-strings-ohne-verlust-beim-naechsten-update-ueberschreiben/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Assoziatives Array als HTML Tabelle ausgeben</title>
		<link>http://kau-boys.de/803/webentwicklung/assoziatives-array-als-html-tabelle-ausgeben?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=assoziatives-array-als-html-tabelle-ausgeben</link>
		<comments>http://kau-boys.de/803/webentwicklung/assoziatives-array-als-html-tabelle-ausgeben#comments</comments>
		<pubDate>Tue, 09 Mar 2010 21:39:06 +0000</pubDate>
		<dc:creator>Bernhard</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Snippet]]></category>

		<guid isPermaLink="false">http://kau-boys.de/?p=803</guid>
		<description><![CDATA[Sehr häufig wird gefordert ein assoziatives Array als HTML Tabelle auszugeben. Ich nutze hier sehr oft die implode() Funktion, um dabei mit möglichst wenig Quellcode zu dem Gewünschten Ergebnis zu kommen. Da ich meine Lösung wirklich sehr schön und genial einfach finde, wollte ich euch kurz die Funktion präsentieren. Als auszugebendes Array nehmen wir das [...]]]></description>
			<content:encoded><![CDATA[<p>Sehr häufig wird gefordert ein assoziatives Array als HTML Tabelle auszugeben. Ich nutze hier sehr oft die <a href="http://de.php.net/manual/en/function.implode.php">implode() Funktion</a>, um dabei mit möglichst wenig Quellcode zu dem Gewünschten Ergebnis zu kommen. Da ich meine Lösung wirklich sehr schön und genial einfach finde, wollte ich euch kurz die Funktion präsentieren. Als auszugebendes Array nehmen wir das MySQL-Debugging Array aus meinem vorherigen Artikel <a href="http://kau-boys.de/794/webentwicklung/mysql-unter-php-debuggen-mit-einer-eigenen-mysql-klasse">MySQL unter PHP debuggen mit einer eigenen MySQL Klasse</a>.</p>
<pre class="brush: php; title: ; notranslate">
function array_to_table($a){
	$t='&amp;lt;table&amp;gt;';
	$t.='&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;'.implode('&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;', array_keys($a[0])).'&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;';
	foreach($a as $row){
		$t.= '&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;'.implode('&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;', $row).'&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;';
	}
	return $t.='&amp;lt;/table&amp;gt;';
}

// Ausgabe der Tabelle
echo array_to_table($mysqli-&amp;gt;queries);
</pre>
<p><span id="more-803"></span></p>
<p>In Zeile 3 werden die Schlüssel des assoziativen Array für die Überschriften der Spalten genutzt. Wir öffnen hier eine Zeile und eine Spalte und fügen dann mit Hilfe der implode() Funktion alle Schlüssel in diese Zeile ein. Die &#8220;Glue&#8221; für die implode() Funktion ist hierbei ein schließendes Tag für die Spalte und ein weiteres öffnendes. Am Ende der Zeile schließen wir noch die letzte Spalte und die Zeile. Die gleiche elegante Anwendung der implode() Funktion verwenden wir auch bei den einzelnen Spalten mit den Werten. Hier in einer foreach Schleife.</p>
<p>Mit dieser Funktion kann jedes assoziative Array sehr elegant ausgegeben werden. Dabei lässt sich die Funktion trefflich erweitern. So könnte z.B. in einem Parameter ein Array mit Schlüsselnamen übergeben werden, wenn die Schlüssel des Assoziativen Arrays nicht passend für die Tabelle sind. Oder es könnte jeder Zeile eine alternierende &#8220;gerade&#8221; und &#8220;ungerade&#8221; Klasse mitgegeben werden. Oder aber man vergibt Klassen um eine der vielen JavaScript Sortierungen auf die Tabelle anwenden zu können.</p>
<p>Wir ihr also sehen könnt ihr eure Fantasie bei der Erweiterbarkeit freien Lauf lassen. Ich vergebe meistens die Klassen für Sortierung einer Tabelle mit der <a href="http://www.millstream.com.au/view/code/tablekit/">Tablekit Sortierung</a>.</p>
<p>Ich hoffe, dass euch die Funktion bei eurer täglichen Arbeit helfen kann. Ich liebe die implode() Funktion, da man mit ihr sehr elegant PHP Arrays in Strings umwandeln kann. Ich verwende sie auch häufig beim Erstellen von SQL Statements in Verbindung mit dem <a href="http://dev.mysql.com/doc/refman/5.1/de/comparison-operators.html#id2785292">IN() Operator</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kau-boys.de/803/webentwicklung/assoziatives-array-als-html-tabelle-ausgeben/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

