<?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>Udo Telaar - Webdevelopment</title>
	<atom:link href="http://www.udo-telaar.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udo-telaar.de</link>
	<description></description>
	<lastBuildDate>Fri, 11 May 2012 11:31:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SetEnv FLOW3_CONTEXT beim lighttpd</title>
		<link>http://www.udo-telaar.de/setenv-flow3_context-beim-lighttpd/</link>
		<comments>http://www.udo-telaar.de/setenv-flow3_context-beim-lighttpd/#comments</comments>
		<pubDate>Fri, 11 May 2012 11:25:10 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[FLOW3]]></category>
		<category><![CDATA[Serveradministration]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/?p=389</guid>
		<description><![CDATA[Wir haben bei uns in der Agentur ein etwas außergewöhnlicheres Setup mit einem FreeBSD als OS und einem lighttpd als Webserver. Da musste ich mich heute auch erst mal beim Admin kundig machen, wie dort Environment Variablen gesetzt werden, die ...]]></description>
			<content:encoded><![CDATA[<p>Wir haben bei uns in der Agentur ein etwas außergewöhnlicheres Setup mit einem <a href="http://www.freebsd.org/de/" title="FreeBSD" target="_blank">FreeBSD</a> als OS und einem <a href="http://www.lighttpd.net/" title="lighttpd" target="_blank">lighttpd</a> als Webserver. Da musste ich mich heute auch erst mal beim Admin kundig machen, wie dort Environment Variablen gesetzt werden, die dann mittels <a href="http://php.net/manual/de/function.getenv.php" title="getenv php" target="_blank">getenv()</a> in php ausgelesen werden können. Für den Apache findet man diverse Hinweise, insbesondere bei den größeren Frameworks die mit diesen Variablen oftmals den Kontext der Applikation regeln, für den lighty aber irgendwie nicht. Wer seinen Flow3 Kontext also korrekt in der lighttpd Konfiguration platzieren möchte, findet hier die Lösung:<br />
<span id="more-389"></span></p>
<pre class="brush: bash; title: ; notranslate">
fastcgi.server = (
        &quot;.php&quot; =&gt; ((
                &quot;bin-path&quot; =&gt; &quot;/usr/local/bin/php-cgi&quot;,
                &quot;bin-environment&quot; =&gt; (
                        &quot;PHP_FCGI_CHILDREN&quot;     =&gt; &quot;16&quot;,
                        &quot;PHP_FCGI_MAX_REQUESTS&quot; =&gt; &quot;10000&quot;,
                        &quot;FLOW3_CONTEXT&quot;         =&gt; &quot;Development&quot;,
                ),
        ))
)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/setenv-flow3_context-beim-lighttpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interessante Blogposts der letzten Woche</title>
		<link>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-6/</link>
		<comments>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-6/#comments</comments>
		<pubDate>Tue, 01 May 2012 08:56:13 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-6/</guid>
		<description><![CDATA[Meine favorisierten Blogposts in der letzten Woche. allfacebook.de &#124; Draufgeklickt! Die Facebook-Kolumne von Tobias Gillen Imagecredits: Jenzig71 / photocase.com &#x201C;Muss das denn immer alles auf Englisch sein?&#x201D;, fragte mich die &#xE4;ltere Dame im Zug etwas&#8230; Download: Aktualisiertes Photoshop Template für ...]]></description>
			<content:encoded><![CDATA[<p>Meine favorisierten Blogposts in der letzten Woche.</p>
<ul>
<li><a href='http://allfacebook.de/kolumne/draufgeklickt-erika-facebook-facebook-erika?utm_source=feedburner'>allfacebook.de | Draufgeklickt!</a>
<p>Die Facebook-Kolumne von Tobias Gillen Imagecredits: Jenzig71 / photocase.com &#x201C;Muss das denn immer alles auf Englisch sein?&#x201D;, fragte mich die &#xE4;ltere Dame im Zug etwas&hellip;</p>
</li>
<li><a href='http://allfacebook.de/pages/timeline-template?utm_source=feedburner'>Download: Aktualisiertes Photoshop Template für die Facebook Timeline</a>
<p>Wir hatten bereits &#xFC;ber die Design&#xE4;nderungen der Facebook Pages am 26. April berichtet bei der sich die Profilbildgr&#xF6;&#xDF;e der Pages &#xE4;ndert. Von Hike&#xA0;haben wir ein&hellip;</p>
</li>
<li><a href='http://t3n.de/news/8-aktuelle-flow3-projekte-384134/'>8 aktuelle FLOW3-Projekte im Live-Einsatz</a>
<p>FLOW3 ist ein PHP-basiertes Open-Source Application-Framework, das 2011 in der ersten stabilen Version nach LGPL-Lizenz ver&#xF6;ffentlicht wurde. Zum einen bildet FLOW3 die Basis f&#xFC;r die&hellip;</p>
</li>
</ul>
<p>This post was generated with <a href='http://kanedo.net/projekte/readability-favorites/?pk_campaign=Plugin&amp;pk_kwd=Readability%20Favorites'>Readability Favorites</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Übersetzungen in Oxid Modulen</title>
		<link>http://www.udo-telaar.de/ubersetzungen-in-oxid-modulen/</link>
		<comments>http://www.udo-telaar.de/ubersetzungen-in-oxid-modulen/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 16:59:12 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/?p=377</guid>
		<description><![CDATA[In meinen letzten beiden Oxid Beiträgen habe ich mir nicht die Mühe gemacht, die benötigten Übersetzungen gleich mit einzutragen. Das möchte ich heute kurz nachholen und die möglichen Vorgehensweisen kurz erläutern. Die deutsche Übersetzung befindet sich in unserem Fall in ...]]></description>
			<content:encoded><![CDATA[<p>In meinen letzten <a href="http://www.udo-telaar.de/hello-world-mein-erstes-oxid-eshop-modul/" title="Hello World – Mein erstes OXID eShop Modul">beiden</a> <a href="http://www.udo-telaar.de/mein-erstes-oxid-modul-part-ii-admin-option/" title="Mein erstes Oxid Modul Part II Admin Option">Oxid Beiträgen</a> habe ich mir nicht die Mühe gemacht, die benötigten Übersetzungen gleich mit einzutragen. Das möchte ich heute kurz nachholen und die möglichen Vorgehensweisen kurz erläutern.<br />
<span id="more-377"></span><br />
Die deutsche Übersetzung befindet sich in unserem Fall in dem Ordner /out/azure/de/lang.php. Diese Datei sollte man aber nicht editieren, da bei einem späteren Update sämtliche Änderungen wieder überschrieben werden würden. Stattdessen hat man von Oxid die Datei cust_lang.php für eigene Ergänzungen oder Änderungen (cust_lang.php überschreibt vorhandene Einträge in lang.php) vorgesehen. /out/azure/de/cust_lang.php sollte also so aussehen:</p>
<pre class="brush: php; title: ; notranslate">
$sLangName  = &quot;Deutsch&quot;;
// -------------------------------
// RESOURCE IDENTITFIER = STRING
// -------------------------------
$aLang = array(
    'charset'             =&gt; 'ISO-8859-15',
    'DETAILS_PRICESAVING' =&gt; 'Preisersparnis',
);

/*
[{ oxmultilang ident=&quot;GENERAL_YOUWANTTODELETE&quot; }]
*/
</pre>
<p>Dann noch schnell den /tmp Ordner gelöscht und die Übersetzung erscheint auch auf der Webseite.</p>
<p><a href="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_module_translation.png"><img src="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_module_translation.png" alt="" title="oxid_module_translation" width="382" height="173" class="alignnone size-full wp-image-382" /></a></p>
<p>Noch etwas eleganter wird es, wenn man eine eigene Sprachdatei für sein Modul anlegt. So kann man seine Moduldateien mit Hilfe von Symlinks nämlich in einem Ordner zusammenhalten. Damit die eigene Sprachdatei bei der Übersetzung berücksichtigt wird, sind nur zwei Dinge zu beachten:<br />
1) Die Datei muss mit _lang.php enden<br />
2) In der Datei muss ein charset angegeben werden.</p>
<p>In meinem Beispiel habe ich die Datei udoPriceSaving_lang.php mit folgendem Inhalt in den Ordner /out/azure/de gepackt:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
/**
 * PHP version 5.3.6
 *
 * @author      Udo Telaar &lt;post@udo-telaar.de&gt;
 * @license     GPLv3
 * @copyright   Copyright (c) 2012 Udo Telaar
 * @link        http://www.udo-telaar.de
 * @version     $Id:$
 *
 * 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 3 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, see &lt;http://www.gnu.org/licenses/&gt;.
 */

$sLangName  = &quot;Deutsch&quot;;

$aLang = array(
    'charset'             =&gt; 'UTF-8',
    'DETAILS_PRICESAVING' =&gt; 'Preisersparnis',
);
</pre>
<p>Wenn man das ganze, wie oben kurz beschrieben, per Symlink lösen möchte, um seine Moduldateien in einem Ordner zu konzentrieren, kann man die Datei auch z.B. in /modules/udoPriceSaving/out/azure/de ablegen und per Symlink einbinden:</p>
<pre class="brush: bash; title: ; notranslate">
udo:/htdocs/out/azure/de$ ln -s ../../../modules/udoPriceSaving/out/azure/de/udoPriceSaving_lang.php udoPriceSaving_lang.php
</pre>
<p>Um die Phrasen im Adminbereich zu übersetzen, kann man sich der gleichen Vorgehensweise bedienen, nur müssen die Modifikationen im Ornder /out/admin/&#8230;, statt /out/azure&#8230; vorgenommen werden.</p>
<p>Weitere Infos zu den Übersetzungen findet man auch auf der <a href="http://www.oxid-esales.com/de/resources/help-faq/eshop-manual/die-sprachdateien-bearbeiten" title="Oxid Webseite" target="_blank">Oxid Webseite</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/ubersetzungen-in-oxid-modulen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interessante Blogposts der letzten Woche</title>
		<link>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-5/</link>
		<comments>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-5/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 08:48:50 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-5/</guid>
		<description><![CDATA[Meine favorisierten Blogposts in der letzten Woche. 6 Tipps zum Umgang mit Kritik im Social Web Auf XING teilen Viele Unternehmen untersch&#xE4;tzen die Wirksamkeit des This post was generated with Readability Favorites]]></description>
			<content:encoded><![CDATA[<p>Meine favorisierten Blogposts in der letzten Woche.</p>
<ul>
<li><a href='http://www.1-2-social.de/blog/6-tipps-zum-umgang-mit-kritik-im-social-web/'>6 Tipps zum Umgang mit Kritik im Social Web</a>
<p>Auf XING teilen Viele Unternehmen untersch&#xE4;tzen die Wirksamkeit des</p>
</li>
</ul>
<p>This post was generated with <a href='http://kanedo.net/projekte/readability-favorites/?pk_campaign=Plugin&amp;pk_kwd=Readability%20Favorites'>Readability Favorites</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mein erstes Oxid Modul Part II Admin Option</title>
		<link>http://www.udo-telaar.de/mein-erstes-oxid-modul-part-ii-admin-option/</link>
		<comments>http://www.udo-telaar.de/mein-erstes-oxid-modul-part-ii-admin-option/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 11:29:24 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/?p=359</guid>
		<description><![CDATA[Letzte Woche hatte ich mich ja bereits mit dem erstellen eines einfachen Oxid Moduls beschäftigt. Heute werde ich das Modul, um eine einfach Admin Option erweitern. Wer die Preiserspartnis nicht als Betrag, sondern lieber prozentual anzeigen möchte, der soll dies ...]]></description>
			<content:encoded><![CDATA[<p>Letzte Woche hatte ich mich ja bereits mit dem erstellen eines einfachen Oxid Moduls beschäftigt. Heute werde ich das Modul, um eine einfach Admin Option erweitern. Wer die Preiserspartnis nicht als Betrag, sondern lieber prozentual anzeigen möchte, der soll dies im Admin über eine Checkbox auswählen können. Als passende Stelle für diese Option habe ich die Artikeleinstellungen unter Grundeinstellungen -> Einstell. -> Artikel gewählt. Damit die Auswahl &#8220;SHOWPRICESAVINGASPERCENTAGE&#8221; (wieder keine Übersetzungen eingebaut) erscheint muss lediglich die Datei /out/admin/tpl/shop_config.tpl um folgende Zeilen ergänzt werden:<br />
<span id="more-359"></span></p>
<pre class="brush: php; title: ; notranslate">
&lt;dl&gt;
    &lt;dt&gt;
        &lt;input type=hidden name=confbools[blShowPriceSavingAsPercentage] value=false&gt;
        &lt;input type=checkbox name=confbools[blShowPriceSavingAsPercentage] value=true  [{if ($confbools.blShowPriceSavingAsPercentage)}]checked[{/if}] [{ $readonly}]&gt;
                    [{ oxinputhelp ident=&quot;HELP_SHOP_CONFIG_SHOWPRICESAVINGASPERCENTAGE&quot; }]
    &lt;/dt&gt;
    &lt;dd&gt;
        [{ oxmultilang ident=&quot;SHOP_CONFIG_SHOWPRICESAVINGASPERCENTAGE&quot; }]
    &lt;/dd&gt;
    &lt;div class=&quot;spacer&quot;&gt;&lt;/div&gt;
&lt;/dl&gt;
</pre>
<p>Da die Tabelle oxconfig als <a href="http://en.wikipedia.org/wiki/Entity-attribute-value_model" title="eav" target="_blank">EAV</a> angelegt ist, braucht man auf der Adminseite nichts weiter machen. Die Option wird jetzt automatisch beim nächsten Klick auf den Speichern-Button in die Tabelle übernommen. </p>
<p><a href="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_modul_programmieren_admin_percentage.png"><img src="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_modul_programmieren_admin_percentage-300x231.png" alt="" title="oxid_modul_programmieren_admin_percentage" width="300" height="231" class="size-medium wp-image-360" /></a></p>
<p>In unserem udoPriceSaving Modul ist diese Option jetzt einfach über &#8220;oxConfig::getInstance()->getConfigParam(&#8216;blShowPriceSavingAsPercentage&#8217;)&#8221; abrufbar. Die Config wird bei Oxid also als Singleton realisiert, worüber alle Settings aus der oxconfig Tabelle verfügbar sind.</p>
<pre class="brush: php; title: ; notranslate">
/**
 * udoPriceSaving
 *
 * @author      Udo Telaar &lt;post@udo-telaar.de&gt;
 */
class udoPriceSaving extends udoPriceSaving_parent
{
    /* @var $this oxArticle */

    public function getPriceSaving()
    {
        if ($this-&gt;getFTPrice() &gt; $this-&gt;getFPrice()) {
            if (oxConfig::getInstance()-&gt;getConfigParam('blShowPriceSavingAsPercentage')) {
                return floor(100 * (1 - $this-&gt;getFPrice()/$this-&gt;getFTPrice())) . ' %';
            }

            return $this-&gt;getFTPrice() - $this-&gt;getFPrice() . ' €';
        }
    }
}
</pre>
<p>Bei der Ausgabe habe ich kurzfristig etwas gefuscht. Die Anzeige des ensprechenden Währungs- bzw. Prozentzeichens sollte man sicherlich im Template belassen. Beim nächsten Teil werde ich die Abfrage der entsprechenden Konfigurationsvariablen dort wieder einbauen. Um die korrekte Funktionsweise unserer neuen Adminfunktion zu verdeutlichen erfüllt folgender Quelltext, in der Datei /out/azure/tpl/page/details/inc/productmain.tpl aber erst mal seinen Zweck:</p>
<pre class="brush: php; title: ; notranslate">
[{if $oDetailsProduct-&gt;getPriceSaving()}]
    &lt;span class=&quot;priceOld&quot;&gt;
        [{ oxmultilang ident=&quot;DETAILS_PRICESAVING&quot; }] [{ $oDetailsProduct-&gt;getPriceSaving()}]
    &lt;/span&gt;
[{/if}]
</pre>
<p>Das ganze sollte dann am Ende so aussehen:</p>
<p><div id="attachment_362" class="wp-caption alignnone" style="width: 310px"><a href="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_price_percentage.png"><img src="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_price_percentage-300x247.png" alt="" title="oxid_price_percentage" width="300" height="247" class="size-medium wp-image-362" /></a><p class="wp-caption-text">Oxid Modul Price Percentage</p></div><br />
<div id="attachment_361" class="wp-caption alignnone" style="width: 310px"><a href="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_price_amount.png"><img src="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_price_amount-300x239.png" alt="" title="oxid_price_amount" width="300" height="239" class="size-medium wp-image-361" /></a><p class="wp-caption-text">Oxid Modul Price Amount</p></div></p>
<p>Beim nächsten Mal werde ich dann auch die Übersetzungen mit einbauen. So sieht das ja wirklich nicht schön aus.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/mein-erstes-oxid-modul-part-ii-admin-option/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello World &#8211; Mein erstes OXID eShop Modul</title>
		<link>http://www.udo-telaar.de/hello-world-mein-erstes-oxid-eshop-modul/</link>
		<comments>http://www.udo-telaar.de/hello-world-mein-erstes-oxid-eshop-modul/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 17:07:17 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/?p=331</guid>
		<description><![CDATA[Am Wochenede habe ich mich mal ein wenig mit OXID eShops beschäftigt. Mit OSCommerce, XTCommerce und Magento haben wir in der Agentur schon des öfteren Projekte umgesetzt, mit OXID leider noch nicht. Die Version 4.6 gibt es seit Anfang April ...]]></description>
			<content:encoded><![CDATA[<p>Am Wochenede habe ich mich mal ein wenig mit OXID eShops beschäftigt. Mit OSCommerce, XTCommerce und Magento haben wir in der Agentur schon des öfteren Projekte umgesetzt, mit OXID leider noch nicht. Die Version 4.6 gibt es seit Anfang April in einer Beta3 Version, ich habe mich für den Einstieg aber für die Stable Version 4.5.9 entschieden &#8211; natürlich in der GPLv3 Community Edition.<br />
<span id="more-331"></span><br />
So genug der schönen Worte, lasst uns ein Modul entwickeln. Der Nutzen sei erst mal zweitrangig, es geht darum, die grundsätzliche Funktionsweise der OXID Modulentwicklung zu betrachten und verstehen. OXID hat diese Aufgabenstellung ganz elegant gelöst. Eigene Module kann man durch das überschreiben der vorhandenen Core Klassen so programmieren, dass der Core unberührt bleibt und spätere Updates somit keine Problem machen. Um das erste Modul simple zu halten, beschränke ich mich auf die Manipulation der Ausgabe, genauer möchte ich gerne die Ersparnis bei einem reduzierten Artikel ausgeben. In weiteren Artikeln werde ich dann eventuell anspruchsvollere Aufgaben ergänzen.</p>
<p>Los gehts: Eigene Module gehören in den Ordner /modules/ und werden dort in eigenen Ordnern abgelegt. Da OXID noch keine Namespaces unterstützt, ist es sinnvoll bei eigenen Modulen einen Prefix zu benutzen, damit es keine Konflikte mit anderen Modulen gibt. Dementsprechend benenne ich meinen Ordner &#8220;udoPriceSaving&#8221;. Darein kommt nun die folgende udoPriceSaving.php Datei:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
/**
 * PHP version 5.3.6
 *
 * @author      Udo Telaar &lt;post@udo-telaar.de&gt;
 * @license     GPLv3
 * @copyright   Copyright (c) 2012 Udo Telaar
 * @link        http://www.udo-telaar.de
 * @version     $Id:$
 *
 * 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 3 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, see &lt;http://www.gnu.org/licenses/&gt;.
 */

/**
 * udoPriceSaving
 *
 * @author      Udo Telaar &lt;post@udo-telaar.de&gt;
 */
class udoPriceSaving extends udoPriceSaving_parent
{
    /* @var $this oxArticle */

    public function getPriceSaving()
    {
        if ($this-&gt;getFTPrice() &gt; $this-&gt;getFPrice()) {
            return $this-&gt;getFTPrice() - $this-&gt;getFPrice();
        }
    }
}
</pre>
<p>So, im Grunde sind wir jetzt schon fast fertig, aber wie soll das funktionieren &#8211; &#8220;extends udoPriceSaving_parent&#8221;? So eine Klasse gibt es doch gar nicht!? Und das ist der Clou an der Sache. Im OXID Backend kann man jetzt unter &#8220;Stammdaten -> Grundeinstellungen -> Module&#8221; angeben welche Core Klasse udoPriceSaving erweitern soll. udoPriceSaving_parent zeigt in unserem Fall quasi auf oxArticle<br />
<a href="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_modul_programmieren_admin.png"><img src="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_modul_programmieren_admin.png" alt="" title="oxid_modul_programmieren_admin" width="470" height="267" class="alignnone size-full wp-image-337" /></a></p>
<p>Wenn diese Zeile dort eingetragen wurde, kann die zusätzliche Funktion &#8220;getPriceSaving&#8221; genauso genutzt werden, wie alle von oxArticle geerbten Funktionen. Das machen wir uns dann auch direkt im Produkt Template zu nutze. Dieses liegt unter /out/azure/tpl/page/details/inc/productmain.tpl und wir ergänzen dort die Zeilen 7-11.</p>
<pre class="brush: php; title: ; notranslate">
[{oxhasrights ident=&quot;SHOWARTICLEPRICE&quot;}]
    [{if $oDetailsProduct-&gt;getFTPrice() &gt; $oDetailsProduct-&gt;getFPrice()}]
        &lt;p class=&quot;oldPrice&quot;&gt;
            &lt;strong&gt;[{oxmultilang ident=&quot;DETAILS_REDUCEDFROM&quot;}] &lt;del&gt;[{$oDetailsProduct-&gt;getFTPrice()}] [{$currency-&gt;sign}]&lt;/del&gt;&lt;/strong&gt;
        &lt;/p&gt;
   [{/if}]
   [{if $oDetailsProduct-&gt;getPriceSaving()}]
       &lt;span class=&quot;priceOld&quot;&gt;
           [{ oxmultilang ident=&quot;DETAILS_PRICESAVING&quot; }] [{ $oDetailsProduct-&gt;getPriceSaving()}] [{ $currency-&gt;sign}]
       &lt;/span&gt;
   [{/if}]
[{/oxhasrights}]
</pre>
<p>Das fertige Ergebnis sollte dann wie folgt aussehen. Die linke Seite zeigt einen reduzierten Artikel mit der entsprechenden Berechnung (DETAILS_PRICESAVING muss hier noch übersetzt werden), die rechte einen nicht reduzierten Artikel:<br />
<a href="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_modul_programmieren_product.png"><img src="http://www.udo-telaar.de/wp-content/uploads/2012/04/oxid_modul_programmieren_product-300x129.png" alt="" title="oxid_modul_programmieren_product" width="300" height="129" class="alignnone size-medium wp-image-342" /></a></p>
<p>Fazit:<br />
Anpassungen können bei OXID recht einfach über die modulare Bauweise vorgenommen werden. Jetzt haben wir hier natürlich ein recht einfaches Beispiel genommen. Ob sich die Lage bei komplexeren Problemstellungen oder mehrfach überschriebenen Core Klassen nicht komplizierter darstellt, bleibt noch herauszufinden.</p>
<p>Moderne Programmiertechniken ala Dependency Injection und Aspect-oriented programming wie sie von modernen Frameworks wie <a href="http://www.udo-telaar.de/category/php/flow3/" title="Flow3">Flow3</a> und <a href="http://www.udo-telaar.de/category/php/zend_framework/" title="Zend Framework">Zend Framework 2</a> verwendet werden, findet man bei OXID leider nicht. Auch muss man auf die Features von PHP 5.3 verzichten. Bislang hat aber noch niemand eine Open Source Software veröffentlicht, die dieses alles erfüllt. Alles in allem erhält man aber eine übersichtliche Shopsoftware mit steiler Lernkurve, die es sicherlich verient hat noch weiter unter die Lupe genommen zu werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/hello-world-mein-erstes-oxid-eshop-modul/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interessante Blogposts der letzten Woche</title>
		<link>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-4/</link>
		<comments>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-4/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 08:48:52 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-4/</guid>
		<description><![CDATA[Meine favorisierten Blogposts in der letzten Woche. Zerbrochene Fenster. 1982 haben die US-amerikanischen Sozialforscher James Q. Wilson und George L. Kelling die &#x201E;Broken Window Theory&#x201C; aufgestellt[1]. Diese Theorie handelt von der Verwahrlosung New Yorks zu&#8230; 4 Ways to Use Twitter ...]]></description>
			<content:encoded><![CDATA[<p>Meine favorisierten Blogposts in der letzten Woche.</p>
<ul>
<li><a href='http://www.phphatesme.com/blog/softwaretechnik/zerbrochene-fenster/?utm_source=feedburner'>Zerbrochene Fenster.</a>
<p>1982 haben die US-amerikanischen Sozialforscher James Q. Wilson und George L. Kelling die &#x201E;Broken Window Theory&#x201C; aufgestellt[1]. Diese Theorie handelt von der Verwahrlosung New Yorks zu&hellip;</p>
</li>
<li><a href='http://www.socialmediaexaminer.com/4-ways-to-use-twitter-for-customer-service-and-support/'>4 Ways to Use Twitter for Customer Service and Support</a>
<p>Do you have customers?Are they on Twitter?Are you using this amazing tool to support your customers?Keep reading to discover four ways to provide amazing customer service with Twitter.Why Twitter for&hellip;</p>
</li>
<li><a href='http://www.socialmediaexaminer.com/social-media-marketing-industry-report-2012/'>2012 Social Media Marketing Industry Report</a>
<p>Are you wondering how your peers are using social media?Wondering if you should focus on Google+ or Pinterest?In our fourth annual social media study, more than 3800 marketers reveal where they focus&hellip;</p>
</li>
<li><a href='http://www.socialnetworkstrategien.de/2012/04/werbung-auf-facebook-fur-externe-seiten/?utm_source=feedburner'>(no title provided)</a>
<p>Werbung auf Facebook f&#252;r externe Seiten zielgenau ausrichten Immer mehr Unternehmen machen Gebrauch von der M&#246;glichkeit auf Facebook Werbung zu schalten. Facebook hat sich dadurch zu einem&hellip;</p>
</li>
</ul>
<p>This post was generated with <a href='http://kanedo.net/projekte/readability-favorites/?pk_campaign=Plugin&amp;pk_kwd=Readability%20Favorites'>Readability Favorites</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viren Malware und anderes Übel für den Mac</title>
		<link>http://www.udo-telaar.de/viren-malware-und-anderes-ubel-fur-den-mac/</link>
		<comments>http://www.udo-telaar.de/viren-malware-und-anderes-ubel-fur-den-mac/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 16:26:15 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[Me and my iMac]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/?p=322</guid>
		<description><![CDATA[Da hab ich mir gerade einen iMac gekauft, um in den Genuss seiner viel umworbenen Vorzüge zu kommen, da fällt auch schon wieder einer dieser Vorzüge, die Virenfreiheit, raus. Ende Februar tauchten bei heise.de schon die ersten Berichte über eine ...]]></description>
			<content:encoded><![CDATA[<p>Da hab ich mir gerade einen iMac gekauft, um in den Genuss seiner viel umworbenen Vorzüge zu kommen, da fällt auch schon wieder einer dieser Vorzüge, die Virenfreiheit, raus. Ende Februar tauchten bei <a href=" http://www.heise.de/mac-and-i/meldung/Flashback-Malware-setzt-auf-neue-Infektionswege-1442752.html" title="heise.de">heise.de</a> schon die ersten Berichte über eine neue Malware namens &#8220;Flashback&#8221; auf. Diese schleicht sich über zwei ältere Java-Sicherheitslücken auf den iMac und soll Benutzernamen plus Passwörter ausspähen und an den Angreifer weiterleiten.<br />
<span id="more-322"></span><br />
Apple hat zwar bereits ein <a href="http://support.apple.com/kb/HT5228?viewlocale=en_US&#038;locale=en_US" title="Flashback Sicherheitsupdate für Java">Sicherheitsupdate für Java</a> veröffentlicht, aber eine Möglichkeit den Schädling zu beseitigen konnte ich nicht finden. Unterstützung kommt aus der Open Source Community in Form eines Tools, mit dem man überprüfen kann, ob der eigene Rechner infiziert ist. Den <a href="https://github.com/jils/FlashbackChecker/wiki" title="FlashBackChecker">FlashBackChecker</a> gibt es kostenlos bei github zum Download.</p>
<p>Mein neuer silberner Freund ist bislang verschont geblieben. Betroffen sind laut unterschiedlichen Quellen überwiegend Macs mit älteren, nicht aktualisierten Versionen von Snow Leopard aus dem nordamerikanischen Raum.</p>
<p>Da kann ich nur hoffen, dass derartige Schädlinge jetzt nicht Gefallen daran finden, mein <del datetime="2012-04-12T09:26:54+00:00">virenfreies</del> Betriebssystem aus Cupertino anzugreifen. Bislang war es so, dass iOS aufgrund der geringen Verbreitung kein interessantes Ziel war. Auch wenn viele lieber glauben, dass das System einfach nicht angreifbar sei <img src='http://www.udo-telaar.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/viren-malware-und-anderes-ubel-fur-den-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interessante Blogposts der letzten Woche</title>
		<link>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-3/</link>
		<comments>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-3/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 08:52:23 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-3/</guid>
		<description><![CDATA[Meine favorisierten Blogposts in der letzten Woche. Pinterest für Unternehmen Auf XING teilen Die neue Social Media Plattform Pinterest ist in aller Munde! Seit Monaten ist ein stetiger Anstieg der Userzahlen zu verzeich UPcloads Webcam-Körpervermessung startet offiziell » netzwertig.com UPcload ...]]></description>
			<content:encoded><![CDATA[<p>Meine favorisierten Blogposts in der letzten Woche.</p>
<ul>
<li><a href='http://www.1-2-social.de/blog/pinterest-fuer-unternehmen/'>Pinterest für Unternehmen</a>
<p>Auf XING teilen Die neue Social Media Plattform Pinterest ist in aller Munde! Seit Monaten ist ein stetiger Anstieg der Userzahlen zu verzeich</p>
</li>
<li><a href='http://netzwertig.com/2012/04/03/revolution-des-e-commerce-upcload-startet-offiziell/'>UPcloads Webcam-Körpervermessung startet offiziell » netzwertig.com</a>
<p>UPcload hat eine Technologie zur K&#246;rpervermessung per Webcam entwickelt. Sie k&#246;nnte den E-Commerce revolutionieren. Am heutigen Dienstag &#246;ffnet das Berliner Startup seine&hellip;</p>
</li>
<li><a href='http://www.futurebiz.de/artikel/das-richtige-titelbild-fur-die-facebook-chronik-wahlen-echte-fotos-wirken-besser/?utm_source=feedburner'>Facebook Chronik Titelbild</a>
<p>Worauf blicken Nutzer als erstes bei einer Facebook Chronik? Das Titelbild. Facebook hat bei der Auswahl des Titelbildes ziemlich genaue Vorstellungen und hat deswegen verschiedene Richtlinien&hellip;</p>
</li>
<li><a href='http://www.managingcommunities.com/2012/03/29/creating-video-tutorials/'>Create Video Tutorials to Explain How to Use Features of Your Community</a>
<p>photo credit: AlaskaLoneWolf We all get those questions about how to do something within our community. How do I post in this section? How do I change my avatar? How do I upload an image? Some would&hellip;</p>
</li>
<li><a href='http://www.futurebiz.de/artikel/leads-social-b2b-marketing/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+DoingBussinessOnFacebook+%28doing+bussiness+on+facebook%29'>Social B2B Marketing – Lead-Generierung durch soziale Netzwerke [Infografik]</a>
<p>Nach wie vor gibt es viele Stimmen, die besagen, dass soziale Netzwerke nicht f&#252;r den B2B-Bereich geeignet sind. Richtig ist, dass B2B Unternehmen Social Media Marketing anders betreiben&hellip;</p>
</li>
</ul>
<p>This post was generated with <a href='http://kanedo.net/projekte/readability-favorites/?pk_campaign=Plugin&amp;pk_kwd=Readability%20Favorites'>Readability Favorites</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interessante Blogposts der letzten Woche</title>
		<link>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-2/</link>
		<comments>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-2/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 08:53:11 +0000</pubDate>
		<dc:creator>udo</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-2/</guid>
		<description><![CDATA[Meine favorisierten Blogposts in der letzten Woche. In Sachen Kommunikation 28. Mrz 2012 von Annette Schwindt &#124; Wie versprochen habe ich meine Beitr&#228;ge zum Thema Chronik (Timeline) f&#252;r offizielle Facebook-Seiten jetzt in einem kostenlosen pdf zusammengefasst&#8230; This post was generated ...]]></description>
			<content:encoded><![CDATA[<p>Meine favorisierten Blogposts in der letzten Woche.</p>
<ul>
<li><a href='http://blog.schwindt-pr.com/2012/03/28/chronik-facebook-seiten-pdf/?utm_source=feedburner'>In Sachen Kommunikation</a>
<p>28. Mrz 2012 von Annette Schwindt | Wie versprochen habe ich meine Beitr&#228;ge zum Thema Chronik (Timeline) f&#252;r offizielle Facebook-Seiten jetzt in einem kostenlosen pdf zusammengefasst&hellip;</p>
</li>
</ul>
<p>This post was generated with <a href='http://kanedo.net/projekte/readability-favorites/?pk_campaign=Plugin&amp;pk_kwd=Readability%20Favorites'>Readability Favorites</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.udo-telaar.de/interessante-blogposts-der-letzten-woche-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

