<?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>AB-WebLog.com&#187; PHP</title>
	<atom:link href="http://www.ab-weblog.com/de/schlagwort/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ab-weblog.com/de</link>
	<description>Andreas Breitschopp</description>
	<lastBuildDate>Mon, 23 Nov 2015 08:51:46 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>WordPress Multisite: Benutzer basierend auf ihrer Browser-Sprache weiterleiten</title>
		<link>http://www.ab-weblog.com/de/wordpress-multisite-benutzer-basierend-auf-ihrer-browser-sprache-weiterleiten/</link>
		<comments>http://www.ab-weblog.com/de/wordpress-multisite-benutzer-basierend-auf-ihrer-browser-sprache-weiterleiten/#comments</comments>
		<pubDate>Fri, 22 Jun 2012 16:44:27 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[mehrsprachig]]></category>
		<category><![CDATA[Multisite]]></category>
		<category><![CDATA[Plug-In]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=503</guid>
		<description><![CDATA[Seit ich den Artikel über den Multisite Language Switcher geschrieben habe, erhalte ich viele Fragen wie ich die Hauptseite &#8220;/&#8221; in meiner WordPress-Multisite-Konfiguration deaktiviert habe. Die Antwort ist simpel: Ich habe sie nicht deaktiviert, sondern lediglich eine eigene, kleine Theme erstellt, &#8230; <a href="http://www.ab-weblog.com/de/wordpress-multisite-benutzer-basierend-auf-ihrer-browser-sprache-weiterleiten/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Seit ich den Artikel über den <a title="Die Lösung für mehrsprachige Blogs mit WordPress" href="http://www.ab-weblog.com/de/die-loesung-fur-mehrsprachige-blogs-mit-wordpress/">Multisite Language Switcher</a> geschrieben habe, erhalte ich viele Fragen wie ich die Hauptseite &#8220;/&#8221; in meiner WordPress-Multisite-Konfiguration deaktiviert habe.</p>
<p>Die Antwort ist simpel: Ich habe sie nicht deaktiviert, sondern lediglich eine eigene, kleine Theme erstellt, welche sicher stellt, dass jeder Benutzer, der auf die Hauptseite &#8220;/&#8221; zugreift, auf die korrekte URL – in meinem Fall &#8220;/en/&#8221; oder &#8220;/de/&#8221; – weitergeleitet wird.</p>
<p>Der folgende Quelltext ist nicht vollständig von mir. Ich erinnere mich, dass ich einfach im Internet nach einer guten Lösung gesucht und diese nach meinen Bedürfnissen angepasst habe, aber das ist schon eine ganze Weile her. Daher weiß ich nicht mehr woher Teile des Quelltexts ursprünglich herstammen.</p>
<p>Egal, hier jedenfalls der Quelltext der Datei <em>index.php</em>, so wie ich sie aktuell in meiner Weiterleitungs-Theme für diese WordPress-Seite verwende:</p>
<pre>&lt;?php
/**
 * The main template file.
 *
 * This is the most generic template file in a WordPress theme
 * and one of the two required files for a theme (the other being style.css).
 * It is used to display a page when nothing more specific matches a query.
 * E.g., it puts together the home page when no home.php file exists.
 * Learn more: http://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Redirect
 */

/**
 * Browser-Sprache ermitteln.
 *
 * @param array $allowed_languages Ein Datenfeld der Sprachen, die auf der Seite zur Verfügung stehen.
 * @param string $default_language Die zu verwendende Standardsprache, wenn keine ermittelt werden konnte.
 * @param string $lang_variable Benutzerdefinierte Sprachenunterstützung. Wenn nicht übergeben wird specified $_SERVER[&#039;HTTP_ACCEPT_LANGUAGE&#039;] verwendet.
 * @param string $strict_mode Wenn true (Standard) wird der gesamte Sprachencode (&quot;en-us&quot;) verwendet und nicht nur der linke Teil (&quot;en&quot;).
 * @return string Die ermittelte Browser-Sprache.
 */
function get_lang_from_browser($allowed_languages, $default_language, $lang_variable = NULL, $strict_mode = TRUE) {
    // $_SERVER[&#039;HTTP_ACCEPT_LANGUAGE&#039;] verwenden, wenn keine Sprachvariable mitgegeben wurde
    if (NULL === $lang_variable)
        $lang_variable = $_SERVER[&#039;HTTP_ACCEPT_LANGUAGE&#039;];

    // Wurde irgendwelche Information mitgeschickt?
    if (empty($lang_variable))
        return $default_language;

    // Den Header auftrennen
    $accepted_languages = preg_split(&#039;/,\s*/&#039;, $lang_variable);

    // Die Standardwerte einstellen
    $current_lang = $default_language;
    $current_q    = 0;
    // Nun alle mitgegebenen Sprachen abarbeiten
    foreach ($accepted_languages as $accepted_language) {
        // Alle Infos dieser Sprache rausholen
        $res = preg_match(
            &#039;/^([a-z]{1,8}(?:-[a-z]{1,8})*)&#039;.
            &#039;(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i&#039;,
            $accepted_language,
            $matches
        );

        if (!$res)
            continue;

        // Sprachcode holen und dann sofort in die Einzelteile trennen
        $lang_code = explode(&#039;-&#039;, $matches[1]);

        // Wurde eine Qualität mitgegeben?
        if (isset($matches[2]))
            $lang_quality = (float)$matches[2];
        else
            $lang_quality = 1.0;

        // Bis der Sprachcode leer ist...
        while (count($lang_code)) {
            // Prüfen, ob der Sprachcode angeboten wird
            if (in_array(strtolower(join(&#039;-&#039;, $lang_code)), $allowed_languages)) {
                // Qualität prüfen
                if ($lang_quality &gt; $current_q) {
                    $current_lang = strtolower(join(&#039;-&#039;, $lang_code));
                    $current_q = $lang_quality;
                    break;
                }
            }
            // Wenn wir im strengen Modus sind, die Sprache nicht versuchen zu minimalisieren
            if ($strict_mode)
                break;

            // Den rechtesten Teil des Sprachcodes abschneiden
            array_pop($lang_code);
        }
    }

    return $current_lang;
}

$allowed_langs = array(&#039;en&#039;, &#039;de&#039;);
$lang = get_lang_from_browser($allowed_langs, &#039;en&#039;, NULL, FALSE);
header(&#039;Location: http://&#039; . $_SERVER[&#039;HTTP_HOST&#039;] . &quot;/$lang/&quot;);

exit();
?&gt;</pre>
<p>Sie müssen also lediglich ein neues Theme-Verzeichnis anlegen und den obigen PHP-Quelltext (wenn nötig natürlich noch die erlaubten Sprachen anpassen) in eine Datei namens <em>index.php</em> kopieren.</p>
<p>Danach ist nur noch zusätzlich eine Dummy-Datei <em>style.css</em> mit einigen Infos zum Theme zu erstellen. Ansonsten wird WordPress Ihre Theme nicht erkennen:</p>
<pre>/*
Theme Name: Redirect
Theme URI: http://wordpress.org/extend/themes/redirect
Author: AB-WebLog.com
Author URI: http://www.ab-weblog.com
Description: Redirects
Version: 1.0
Tags: redirect
*/</pre>
<p>Das war&#8217;s: Nachdem Sie diese neue Theme für Ihre Hauptseite &#8220;/&#8221; ausgewählt haben, wir automatisch jeder Benutzer auf die korrekte Spracheversion basierend auf den Browser-Spracheinstellungen weiter geleitet.</p>
<p><em>Verwenden auch Sie den Multisite Language Switcher für Ihren Blog?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/wordpress-multisite-benutzer-basierend-auf-ihrer-browser-sprache-weiterleiten/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Telefonie-Ereignisbenachrichtigungen von Polycom-Telefonen mittels PHP</title>
		<link>http://www.ab-weblog.com/de/telefonie-ereignisbenachrichtigungen-von-polycom-telefonen-mittels-php/</link>
		<comments>http://www.ab-weblog.com/de/telefonie-ereignisbenachrichtigungen-von-polycom-telefonen-mittels-php/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 09:51:10 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Polycom]]></category>
		<category><![CDATA[POST-Rohdaten]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Telefonie]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=463</guid>
		<description><![CDATA[Alle aktuellen Polycom-Telefone wie die Polycom SoundPoint IP, die Polycom VVX 500/1500 oder die Polycom SpectraLink Serie unterstützen eine Ereignisbenachrichtigung. Dies ist ein hervorragendes Feature, bei welchem das Telefon eine POST-Anfrage an eine vorher definierte URL für verschiedene Telefonie-Ereignisse sendet. Bei &#8230; <a href="http://www.ab-weblog.com/de/telefonie-ereignisbenachrichtigungen-von-polycom-telefonen-mittels-php/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Alle aktuellen Polycom-Telefone wie die Polycom SoundPoint IP, die Polycom VVX 500/1500 oder die Polycom SpectraLink Serie unterstützen eine Ereignisbenachrichtigung. Dies ist ein hervorragendes Feature, bei welchem das Telefon eine POST-Anfrage an eine vorher definierte URL für verschiedene Telefonie-Ereignisse sendet.</p>
<p>Bei der Entwicklung einer PHP-Server-Anwendung, die einige dieser Ereignisse behandelt sollte, stieß ich auf das Problem, dass in dem PHP-Datenfeld <code class="brush: php; gutter: false">$_POST</code> keine Daten enthalten waren, obwohl das Skript vom Polycom-Telefon korrekt aufgerufen wurde.</p>
<p>Nach einigen Nachforschungen fand ich heraus, dass die Daten (aus welchem Grund auch immer) nicht als &#8220;normales&#8221; POST-Key-Value-Paar, sondern also POST-Rohdaten gesendet werden. Somit kann PHP die POST-Rohdaten natürlich auch nicht in das Datenfeld <code class="brush: php; gutter: false">$_POST</code> schreiben.</p>
<p>Hier ist eine Möglichkeit wie man die POST-Rohdaten dennoch erhalten kann:</p>
<pre class="brush: php; gutter: true">// Sicherstellen, dass wirklich POST-Rohdaten verfügbar sind
if ($_SERVER[&#039;REQUEST_METHOD&#039;] === &#039;POST&#039;) {
	// Nun können wir die POST-Rohdaten von der PHP-Standardeingabe lesen
	$rawPostData = trim(file_get_contents(&#039;php://input&#039;));
}</pre>
<p>Als Ergebnis erhalten Sie die XML-Daten, die von dem Polycom-Telefon gesendet wurden, in der Variable <code class="brush: php; gutter: false">$rawPostData</code>.</p>
<p><em>Haben Sie auch bereits Probleme beim Empfang von Polycom Ereignisdaten gehabt?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/telefonie-ereignisbenachrichtigungen-von-polycom-telefonen-mittels-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP-Skript für den Zugriff auf die VirusTotal API Version 2.0</title>
		<link>http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/</link>
		<comments>http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 10:53:44 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Malware]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[VirusTotal]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=442</guid>
		<description><![CDATA[Vor kurzem hat VirusTotal (Englisch) ihre API auf Version 2.0 aktualisiert. Da die Version 1.0 nun veraltet ist, habe ich auch mein PHP-Skript für den Zugriff auf die VirusTotal API aktualisiert: Download des PHP-Skriptes für den Zugriff auf die VirusTotal API Version 2.0 &#8230; <a href="http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor kurzem hat <a title="Webseite des VirusTotal-Dienstes" href="http://www.virustotal.com" target="_blank">VirusTotal</a> (Englisch) ihre API auf Version 2.0 aktualisiert. Da die Version 1.0 nun veraltet ist, habe ich auch <a title="Zugriff auf die öffentliche VirusTotal API mittels PHP" href="http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/">mein PHP-Skript für den Zugriff auf die VirusTotal API</a> aktualisiert:</p>
<p style="text-align: center;"><strong><a title="VirusTotal-API 2.0 PHP-Implementierung" href="http://www.ab-weblog.com/de/files/virustotal-api-2-0-php-implementierung.zip">Download des PHP-Skriptes für den Zugriff auf die VirusTotal API Version 2.0</a></strong></p>
<p>Für eine genaue Beschreibung dieser API-Implementierung, werfen Sie bitte einen Blick auf meinen <a title="Zugriff auf die öffentliche VirusTotal API mittels PHP" href="http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/">Artikel zur VirusTotal API Version 1.0</a>.</p>
<p><em>Lassen Sie mich wissen, wenn Sie Probleme oder Fragen zu diesem PHP-API-Skript haben.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zugriff auf die öffentliche VirusTotal API mittels PHP</title>
		<link>http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/</link>
		<comments>http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 15:42:14 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Malware]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[VirusTotal]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=417</guid>
		<description><![CDATA[Aktualisiertes Skript für VirusTotal API Version 2.0! Nachdem heutzutage sehr viel Spyware und Malware im Umlauf ist, ist es umso wichtiger sicherzustellen, dass der eigene Server stets sauber bleibt. Aus diesem Grund nutze ich öfters den sehr nützlichen VirusTotal-Dienst (Englisch), &#8230; <a href="http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong><a title="PHP-Skript für den Zugriff auf die VirusTotal API Version 2.0" href="http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/">Aktualisiertes Skript für VirusTotal API Version 2.0!</a></strong></p>
<p>Nachdem heutzutage sehr viel Spyware und Malware im Umlauf ist, ist es umso wichtiger sicherzustellen, dass der eigene Server stets sauber bleibt.</p>
<p>Aus diesem Grund nutze ich öfters den sehr nützlichen <a title="Webseite des VirusTotal-Dienstes" href="http://www.virustotal.com" target="_blank">VirusTotal-Dienst</a> (Englisch), um verdächtige Dateien zu überprüfen.</p>
<p>Für ein bestimmtes Projekt wollte ich das gerne automatisieren, um einige Dateien und URLs in definierten Zeitabständen automatisiert prüfen zu können. Dies kann sehr einfach mit der öffentlichen VirusTotal-API realisiert werden.</p>
<p>Leider ist der Link zu einer PHP-Implementierung auf der VirusTotal-Webseite tot. Aus diesem Grund entschied ich mich meine eigene PHP-Implementierung dieser API zu machen.</p>
<p>Sie können eine <a title="VirusTotal-API PHP-Implementierung" href="http://www.ab-weblog.com/de/files/virustotal-api-php-implementierung.zip">Kopie meiner Implementierung downloaden</a>. Der Download beinhaltet auch ein kleines Beispielskript, das erklärt, wie sie verwendet werden kann. Gerne können Sie die Implementierung kostenlos in Ihren Projekten verwenden. Natürlich würde ich mich aber über einen kleinen Backlink freuen. <img src='http://www.ab-weblog.com/de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>In meiner API-Implementierung sind nicht nur die Standard-API-Funktionen implementiert &#8211; diese sind gut dokumentiert und werde daher hier nicht weiter erklärt -, sondern auch einige Hilfsfunktionen, die das Leben einfacher machen sollen. Diese erkläre ich im Folgenden:</p>
<ul>
<li><code class="brush: php; gutter: false">getScanID($result)</code>: Gibt die Scan-ID des Scan-Ergebnisses zurück, die Sie später zur Abfrage eines Scan-Berichtes verwenden können.</li>
<li><code class="brush: php; gutter: false">displayResult($result)</code>: Zeigt ein Scan- oder Übermittlungsergebnis in einem lesbaren Format an.</li>
<li><code class="brush: php; gutter: false">getSubmissionDate($report)</code>: Gibt den Übermittlungszeitpunkt des Scan-Berichtes zurück.</li>
<li><code class="brush: php; gutter: false">getTotalNumberOfChecks($report)</code>: Gibt die Gesamtanzahl der Anti-Virus-Prüfungen des Scan-Berichtes zurück.</li>
<li><code class="brush: php; gutter: false">getNumberHits($report)</code>: Gibt die Anzahl der Anti-Virus-Treffer (Malware) des Scan-Berichtes zurück.</li>
<li><code class="brush: php; gutter: false">getReportPermalink($report, $withDate = TRUE)</code>: Gibt den Permalink des Scan-Berichtes zurück. Wenn <code class="brush: php; gutter: false">$withDate == TRUE</code>, gibt der Permalink genau den aktuellen Scan-Bericht zurück; ansonsten gibt er immer den neuesten Scan-Bericht zurück.</li>
</ul>
<p>Diese Hilfsfunktionen sollten die Arbeit mit den API-Ergebnissen einfacher machen, da Sie sich so nicht mehr um die Details des zurückgegebenen JSON-Objekten kümmern müssen. <a title="VirusTotal-API PHP-Implementierung" href="http://www.ab-weblog.com/de/files/virustotal-api-php-implementierung.zip">Hier daher nochmals der Download meiner kostenlosen API-Implementierung.</a></p>
<p><strong><strong><a title="PHP-Skript für den Zugriff auf die VirusTotal API Version 2.0" href="http://www.ab-weblog.com/de/php-skript-fuer-den-zugriff-auf-die-virustotal-api-version-2-0/">Aktualisiertes Skript für VirusTotal API Version 2.0!</a></strong></strong></p>
<p><em>Haben Sie den VirusTotal-Dienst bereits selbst eingesetzt?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/zugriff-auf-die-oeffentliche-virustotal-api-mittels-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flaggen-Widget als einfach zu verwendendes WordPress Plug-In</title>
		<link>http://www.ab-weblog.com/de/flaggen-widget-als-einfach-zu-verwendendes-wordpress-plug-in/</link>
		<comments>http://www.ab-weblog.com/de/flaggen-widget-als-einfach-zu-verwendendes-wordpress-plug-in/#comments</comments>
		<pubDate>Sun, 30 Oct 2011 19:21:58 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Flagge]]></category>
		<category><![CDATA[Land]]></category>
		<category><![CDATA[Plug-In]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=357</guid>
		<description><![CDATA[Vor einigen Minuten habe ich mein zweites WordPress-Plug-In veröffentlicht: Ein einfaches Plug-In, das Flaggen-Icons anzeigt, die zu anderen Sprachversionen Ihres Blogs verlinken. Dieses Plug-In fasst mein Widget zur Anzeige von Flaggen zur Sprachauswahl im Menü und in der Fußzeile mit &#8230; <a href="http://www.ab-weblog.com/de/flaggen-widget-als-einfach-zu-verwendendes-wordpress-plug-in/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor einigen Minuten habe ich mein zweites WordPress-Plug-In veröffentlicht: Ein einfaches Plug-In, das <a title="Flaggen-Widget" href="http://www.ab-weblog.com/de/wordpress-plug-ins/flaggen-widget/">Flaggen-Icons</a> anzeigt, die zu anderen Sprachversionen Ihres Blogs verlinken.</p>
<p>Dieses Plug-In fasst mein <a title="Widget zur Anzeige von Flaggen zur Sprachauswahl im Menü und in der Fußzeile" href="http://www.ab-weblog.com/de/widget-zur-anzeige-von-flaggen-zur-sprachauswahl-im-menue-und-in-der-fusszeile/">Widget zur Anzeige von Flaggen zur Sprachauswahl im Menü und in der Fußzeile</a> mit vielen zusätzlichen Optionen und Einstellungsmöglichkeiten in ein sauberes WordPress-Plug-In zusammen.</p>
<p>Die <a title="Flaggen-Widget" href="http://www.ab-weblog.com/de/wordpress-plug-ins/flaggen-widget/">Installation und Konfiguration</a> ist sehr einfach. Probieren Sie es aus schreiben Sie mir Ihre Meinung!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/flaggen-widget-als-einfach-zu-verwendendes-wordpress-plug-in/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Die wichtigsten Social Widgets als einfach zu verwendendes WordPress Plug-In</title>
		<link>http://www.ab-weblog.com/de/die-wichtigsten-social-widgets-als-einfach-zu-verwendendes-wordpress-plug-in/</link>
		<comments>http://www.ab-weblog.com/de/die-wichtigsten-social-widgets-als-einfach-zu-verwendendes-wordpress-plug-in/#comments</comments>
		<pubDate>Fri, 09 Sep 2011 23:14:59 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Plug-In]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=250</guid>
		<description><![CDATA[Vor einigen Minuten habe ich mein erster WordPress-Plug-In veröffentlicht: Es zeigt die wichtigsten Social Widgets von Facebook, Twitter und Google+ unterhalb Ihren Artikeln an. Nun stellt sich die Frage: Warum noch ein weiteres Social-Widgets-Plug-In, zumal es hier bereits jede Menge &#8230; <a href="http://www.ab-weblog.com/de/die-wichtigsten-social-widgets-als-einfach-zu-verwendendes-wordpress-plug-in/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor einigen Minuten habe ich mein erster WordPress-Plug-In veröffentlicht: Es zeigt die wichtigsten <a title="Social Widgets" href="http://www.ab-weblog.com/de/wordpress-plug-ins/social-widgets/">Social Widgets von Facebook, Twitter und Google+</a> unterhalb Ihren Artikeln an.</p>
<p><em>Nun stellt sich die Frage:</em><br />
Warum noch ein weiteres Social-Widgets-Plug-In, zumal es hier bereits jede Menge gibt?</p>
<p>Die Antwort ist, dass ich nach einem einfachen und leicht zu verwendenten Plug-In gesucht habe und alle Plug-Ins, die ich fand, waren schlicht und ergreifend zu kompliziert: Ich wollte keine unzähligen unterstützen, sozialen Netzwerke mit hunderten an Optionen &#8211; einfach ein simples Plug-In, welches die wichtigsten Social Widgets abdeckt, ohne dass hierbei eine Konfiguration erforderlich ist!</p>
<p><em>Und genau das ist mein neues Plug-In:</em><br />
<a title="Social Widgets" href="http://www.ab-weblog.com/de/wordpress-plug-ins/social-widgets/">Installieren</a> Sie es, aktivieren Sie es und die Social Widgets werden sofort unter Ihren Artikeln angezeigt &#8211; ganz ohne Konfiguration.</p>
<p><em>Welches Social-Widgets-Plug-In verwenden Sie?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/die-wichtigsten-social-widgets-als-einfach-zu-verwendendes-wordpress-plug-in/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Neue Artikel in WordPress mit Veröffentlichungsdatum durch XML-RPC und PHP erstellen</title>
		<link>http://www.ab-weblog.com/de/neue-artikel-in-wordpress-mit-veroeffentlichungsdatum-durch-xml-rpc-und-php-erstellen/</link>
		<comments>http://www.ab-weblog.com/de/neue-artikel-in-wordpress-mit-veroeffentlichungsdatum-durch-xml-rpc-und-php-erstellen/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 17:51:07 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Datum]]></category>
		<category><![CDATA[ISO 8601]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=228</guid>
		<description><![CDATA[Um neue Artikel zu einem WordPress-Blog hinzufügen zu können, wollte ich die XML-RPC-Schnittstelle mittels PHP verwenden. Zunächst muss hierfür das Kontrollkästchen &#8220;Die WordPress, Movable Type, MetaWeblog und Blogger XML-RPC Schnittstelle aktivieren.&#8221; im Menü &#8220;Einstellungen&#8221;/&#8221;Schreiben&#8221; aktiviert werden. Nun suchte ich nach &#8230; <a href="http://www.ab-weblog.com/de/neue-artikel-in-wordpress-mit-veroeffentlichungsdatum-durch-xml-rpc-und-php-erstellen/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Um neue Artikel zu einem WordPress-Blog hinzufügen zu können, wollte ich die XML-RPC-Schnittstelle mittels PHP verwenden.</p>
<p>Zunächst muss hierfür das Kontrollkästchen &#8220;Die WordPress, Movable Type, MetaWeblog und Blogger XML-RPC Schnittstelle aktivieren.&#8221; im Menü &#8220;Einstellungen&#8221;/&#8221;Schreiben&#8221; aktiviert werden.</p>
<p>Nun suchte ich nach einer direkt verwendbaren Lösung im Internet, da ich sicherlich nicht der Erste war, der Ähnliches bewerkstelligen wollte. Wie erwartet gab es auch eine ganze Reihe von PHP-Skripten, die genau das taten, jedoch mit einem Problem:<br />
Ich wollte auch das Veröffentlichungsdatum manuell mit dem PHP-Aufruf setzen und die meisten Skripte, die ich gefunden hatte, versuchten nicht einmal das zu tun.</p>
<p>Wenige Skripte versuchten zwar das Veröffentlichungsdatum zu setzen, aber das Ergebnis war eine Fehlermeldung ähnlich dieser:<br />
<strong>Fatal error</strong>: Call to a member function getIso() on a non-object in <strong>/var/www/wp-includes/class-wp-xmlrpc-server.php</strong> on line <strong>2373</strong></p>
<p>Nachdem ich einige Dokumente über dieses seltsame ISO-8601-Datumsformat gelesen hatte, fand ich selbst eine Lösung:</p>
<pre class="brush: php; gutter: true">/**
 * Führt einen XML-RPC zu einem WordPress-Blog aus und fügt einen Artikel hinzu.
 *
 * @param string $title Titel des neuen Artikels.
 * @param string $body Inhaltstext des neuen Artikels.
 * @param string $rpcurl RPC-URL des Blogs (meist xmlrpc.php im Stammverzeichnis).
 * @param string $username Benutzername, der zum Hinzufügen des neuen Artikels verwendet wird.
 * @param string $password Passwort, das zum Hinzufügen des neuen Artikels verwendet wird.
 * @param string $categories Komma-getrennte Liste von Kategorien (stellen Sie sicher, dass diese in Ihrem Blog bereits existieren).
 * @param string $keywords Komma-getrennte Liste von Schlüssel-/Schlagwörtern (im Gegensatz zu den Kategorien müssen diese noch nicht existieren).
 * @param string $pubdate Veröffentlichungsdatum in ISO 8601 (mittels date('c') in PHP; aktuelle Zeit wird verwendet, wenn leer).
 * @param string $draftonly True, um nur als Entwurf abzuspeichern, False um es direkt zu veröffentlichen (Standard).
 * @return string Das Ergebnis des XML-RPC.
 */
function wpPostXMLRPC($title, $body, $rpcurl, $username, $password, $categories, $keywords = '', $pubdate = '', $draftonly = false) {
	$content = array(
		'title' =&gt; $title,
		'description' =&gt; $body,
		'mt_allow_comments' =&gt; 1,
		'mt_allow_pings' =&gt; 1,
		'post_type' =&gt; 'post',
		'date_created_gmt' =&gt; '%pubdate%', // Nur als Platzhalter hier.
		'mt_keywords' =&gt; $keywords,
		'categories' =&gt; array($categories)
	);
	$params = array(0, $username, $password, $content, !$draftonly);

	$request = xmlrpc_encode_request('metaWeblog.newPost', $params);
	// Nun müssen wir das eigentliche Veröffentlichungsdatum setzen:
	$request = str_replace('&lt;string&gt;%pubdate%&lt;/string&gt;',
			       '&lt;dateTime.iso8601&gt;' . $pubdate . '&lt;/dateTime.iso8601&gt;',
			       $request);

	$ch = curl_init();
	curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
	curl_setopt($ch, CURLOPT_URL, $rpcurl);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_TIMEOUT, 1);
	$results = curl_exec($ch);
	curl_close($ch);
	return $results;
}</pre>
<p>Wie Sie sehen können, habe ich die für das korrekte ISO-8601-Datumsformat benötigte Datenstruktur einfach direkt selbst in den XML-Aufruf eingefügt. Das mag vielleicht nicht die eleganteste Lösung sein, sie funktioniert jedoch einwandfrei. <img src='http://www.ab-weblog.com/de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><em>Sind Sie selbst auch bereits auf dieses Problem gestoßen?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/neue-artikel-in-wordpress-mit-veroeffentlichungsdatum-durch-xml-rpc-und-php-erstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Widget zur Anzeige von Flaggen zur Sprachauswahl im Menü und in der Fußzeile</title>
		<link>http://www.ab-weblog.com/de/widget-zur-anzeige-von-flaggen-zur-sprachauswahl-im-menue-und-in-der-fusszeile/</link>
		<comments>http://www.ab-weblog.com/de/widget-zur-anzeige-von-flaggen-zur-sprachauswahl-im-menue-und-in-der-fusszeile/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 19:00:37 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[mehrsprachig]]></category>
		<category><![CDATA[Multisite]]></category>
		<category><![CDATA[Plug-In]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Widget]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=44</guid>
		<description><![CDATA[Nachdem ich mich dazu entschlossen hatte die WordPress-Multisite-Funktion für meinen mehrsprachigen Blog zu verwenden (siehe dieser Artikel), wollte ich Flaggen zur Sprachwahl im Menü und in der Fußzeile anzeigen. Dabei hat sich herausgestellt, dass insbesondere die Einbindung von Bildern auf &#8230; <a href="http://www.ab-weblog.com/de/widget-zur-anzeige-von-flaggen-zur-sprachauswahl-im-menue-und-in-der-fusszeile/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich mich dazu entschlossen hatte die WordPress-Multisite-Funktion für meinen mehrsprachigen Blog zu verwenden (<a title="Mehrsprachiger Blog mit WordPress: qTranslate, WPML oder Multisite-Funktion" href="http://www.ab-weblog.com/de/mehrsprachiger-blog-mit-wordpress-qtranslate-wpml-oder-multisite-funktion/">siehe dieser Artikel</a>), wollte ich Flaggen zur Sprachwahl im Menü und in der Fußzeile anzeigen.</p>
<p>Dabei hat sich herausgestellt, dass insbesondere die Einbindung von Bildern auf der rechten Seite des (standardmäßig schwarzen) Menübereichs im Design &#8220;Twenty Eleven&#8221; nicht gerade einfach ist. Daher entschied ich mich dazu, einfach ein kleines Widget zu erstellen, das die Flaggen in einem DIV anzeigt, welches über dem gesamten anderen Inhalt platziert ist und so ganz einfach mit relativen Koordinaten direkt aus dem Admin-Widget-Interface positioniert werden kann.</p>
<p>Folgende Einstellungen können somit im Admin-Bereich getroffen werden:</p>
<p><a href="http://www.ab-weblog.com/de/files/flags_widget_admin.png"><img class="aligncenter size-full wp-image-45" title="Flags-Widget (Admin)" src="http://www.ab-weblog.com/de/files/flags_widget_admin.png" alt="Flags-Widget (Admin)" width="262" height="252" /></a></p>
<ul>
<li>Positionsabstand der Flagge (links): Der relative Abstand der X-Koordinate des DIVs.</li>
<li>Positionsabstand der Flagge (oben): Der relative Abstand der Y-Koordinate des DIVs.</li>
<li>Icon-URL der Flagge (en): Die Icon-URL der englischen Flagge (natürlich zurvor hochgeladen).</li>
<li>Icon-URL der Flagge (de): Die Icon-URL der deutschen Flagge (natürlich zurvor hochgeladen).</li>
</ul>
<p>Selbstverständlich kann das problemlos mit weiteren oder anderen Sprachen erweitert werden.</p>
<p>Und hier ist der Quelltext des Widgets:</p>
<pre class="brush: php; gutter: true">&lt;?php
/**
 * Flags_Widget Class
 */
class Flags_Widget extends WP_Widget {
	/** constructor */
	function Flags_Widget() {
		parent::WP_Widget(false, $name = 'Flags_Widget');
	}

	/** @see WP_Widget::widget */
	function widget($args, $instance) {
		extract($args);
		?&gt;
			&lt;div style="position: relative;"&gt;
				&lt;div style="left: &lt;?php echo $instance['flags_position_left']; ?&gt;px; top: &lt;?php echo $instance['flags_position_top']; ?&gt;px; position: absolute; z-index: 10000 !important;"&gt;
					&lt;?php echo '&lt;a href="/en/"&gt;&lt;img src="' . $instance['flag_en'] . '" width="20" height="16" title="English" alt="English" /&gt;'; ?&gt;&lt;/a&gt;
					&lt;?php echo '&lt;a href="/de/"&gt;&lt;img src="' . $instance['flag_de'] . '" width="20" height="16" title="Deutsch" alt="Deutsch" /&gt;&lt;/a&gt;'; ?&gt;
				&lt;/div&gt;
			&lt;/div&gt;
		&lt;?php
	}

	/** @see WP_Widget::update */
	function update($new_instance, $old_instance) {
		$instance = $old_instance;
		$instance['flags_position_left'] = strip_tags($new_instance['flags_position_left']);
		if (!is_numeric($instance['flags_position_left'])) $instance['flags_position_left'] = '0';
		$instance['flags_position_top'] = strip_tags($new_instance['flags_position_top']);
		if (!is_numeric($instance['flags_position_top'])) $instance['flags_position_top'] = '0';
		$instance['flag_en'] = strip_tags($new_instance['flag_en']);
		$instance['flag_de'] = strip_tags($new_instance['flag_de']);
		return $instance;
	}

	/** @see WP_Widget::form */
	function form($instance) {
		$flags_position_left = esc_attr($instance['flags_position_left']);
		if ($flags_position_left == '') $flags_position_left = '0';
		$flags_position_top = esc_attr($instance['flags_position_top']);
		if ($flags_position_top == '') $flags_position_top = '0';
		$flag_en = esc_attr($instance['flag_en']);
		$flag_de = esc_attr($instance['flag_de']);
		?&gt;
			&lt;p&gt;
				&lt;label for="&lt;?php echo $this-&gt;get_field_id('flags_position_left'); ?&gt;"&gt;&lt;?php _e('Flag position offset (left):'); ?&gt;&lt;/label&gt;
				&lt;input class="widefat" id="&lt;?php echo $this-&gt;get_field_id('flags_position_left'); ?&gt;"
					name="&lt;?php echo $this-&gt;get_field_name('flags_position_left'); ?&gt;" type="text" value="&lt;?php echo $flags_position_left; ?&gt;" /&gt;
				&lt;label for="&lt;?php echo $this-&gt;get_field_id('flags_position_top'); ?&gt;"&gt;&lt;?php _e('Flag position offset (top):'); ?&gt;&lt;/label&gt;
				&lt;input class="widefat" id="&lt;?php echo $this-&gt;get_field_id('flags_position_top'); ?&gt;"
					name="&lt;?php echo $this-&gt;get_field_name('flags_position_top'); ?&gt;" type="text" value="&lt;?php echo $flags_position_top; ?&gt;" /&gt;
				&lt;label for="&lt;?php echo $this-&gt;get_field_id('flag_en'); ?&gt;"&gt;&lt;?php _e('Flag icon URL (en):'); ?&gt;&lt;/label&gt;
				&lt;input class="widefat" id="&lt;?php echo $this-&gt;get_field_id('flag_en'); ?&gt;"
					name="&lt;?php echo $this-&gt;get_field_name('flag_en'); ?&gt;" type="text" value="&lt;?php echo $flag_en; ?&gt;" /&gt;
				&lt;label for="&lt;?php echo $this-&gt;get_field_id('flag_de'); ?&gt;"&gt;&lt;?php _e('Flag icon URL (de):'); ?&gt;&lt;/label&gt;
				&lt;input class="widefat" id="&lt;?php echo $this-&gt;get_field_id('flag_de'); ?&gt;"
					name="&lt;?php echo $this-&gt;get_field_name('flag_de'); ?&gt;" type="text" value="&lt;?php echo $flag_de; ?&gt;" /&gt;
			&lt;/p&gt;
		&lt;?php
	}
} // class Flags_Widget
add_action('widgets_init', create_function('', 'return register_widget("Flags_Widget");'));
?&gt;</pre>
<p>Ich wollte es so einfach wie möglich halten und daher ist alles zusammen in einer Datei. Ansonsten sollte man natürlich zumindest die CSS-Styles in eine externe Style-Sheet-Datei packen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/widget-zur-anzeige-von-flaggen-zur-sprachauswahl-im-menue-und-in-der-fusszeile/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nur Ausschnitt anstatt des gesamten Artikels anzeigen</title>
		<link>http://www.ab-weblog.com/de/nur-ausschnitt-anstatt-des-gesamten-artikels-anzeigen/</link>
		<comments>http://www.ab-weblog.com/de/nur-ausschnitt-anstatt-des-gesamten-artikels-anzeigen/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 14:22:37 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Theme]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=35</guid>
		<description><![CDATA[Standardmäßig werden in dem Theme &#8220;Twenty Eleven&#8221; von WordPress (außer bei den Suchergebnissen) überall die gesamten Artikel angezeigt. Das gefällt mir jedoch gar nicht: Wenn ich auf eine Kategorie oder ein Schlagwort klicken, möchte ich einen Überblick bekommen, welche Artikel &#8230; <a href="http://www.ab-weblog.com/de/nur-ausschnitt-anstatt-des-gesamten-artikels-anzeigen/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Standardmäßig werden in dem Theme &#8220;Twenty Eleven&#8221; von WordPress (außer bei den Suchergebnissen) überall die gesamten Artikel angezeigt. Das gefällt mir jedoch gar nicht: Wenn ich auf eine Kategorie oder ein Schlagwort klicken, möchte ich einen Überblick bekommen, welche Artikel hier zugeordnet sind. Ich kann dann immer noch auf einen klicken, wenn ich diesen vollständig lesen möchte.</p>
<p>Daher wollte ich nur Ausschnitte der Artikel auf den folgenden Seiten anzeigen lassen:</p>
<ul>
<li>Suchergebnisseiten (was bereits standardmäßig der Fall ist)</li>
<li>Startseite des Blogs</li>
<li>Kategorie-Seiten</li>
<li>Schlagwort-Seiten</li>
<li>Datum-basierte Archiv-Seiten (die ich zurzeit überhaupt nicht nutze)</li>
</ul>
<p>Um das zu erreichen, muss man lediglich im Theme die Zeile in der Datei &#8220;content.php&#8221;</p>
<pre class="brush: php; gutter: false">&lt;?php if ( is_search() ) : // Only display Excerpts for Search ?&gt;</pre>
<p>mit dieser ersetzen:</p>
<pre class="brush: php; gutter: false">&lt;?php if ( is_home() || is_tag() || is_category() || is_date() || is_search() ) : ?&gt;</pre>
<p>Das war&#8217;s. Nun finde zumindest ich, dass es für den Benutzer besser aussieht und die Suchmaschinen haben sicherlich auch nichts dagegen (Stichwort: &#8220;duplicate content&#8221;). <img src='http://www.ab-weblog.com/de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/nur-ausschnitt-anstatt-des-gesamten-artikels-anzeigen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dotclear als Alternative zu WordPress</title>
		<link>http://www.ab-weblog.com/de/dotclear-als-alternative-zu-wordpress/</link>
		<comments>http://www.ab-weblog.com/de/dotclear-als-alternative-zu-wordpress/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 14:48:00 +0000</pubDate>
		<dc:creator>Andreas Breitschopp</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[mehrsprachig]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plug-In]]></category>

		<guid isPermaLink="false">http://www.ab-weblog.com/de/?p=32</guid>
		<description><![CDATA[Während ich nach einer guten, neuen Plattform für meinen Blog suchte, war die erste Blog-Software, auf die man trifft, natürlich WordPress. Da ich aber mit den Funktionen von WordPress hinsichtlich mehrsprachiger Blogs nicht so glücklich war (siehe dieser andere Post), &#8230; <a href="http://www.ab-weblog.com/de/dotclear-als-alternative-zu-wordpress/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Während ich nach einer guten, neuen Plattform für meinen Blog suchte, war die erste Blog-Software, auf die man trifft, natürlich WordPress. Da ich aber mit den Funktionen von WordPress hinsichtlich mehrsprachiger Blogs nicht so glücklich war (siehe dieser andere Post), suchte ich nach einer besseren Lösung.</p>
<p>Dann traf ich auf <a title="Internetseite von Dotclear" href="http://dotclear.org" target="_blank">Dotclear</a> (Englisch), das auf den ersten Blick nach einer interessanten Alternative aussah:</p>
<ul>
<li>Es sieht schlicht und einfach aus.</li>
<li>Es ist in PHP geschrieben (da ich selbst auch in PHP entwickle, ist das für mich wichtig, falls es nötig sein sollte selbst einmal etwas hinzuzufügen oder anzupassen).</li>
<li>Es sollte einfach möglich sein mehr als eine Sprache für den Blog zu verwenden (was ja der Grund ist, weswegen ich mit WordPress unzufrieden bin).</li>
</ul>
<p>Daher startete ich einen Versuch und installierte es auf meinem Test-Server, was ohne Probleme oder Fehler funktionierte.</p>
<p>Direkt nach dem ersten Login wollte ich einen Blick in die Dokumentation und die Plug-In-Beschreibungen werden, um zu sehen, welche Plug-Ins für dieses System verfügbar sind. Dann war ich jedoch ziemlich erschrocken: Sämtliche Plug-In-Beschreibungen sowie ein Teil der Dokumentation scheinen nur auf Französisch zur Verfügung zu stehen!</p>
<p>Vielleicht könnte ich es mit Hilfe meiner schulischen Lateinkenntnisse und Google Translate trotzdem verstehen, aber ich möchte wirklich kein Blog-System verwenden, welches als Hauptsprache nicht Englisch hat.</p>
<p>Obwohl ich muttersprachlich Deutsch spreche, sollte meiner Meinung nach ein größeres Open-Source-Projekt nicht einmal Deutsch als Hauptsprache wählen: Gib es Übersetzungen in anderen Sprache, ist das natürlich super, aber die meisten Leute verstehen nun mal Englisch und daher sollte die Hauptsprache eines Projektes auch Englisch sein! Punkt.</p>
<p>Somit habe ich den Test mit Dotclear abgebrochen und bleibe bei WordPress.</p>
<p><em>Haben Sie auch bereits positive oder negative Erfahrungen mit Dotclear gemacht?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ab-weblog.com/de/dotclear-als-alternative-zu-wordpress/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->